ref: 665f0c8e3ee2b7e325a2142c284d363ff7c5aac3
parent: 17566b4dd30979777ce7f25429084818c0f924f4
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Dec 9 19:30:07 EST 2014
bootrc: handle multiple fs and auth addresses in netboot, always set auth= in /net/ndb
--- a/sys/src/9/boot/bootrc
+++ b/sys/src/9/boot/bootrc
@@ -4,6 +4,7 @@
bind /root /mnt/broot
unmount /root
+bind -q '#d' /fd
bind -q '#p' /proc
for(i in S f k æ t b m)
bind -qa '#'^$i /dev
--- a/sys/src/9/boot/net.rc
+++ b/sys/src/9/boot/net.rc
@@ -17,24 +17,33 @@
must ip/ipconfig -p $*
if(~ $#fs 0)
- fs=`{awk -F'=' '/fs=/{print $2; exit}' /net/ndb}
+ fs=`{awk -F'=' '/^[ ]*fs=/{print $2}' /net/ndb}
if(~ $#auth 0)
- auth=`{awk -F'=' '/auth=/{print $2; exit}' /net/ndb}
+ auth=`{awk -F'=' '/^[ ]*auth=/{print $2}' /net/ndb}
if(~ $#fs 0)
- ask fs ' ip is? ' $auth
- if(~ $#auth 0){
- ask auth ' ip is? ' $fs
- if(~ $#auth 1)
- echo ' auth='^$auth >>/net/ndb
+ ask fs ' ip is? ' $auth(1)
+ if(~ $#auth 0)
+ ask auth ' ip is? ' $fs(1)
+
+ # set bootstrap authservers for factotum
+ if(! ~ $#auth 0){
+ grep -v '^[ ]*auth=' /net/ndb >/env/x
+ cat /env/x <{echo ' auth='^$auth^'
+'} >/net/ndb
+ rm /env/x
}
}
fn connecttcp{
- srv -q tcp!$fs!564 boot
+ while(! ~ $#fs 0 && ! srv -q tcp!$fs(1)^!564 boot)
+ fs=$fs(2-);
+ fs=$fs(1)
}
fn connectil{
- srv -q il!$fs!17008 boot
+ while(! ~ $#fs 0 && ! srv -q il!$fs(1)^!17008 boot)
+ fs=$fs(2-);
+ fs=$fs(1)
}
mtcp=(confignet connecttcp)