2 # this file is run if service=cpu
5 NPROC=`{wc -l </dev/sysstat}
7 # bind all likely devices
9 bind -a '#'^$i /dev >/dev/null >[2=1]
12 mount -qb /srv/cons /dev
14 # mount points (if not done by bootrc already)
16 mntgen -s slashn /n && chmod 666 /srv/slashn
17 mntgen -s slashmnt /mnt && chmod 666 /srv/slashmnt
18 mntgen -s mntexport /mnt/exportfs && chmod 666 /srv/mntexport}
20 # move factotum from /mnt to /mnt/factotum
21 mount /srv/factotum /mnt/temp
22 unmount /srv/factotum /mnt
23 bind /mnt/temp/factotum /mnt/factotum
29 # site-specific startup
30 if(test -e /rc/bin/cpurc.local)
33 # cs sets sysname (cpurc.local may already have started it so check)
34 if(! test -e /srv/cs && ! test -e /net/cs)
36 sysname=`{cat /dev/sysname}
37 if(~ $#sysname 0 || ~ $sysname ''){
38 sysname=cirno # default
39 echo -n $sysname >/dev/sysname
41 prompt=($sysname^'# ' ' ')
43 # set up any partitions
46 # start up local swapping
47 disk=`{ls /dev/sd*/swap >[2]/dev/null}
49 swap $disk(1) >/dev/null >[2=1]
52 # cpu-specific startup
53 if(test -e /cfg/$sysname/cpurc)
56 # automatic ip address setup
57 if(test -r /net/ipselftab){
58 if(! grep u /net/ipselftab | grep -sv '^(127.0.0.1|::1)'){
59 addrs=`{ndb/query -a sys $sysname ether}
61 for(ether in /net/ether*){
62 addr=`{cat $ether/addr >[2]/dev/null}
65 # try /lib/ndb first, then do dhcp/slaac
66 ip/ipconfig -6 ether $ether
67 ip/ipconfig -N ether $ether >[2]/dev/null || @{
68 test -e /env/nora6 || ip/ipconfig ether $ether ra6 recvra 1 &
69 ip/ipconfig -h $sysname ether $ether &
75 rm -f /env/ether /env/addrs /env/addr
79 if(! test -e /net/dns)
82 if(! ps|grep -s timesync){
84 . <{ndb/ipquery sys $sysname ntp | sed 's, +,\n,g'}
91 if(test -d /cfg/$sysname/service)
92 serviced=/cfg/$sysname/service
93 if not if(test -d /cfg/default/service)
94 serviced=/cfg/default/service
96 serviced=/rc/bin/service
98 auth=`{ndb/ipquery sys $sysname auth | sed 's,auth=,,g'}
100 for(a in `{ndb/ipquery sys $sysname ip sys dom | sed 's,(ip|sys|dom)=,,g'}){
107 auth/keyfs -wp -m /mnt/keys /adm/keys
108 aux/listen -q -t /rc/bin/service.auth -d $serviced tcp
112 aux/listen -q -d $serviced tcp
118 if(test -e /cfg/$sysname/cpustart)
119 . /cfg/$sysname/cpustart
121 # mode of /proc/*/ctl is inherited across rfork, and sets modes on
122 # other /proc files, such as note, so let listen be killed.
123 dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|reboot|usbd|kb|disk|ether|wpa)$'