ecebba779f
theres a bootstrap problem: when /bin/init is run, it processes /lib/namespace where we might want to mount or bind resources to /n or /mnt. but mntgen was run later in cpurc/termrc so these mounts would be ignored. we already have mntgen in bootfs, so we can provide these mountpoints early. i keep the termrc/cpurc mntgens where they are, but ignore the error prints. this way old kernels will continue to work.
98 lines
2.3 KiB
Bash
Executable file
98 lines
2.3 KiB
Bash
Executable file
#!/bin/rc
|
|
# this file is run if service=cpu
|
|
|
|
date > /env/boottime
|
|
|
|
for(i in m i P S t u '$')
|
|
bind -a '#'^$i /dev >/dev/null >[2=1]
|
|
|
|
mount -qb /srv/cons /dev
|
|
|
|
# mount points (if not done by bootrc already)
|
|
>[2]/dev/null {
|
|
mntgen -s slashn /n && chmod 666 /srv/slashn
|
|
mntgen -s slashmnt /mnt && chmod 666 /srv/slashmnt
|
|
mntgen -s mntexport /mnt/exportfs && chmod 666 /srv/mntexport}
|
|
|
|
# move factotum from /mnt to /mnt/factotum
|
|
mount /srv/factotum /mnt/temp
|
|
unmount /srv/factotum /mnt
|
|
bind /mnt/temp/factotum /mnt/factotum
|
|
unmount /mnt/temp
|
|
|
|
# usb listener
|
|
nusbrc
|
|
|
|
# name translation, cs sets /dev/sysname
|
|
ndb/cs
|
|
sysname=`{cat /dev/sysname}
|
|
|
|
# site-specific startup
|
|
if(test -e /rc/bin/cpurc.local)
|
|
. /rc/bin/cpurc.local
|
|
|
|
if (~ $#sysname 0 || ~ $sysname ''){
|
|
sysname=cirno # default
|
|
echo -n $sysname >/dev/sysname
|
|
}
|
|
prompt=($sysname^'# ' ' ')
|
|
|
|
# parallelism for mk
|
|
NPROC=`{wc -l </dev/sysstat}
|
|
|
|
# cpu-specific startup
|
|
if(test -e /cfg/$sysname/cpurc)
|
|
. /cfg/$sysname/cpurc
|
|
|
|
# automatic ip address setup
|
|
if(test -r /net/ipselftab){
|
|
if(! grep u /net/ipselftab | grep -sv 127.0.0.1){
|
|
ether=`{ndb/query sys $sysname ether}
|
|
if(~ $#ether 1){
|
|
# try /lib/ndb first, then do dhcp
|
|
ip/ipconfig -N >[2]/dev/null || ip/ipconfig -h $sysname
|
|
}
|
|
rm -f /env/ether
|
|
}
|
|
}
|
|
|
|
if(! test -e /net/dns)
|
|
ndb/dns -r
|
|
|
|
if(! ps|grep -s timesync){
|
|
if(~ $#ntp 0)
|
|
. <{ndb/ipquery sys $sysname ntp | sed 's, +,\n,g'}
|
|
if(~ $#ntp 0)
|
|
ntp=pool.ntp.org
|
|
aux/timesync -n $ntp
|
|
sleep 2
|
|
}
|
|
|
|
if(~ $#auth 0){
|
|
auth=`{ndb/query sys $sysname auth}
|
|
. <{ndb/ipquery sys $sysname auth | sed 's, +,\n,g'}
|
|
}
|
|
switch($auth){
|
|
case `{ echo $sysname; ndb/query sys $sysname dom
|
|
if(test -r /net/ipselftab){
|
|
for(i in `{awk '/u\ *$/{print $1}' /net/ipselftab}){
|
|
echo $i; ndb/ipquery ip $i dom; ndb/ipquery ip $i sys
|
|
} | sed 's,[^ ]+=,,g'}}
|
|
|
|
# cpu+auth server
|
|
auth/keyfs -wp -m /mnt/keys /adm/keys
|
|
aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
|
|
case *
|
|
# cpu server
|
|
aux/listen -q -d /rc/bin/service tcp
|
|
}
|
|
|
|
if(test -f /dev/apm)
|
|
aux/apm
|
|
|
|
if(test -e /cfg/$sysname/cpustart)
|
|
. /cfg/$sysname/cpustart
|
|
|
|
# mode of /proc/*/ctl is inherited across rfork, and sets modes on
|
|
# other /proc files, such as note, so let listen be killed.
|
|
dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|reboot|usbd|kb|disk|ether|wpa)$'
|