Latest and greatest ifconfig/root scripts
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jan 2014 21:19:23 +0000 (13:19 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jan 2014 21:21:12 +0000 (13:21 -0800)
Don't want to lose the config settings and whatnot.

kern/kfs/ifconfig [new file with mode: 0755]
kern/kfs/root [new file with mode: 0755]

diff --git a/kern/kfs/ifconfig b/kern/kfs/ifconfig
new file mode 100755 (executable)
index 0000000..0bee91a
--- /dev/null
@@ -0,0 +1,98 @@
+#!/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
+
+#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
+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 '#l0' /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/ether0 " > /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
diff --git a/kern/kfs/root b/kern/kfs/root
new file mode 100755 (executable)
index 0000000..aed7739
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/ash
+#
+# root [[REMOTE_NAME] [SRVNAME]]
+#
+# remote name, selects the UFS server from the else-if below
+# srv name: the name of the chan in #s
+#
+# when run with no args, this will also ifconfig and mount ufs for qemu
+
+REMOTE=qemu
+if [ "$#" -ge "1" ]
+then
+       REMOTE=$1
+fi
+
+SRVNAME=$REMOTE-ufs
+if [ "$#" -ge "2" ]
+then
+       SRVNAME=$2
+fi
+
+if [ "x$REMOTE" = "xc75" ]
+then
+       srv 'tcp!169.229.49.175!1025' $SRVNAME
+elif [ "x$REMOTE" = "xs141" ]
+then
+       srv 'tcp!169.229.48.51!1025' $SRVNAME
+elif [ "x$REMOTE" = "xqemu" ]
+then
+       # so this works like usual for the qemu users
+       ash ifconfig
+       srv 'tcp!10.0.2.2!1025' $SRVNAME
+else
+       echo "Unknown remote: $REMOTE!"
+       exit
+fi
+
+mount /srv/$SRVNAME /mnt
+ls /mnt