#!/bin/ash if [ "$#" -eq "1" ] then MACHINE=$1 fi #bind -a '#I' /net #bind -a '#l0' /net #cat /net/ipifc/clone ## bind the ether0 to it #echo 'bind ether /net/ether0' > /net/ipifc/0/ctl #exit # ifconfig it export cputype=amd64 export objtype=$cputype export service=cpu export authid=bootes export rootdir=/root export rootspec='' export rootsrv=boot NIC="0" #authentication='nvram=/boot/adm/nvram auth/factotum -sfactotum -S' # -a ... # test xyzip=(0 0 0 104.9.33) # test fsaddr='tcp!135.$xyzip(4)^!564' # (me network server server-addr # wrong addresses. # qemu is the default me=10.0.2.15 mask=255.255.255.0 # brho: i don't know what exactly 'remote' is supposed to be, but that is # the third argument processed by adding to an ipifc. if we pass nothing, # it'll build 'remote' by masking me & mask. remote=10.0.2.0 route=10.0.2.2 if [ "x$MACHINE" = "xc89" ] then # c89's config. use c96 for eth0 (.196). if you want, we can also use # c97 (.197): # $ cat /9/net/ipifc/clone (get e.g. 2) # $ echo "add 169.229.49.197 255.255.255.0" > /9/net/ipifc/2/ctl me=169.229.49.196 mask=255.255.255.0 remote=169.229.49.0 route=169.229.49.1 # the i350 NIC that is plugged in is the first NIC NIC="0" fi if [ "x$MACHINE" = "xhossin" ] then # brho's soda hall desktop me=128.32.37.46 mask=255.255.255.0 remote=128.32.37.0 route=128.32.37.1 fi # # Post the read-only filesystem in #s/$beetroot # and mount it on /boot so the commands in /boot/$cputype/bin # are available to create the namespace (namespaces like to # mount #s/boot on / and that should not be the read-only # filesystem). # Must set hostowner to be that of the owner of the nvram file # before paqfs starts otherwise factotum will not be able to # open it. # #/boot/echo -n sys > '#c/hostowner' #/boot/paqfs -p -S $beetroot -m /boot -q /boot/$beetroot #cd /boot/$cputype/bin bind -b '#c' /dev #bind '#d' /fd #bind -c '#e' /env bind -b '#p' /proc #bind -b -c '#s' /srv bind -b '#s' /srv # # Configure the networks. # bind -a '#I' /net bind -a \#l$NIC /net # note: dhcp is possible, just not done yet. #get an instance of a network stack i=`cat /net/ipifc/clone` # bind the ether0 to it echo "bind ether /net/ether$NIC " > /net/ipifc/$i/ctl # ifconfig it echo "add $me $mask $remote" > /net/ipifc/$i/ctl echo "add 0 0 $route" > /net/iproute echo I am $me, default route $route i=`cat /net/ipifc/clone` echo "bind loopback /dev/null " > /net/ipifc/$i/ctl echo "add 127.0.0.1 255.0.0.0 127.0.0.0 " > /net/ipifc/$i/ctl cs& if [ ! -e "#s/cs" ] then echo "cs hasn't created #s/cs yet, sleeping until it does..." until [ -e "#s/cs" ] do usleep 1000 done fi mount -a \#s/cs /net # this is noisy, so it is off by default. #echo debug > /net/cs bind -a \#K /prof/ echo "ifconfig complete"