# parallelism for mk
NPROC = `{wc -l </dev/sysstat}
-if (~ $#sysname 0 || ~ $sysname '') {
- sysname = cirno # default
+if (~ $#sysname 0 || ~ $sysname ''){
+ sysname=cirno # default
echo -n $sysname >/dev/sysname
}
prompt=($sysname^'# ' ' ')
if(test -e /cfg/$sysname/cpurc)
. /cfg/$sysname/cpurc
-# start up internet if we don't already have an address
-if(! grep u /net/ipselftab | grep -sv 127.0.0.1)
- ip/ipconfig
+# automatic ip address setup
+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 || ip/ipconfig
+ }
+ rm -f /env/ether
+}
-# if we're not a server, start a dns resolver
if(! test -e /srv/dns)
ndb/dns -r
-# If you are on an auth server, start these before listening:
-#
-auth/keyfs -wp -m /mnt/keys /adm/keys >/dev/null >[2=1]
-auth/cron >>/sys/log/cron >[2=1] &
-#
-# also rename some files:
-#
-# if(! test -e /rc/bin/service.auth/tcp567){
-# mv /rc/bin/service.auth/authsrv.il566 /rc/bin/service.auth/il566
-# mv /rc/bin/service.auth/authsrv.tcp567 /rc/bin/service.auth/tcp567
-# mv /rc/bin/service/il566 /rc/bin/service/_il566
-# mv /rc/bin/service/tcp567 /rc/bin/service/_tcp567
-# }
-
-# start listeners
-aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
+if(! ps|grep -s timesync){
+ if(~ $#ntp 0)
+ eval `{ndb/ipquery sys $sysname ntp}
+ if(~ $#ntp 0)
+ ntp=pool.ntp.org
+ aux/timesync -n $ntp
+ sleep 2
+}
-if(! ps|grep -s timesync) {
- aux/timesync -n pool.ntp.org
- if (test -e '#r/rtc') @ {
- sleep 10 # let timesync correct the time
- awk '{print $1}' /dev/time >'#r/rtc' # fix hw clock
- } &
+if(~ $#auth 0)
+ eval `{ndb/ipquery sys $sysname auth}
+switch($auth){
+case `{ echo $sysname; ndb/query sys $sysname dom
+ 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
}
# cpu-specific late startup
# other /proc files, such as note, so let listen be killed.
dontkill '^(ipconfig|factotum|mntgen|venti|kfs|cwfs.*|cs|dns|reboot)$'
-# echo `{date} $sysname >>/sys/log/boot
exit ''
#!/bin/rc
-# desc: set system password for auth, invalidate nvram
+# desc: invalidate nvram
# prereq: systype copydist
-nvram=`{echo `{basename -d $fs}^/nvram}
+nvram=(/dev/sd*/nvram)
+nvram=nvram(1)
switch($1) {
-case checkdone
- if(! ~ $syst cpu || ! grep trust $nvram){
- authsetup=ready
- export authsetup
- }
case go
echo
- echo 'Setup keyfs and provide a password for the machine'
+ echo 'Invalidate nvram'
echo
- auth/keyfs
-
- if(! grep trust $nvram)
- echo 'trust, but verify' >$nvram >[2=1]
+ echo 'trust, but verify' >$nvram
echo
echo 'You will be asked to enter an authid, authdom, secstore key,'
echo 'and password upon next boot. The authid is the hostowner.'
echo 'The authdom is the domain from your network configuration.'
echo 'The secstore key and password should be a secret password'
- echo 'of eight characters or greater in length. Remember the'
- echo 'password, you will need to use it again when creating the'
- echo 'bootes user on the auth server.'
+ echo 'of eight characters or greater in length. On an auth server,'
+ echo 'the password will be used to encrypt the user database'
+ echo '/adm/keys'
echo
authsetup=done
export authsetup
+case checkdone
+ if(~ $syst cpu && test -w $nvram && ! grep -s trust $nvram){
+ authsetup=ready
+ export authsetup
+ }
}
{
echo 'bootfile='^$bootfile
echo 'bootargs=local!'^$fs
- echo 'sysname=cirno'
echo 'mouseport='^$mouseport
echo 'monitor='^$monitor
echo 'vgasize='^$vgasize
# desc: choose and mount file system partition
# prereq: systype
+service=cwfs
+
switch($1){
case go
echo
log Starting $fstype file server for $fs
unmount /n/newfs >[2]/dev/null
- echo halt >>/srv/cwfs.cmd >[2]/dev/null
- rm -f /srv/cwfs /srv/cwfs.cmd
+ echo halt >>/srv/$service.cmd >[2]/dev/null
+ rm -f /srv/$service /srv/$service.cmd
if(~ $ream yes){
if(! test -f /tmp/fsconfig){
{
- echo service cwfs
+ echo service $service
echo config $fs
if(! ~ $syst cpu){
}
if not {
echo 'Entering manual configuration mode. when done, type end'
- if(! $fstype -n cwfs -f $fs -c){
+ if(! $fstype -n $service -f $fs -c){
mountfs=ready
export mountfs
exit oops
log Configuering $fstype file server for $fs
{
+ echo noattach
echo allow
echo users default
echo cfs main
echo create /adm/users adm adm 664
echo create /dist sys sys 775 d
echo create /usr sys sys 775 d
- echo newuser adm +bootes
- echo newuser sys +bootes
- echo newuser upas +bootes
echo newuser $user
echo newuser adm +$user
echo newuser sys +$user
echo cfs other
echo create /dist sys sys 775 d
echo create /usr sys sys 775 d
- echo create /usr/bootes bootes bootes 775 d
- echo create /usr/bootes/tmp bootes bootes 750 d
echo create /usr/$user $user $user 775 d
echo create /usr/$user/tmp $user $user 750 d
echo cfs main
}
- } >>/srv/cwfs.cmd
- sleep 5
+ echo noattach
+ sleep 2
+ } >>/srv/$service.cmd
log Mounting $fstype file server for $fs
- if(! logprog mount -c /srv/cwfs /n/newfs){
- mountfs=ready
- export mountfs
- exit
- }
+ while(! logprog mount -c /srv/$service /n/newfs)
+ sleep 2
if(! ~ $fsother ''){
log Mounting $fstype file server for $fsother
- if(logprog mount -c /srv/cwfs /n/other other)
+ if(logprog mount -c /srv/$service /n/other other)
bind -qc /n/other/dist /n/newfs/dist
}
case checkready checkdone
if(! ~ $fstype '' && ~ $#fs 1 && test -f $fs){
- if(test -f /srv/cwfs && test -d /n/newfs/dist){
+ if(test -f /srv/$service && test -d /n/newfs/dist){
mountfs=done
export mountfs
exit
if(test -e /cfg/$sysname/termrc)
. /cfg/$sysname/termrc
-# start IP on the LAN, if not already configured. diskless terminals
-# are already configured by now. It's commented out to avoid a long timeout
-# on startup waiting for DHCP.
-#
-# If your site provides DHCP service,
-#
-#if(! test -e /net/ipifc/0/ctl)
-# ip/ipconfig
-#
-# Otherwise, see /cfg/$sysname/termrc (/cfg/example/termrc is an example).
+# automatic ip address setup
+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 || ip/ipconfig
+ }
+ rm -f /env/ether
+}
-# start dns if we have an internet
-if(test -e /net/ipifc/0/ctl && ! test -e /srv/dns)
+if(! test -e /srv/dns)
ndb/dns -r
if(! ~ $terminal *vx32*){
}
rm -f '/env/fn#ask'
-if (test -f /dev/apm)
+if(test -f /dev/apm)
aux/apm
dontkill '^(ipconfig|factotum|mntgen|kfs|cwfs.*|cs|dns|listen|reboot)$'
uid=upas
gid=upas
box d775
- bootes d775 bootes bootes
- mbox a662 bootes bootes /sys/lib/dist/empty
glenda d775 glenda glenda
mbox a662 glenda glenda /sys/lib/dist/empty
faxoutqueue d775
+
log d775
auth a662 sys sys /sys/lib/dist/empty
+ boot a662 sys sys /sys/lib/dist/empty
cpu a662 sys sys /sys/lib/dist/empty
cron a662 sys sys /sys/lib/dist/empty
cs a662 sys sys /sys/lib/dist/empty
httpd a662 sys sys /sys/lib/dist/empty
imap4d a662 sys sys /sys/lib/dist/empty
ipboot a662 sys sys /sys/lib/dist/empty
+ ipboot a662 sys sys /sys/lib/dist/empty
listen a662 sys sys /sys/lib/dist/empty
mail a662 sys sys /sys/lib/dist/empty
+ runq a662 sys sys /sys/lib/dist/empty
smtp a662 sys sys /sys/lib/dist/empty
smtp.fail a662 sys sys /sys/lib/dist/empty
smtpd a662 sys sys /sys/lib/dist/empty
smtpd.mx a662 sys sys /sys/lib/dist/empty
- runq a662 sys sys /sys/lib/dist/empty
secstore a662 sys sys /sys/lib/dist/empty
timesync a662 sys sys /sys/lib/dist/empty
src d775
skip=\.[ao]?[12578vqki]?$
+
-
+
tmp d555
+
usr d775
- bootes d775 bootes bootes
- uid=bootes
- gid=bootes
- bin d775
- 386 d775
- +
- rc d775
- +
- lib d775
- *
- tmp d775
glenda d775 glenda glenda
uid=glenda
gid=glenda