Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Oct 1998 15:23:50 +0100 (MET)
From:      Luigi Rizzo <luigi@labinfo.iet.unipi.it>
To:        stable@FreeBSD.ORG
Subject:   Request for change...
Message-ID:  <199810221423.PAA12707@labinfo.iet.unipi.it>

next in thread | raw e-mail | index | archive | help
As part of the diskless support with shared root and usr partitions,
which i have been using for years now, I need the attached changes
to /etc/rc

This code detects a diskless machine from having the hostname set
(through bootp) when control is given to /etc/rc, and reacts
appropriately (by doing some specific actions to mount a writable /var
partition and populate it -- these things can be put into a separate
script, e.g. rc.diskless if necessary).
This is essentially a no-op for regular machines.

Details are documented in

	http://www.iet.unipi.it/~luigi/diskless.html

Do i have permission to work on this stuff for inclusion in -stable
and/or -current ?

[as an aside: there are many people who use similar setups for diskless
support, so if someone has suggestions please go ahead]

	luigi


--- rc	Wed Jul 22 10:16:24 1998
+++ /sd0/etc/diskless/etc/rc	Thu Jun  4 11:35:21 1998
@@ -1,5 +1,5 @@
 #!/bin/sh
-#	$Id: rc,v 1.104.2.34 1998/06/04 00:20:34 mph Exp $
+#	$Id: rc,v 1.104.2.33 1998/02/15 14:24:47 jkh Exp $
 #	From: @(#)rc	5.27 (Berkeley) 6/5/91
 
 # System startup script run by init on autoboot
@@ -27,6 +27,7 @@
 	ccdconfig -C
 fi
 
+DISKLESS=NO
 swapon -a
 
 if [ $1x = autobootx ]; then
@@ -68,7 +69,9 @@
 
 # root must be read/write both for NFS diskless and for VFS LKMs before
 # proceeding any further.
-mount -u -o rw /
+# However, do not trust fstab, could be bogus
+set `df -n / `
+mount -u -o rw $8 /
 if [ $? != 0 ]; then
 	echo "Filesystem mount failed, startup aborted"
 	exit 1
@@ -76,7 +79,37 @@
 
 umount -a >/dev/null 2>&1
 
+if [ "`hostname`" = "" ]
+then
 mount -a -t nonfs
+else
+        DISKLESS=YES
+        echo "This is diskless host `hostname`"
+        # At this point see if there is a private fstab for this machine
+        # to replace the default one. It goes in /var/etc/fstab
+        mount /var      # to have something writable...
+        mkdir /var/etc
+        # at this point be careful -- /etc is empty...
+        cp /machine/_default_/fstab /etc/fstab
+        if [ -f /machine/`hostname`/fstab ]
+        then
+                echo "Customizing for `hostname`"
+                cp /machine/`hostname`/fstab /etc/fstab
+        else
+                echo "`hostname` does not have private fstab"
+        fi
+        mount -a -t nomfs
+        # now populate /var. I need /usr mounted since tar calls gunzip...
+        (cd / ; tar --unlink -xpzf /var.tgz )
+ 
+        if [ -d /machine/`hostname` ]
+        then
+                echo "Customizing for `hostname`"
+                ls /machine/`hostname`
+                cp /machine/`hostname`/* /etc
+        fi
+fi
+
 if [ $? != 0 ]; then
 	echo "Filesystem mount failed, startup aborted"
 	exit 1
@@ -95,7 +128,7 @@
 
 adjkerntz -i
 
-rm -rf /var/run/*
+rm -f /var/run/*
 
 # Keep a copy of the boot messages around
 dmesg > /var/run/dmesg.boot
@@ -122,7 +155,10 @@
 	network_pass1
 fi
 
+if [ "$DISKLESS" != "YES" ]
+then
 mount -a -t nfs
+fi
 
 # Whack the pty perms back into shape.
 chmod 666 /dev/tty[pqrsPQRS]*

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810221423.PAA12707>