]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/cpurc
38d6745fbe99e3a28bca58eed3b0d70d62f5da5c
[plan9front.git] / rc / bin / cpurc
1 #!/bin/rc
2 # this file is run if service=cpu
3
4 date > /env/boottime
5
6 for(i in m i P S t u '$')
7         bind -a '#'^$i /dev >/dev/null >[2=1]
8
9 mount -qb /srv/cons /dev
10
11 # mount points (if not done by bootrc already)
12 >[2]/dev/null {
13 mntgen -s slashn /n && chmod 666 /srv/slashn
14 mntgen -s slashmnt /mnt && chmod 666 /srv/slashmnt
15 mntgen -s mntexport /mnt/exportfs && chmod 666 /srv/mntexport}
16
17 # move factotum from /mnt to /mnt/factotum
18 mount /srv/factotum /mnt/temp
19 unmount /srv/factotum /mnt
20 bind /mnt/temp/factotum /mnt/factotum
21 unmount /mnt/temp
22
23 # usb listener
24 nusbrc
25
26 # name translation, cs sets /dev/sysname
27 ndb/cs
28 sysname=`{cat /dev/sysname}
29
30 # site-specific startup
31 if(test -e /rc/bin/cpurc.local)
32         . /rc/bin/cpurc.local
33
34 if (~ $#sysname 0 || ~ $sysname ''){
35         sysname=cirno                   # default
36         echo -n $sysname >/dev/sysname
37 }
38 prompt=($sysname^'# ' ' ')
39
40 # parallelism for mk
41 NPROC=`{wc -l </dev/sysstat}
42
43 # cpu-specific startup
44 if(test -e /cfg/$sysname/cpurc)
45         . /cfg/$sysname/cpurc
46
47 # automatic ip address setup
48 if(test -r /net/ipselftab){
49         if(! grep u /net/ipselftab | grep -sv 127.0.0.1){
50                 ether=`{ndb/query sys $sysname ether}
51                 if(~ $#ether 1){
52                         # try /lib/ndb first, then do dhcp
53                         ip/ipconfig -N >[2]/dev/null || ip/ipconfig -h $sysname
54                 }
55                 rm -f /env/ether
56         }
57 }
58
59 if(! test -e /net/dns)
60         ndb/dns -r
61
62 if(! ps|grep -s timesync){
63         if(~ $#ntp 0)
64                 . <{ndb/ipquery sys $sysname ntp | sed 's, +,\n,g'}
65         if(~ $#ntp 0)
66                 ntp=pool.ntp.org
67         aux/timesync -n $ntp
68         sleep 2
69 }
70
71 if(~ $#auth 0){
72         auth=`{ndb/query sys $sysname auth}
73         . <{ndb/ipquery sys $sysname auth | sed 's, +,\n,g'}
74 }
75 switch($auth){
76 case `{ echo $sysname; ndb/query sys $sysname dom
77         if(test -r /net/ipselftab){
78         for(i in `{awk '/u\ *$/{print $1}' /net/ipselftab}){
79                 echo $i; ndb/ipquery ip $i dom; ndb/ipquery ip $i sys
80         } | sed 's,[^ ]+=,,g'}}
81
82         # cpu+auth server
83         auth/keyfs -wp -m /mnt/keys /adm/keys
84         aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
85 case *
86         # cpu server
87         aux/listen -q -d /rc/bin/service tcp
88 }
89
90 if(test -f /dev/apm)
91         aux/apm
92
93 if(test -e /cfg/$sysname/cpustart)
94         . /cfg/$sysname/cpustart
95
96 # mode of /proc/*/ctl is inherited across rfork, and sets modes on
97 # other /proc files, such as note, so let listen be killed.
98 dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|reboot|usbd|kb|disk|ether|wpa)$'