git: 9front

Download patch

ref: b96548b83e63c971d686a5d92e999529b84f4913
parent: 9c8b80961dbab8aa07f9998c6f8e7711ceb85096
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Thu Jun 9 00:56:16 EDT 2011

remove bootes, fix inst/authsetup, use ndb for ipconfig before trying dhcp

--- a/rc/bin/cpurc
+++ b/rc/bin/cpurc
@@ -19,8 +19,8 @@
 # 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^'# ' '	')
@@ -29,37 +29,41 @@
 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
-# }
+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
+}
 
-# start listeners
-aux/listen -q -t /rc/bin/service.auth -d /rc/bin/service tcp
-
-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
@@ -70,5 +74,4 @@
 # 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 ''
--- a/rc/bin/inst/authsetup
+++ b/rc/bin/inst/authsetup
@@ -1,36 +1,34 @@
 #!/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
+	echo 'trust, but verify' >$nvram
 
-	if(! grep trust $nvram)
-		echo 'trust, but verify' >$nvram >[2=1]
-
 	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
+	}
 }
--- a/rc/bin/inst/bootsetup
+++ b/rc/bin/inst/bootsetup
@@ -25,7 +25,6 @@
 		{
 			echo 'bootfile='^$bootfile
 			echo 'bootargs=local!'^$fs
-			echo 'sysname=cirno'
 			echo 'mouseport='^$mouseport
 			echo 'monitor='^$monitor
 			echo 'vgasize='^$vgasize
--- a/rc/bin/inst/mountcwfs
+++ b/rc/bin/inst/mountcwfs
@@ -3,6 +3,8 @@
 # desc: choose and mount file system partition
 # prereq: systype
 
+service=cwfs
+
 switch($1){
 case go
 	echo
@@ -53,13 +55,13 @@
 
 	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){
@@ -86,7 +88,7 @@
 	}
 	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
@@ -95,6 +97,7 @@
 
 	log Configuering $fstype file server for $fs
 	{
+		echo noattach
 		echo allow
 		echo users default
 		echo cfs main
@@ -102,9 +105,6 @@
 		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
@@ -113,30 +113,26 @@
 			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
--- a/rc/bin/termrc
+++ b/rc/bin/termrc
@@ -36,19 +36,17 @@
 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*){
@@ -100,7 +98,7 @@
 }
 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)$'
--- a/sys/lib/sysconfig/proto/cdproto
+++ b/sys/lib/sysconfig/proto/cdproto
@@ -19,8 +19,6 @@
 	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
@@ -94,6 +92,7 @@
 		+
 	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
@@ -104,14 +103,15 @@
 		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
@@ -121,20 +121,10 @@
 	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
--