Date: Wed, 17 Oct 2001 16:08:56 +0600 (YEKST) From: Anton Voronin <anton@urc.ac.ru> To: FreeBSD-gnats-submit@freebsd.org Subject: conf/31327: Fixes and improvements for rc.diskless* scripts Message-ID: <200110171008.f9HA8t010726@belle.rnoc.urc.ac.ru>
next in thread | raw e-mail | index | archive | help
>Number: 31327
>Category: conf
>Synopsis: Fixes and improvements for rc.diskless* scripts
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Oct 17 03:20:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Anton Voronin
>Release: FreeBSD 4.3-STABLE i386
>Organization:
Southern Ural State University
>Environment:
-stable
>Description:
1. Fix for /etc/rc.diskless2 - utilities from /usr were used before mount -a
was called.
2. /etc/rc.diskless1: added configuration option "diskless_sync_pw" to take
password files from server's /etc, not from /conf/*/etc.
>How-To-Repeat:
Try to boot diskless FreeBSD machine using FreeBSD NFS server
>Fix:
--- rc.diskless2.ORIG Wed Oct 17 15:37:18 2001
+++ rc.diskless2 Wed Oct 17 15:37:28 2001
@@ -55,6 +55,9 @@
echo "+++ mfs_mount of /var"
mount_md ${varsize:=65536} /var 1
+mkdir /var/db # for /var/db/mounttab updates to sucseed when doing mount -a
+mount /usr # to access utilities in /usr
+
echo "+++ populate /var using /etc/mtree/BSD.var.dist"
/usr/sbin/mtree -deU -f /etc/mtree/BSD.var.dist -p /var
@@ -64,7 +67,7 @@
/usr/bin/touch $LOGFILES
fi
-mount -a # chown and chgrp are in /usr
+mount -a # all the rest local filesystems including ones mounted under /var
#
# XXX make sure to create one dir for each printer as requested by lpd
--- rc.diskless1.ORIG Wed Oct 17 15:37:18 2001
+++ rc.diskless1 Wed Oct 17 16:02:42 2001
@@ -93,13 +93,43 @@
done
echo "Interface ${bootp_ifc} IP-Address ${bootp_ipa} Broadcast ${bootp_ipbca}"
+# If there is a global system configuration file, suck it in.
+#
+if [ -r /etc/defaults/rc.conf ]; then
+ . /etc/defaults/rc.conf
+ source_rc_confs
+elif [ -r /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
-# Create an MFS /tmp to temporarily hold files from /etc until we
-# can bootstrap /etc as an MFS.
+# Sync password files with server (step 1)
+# Warning: variable sync_diskless_pw must be set via server's rc.conf.
+#
+case ${diskless_sync_pw} in
+[Yy][Ee][Ss])
+ mount_md 4096 /var 0
+ chkerr $? "MFS mount on temporary /var"
+ for pwfile in passwd master.passwd pwd.db spwd.db ; do
+ /bin/cp -p /etc/$pwfile /var
+ done
+ ;;
+esac
+
+# Create own /etc
+#
mount_md 4096 /etc 0
chkerr $? "MFS mount on /etc"
/bin/chmod 755 /etc
+
+# Sync password files with server (step 2).
+#
+case ${diskless_sync_pw} in
+[Yy][Ee][Ss])
+ /bin/cp -p /var/* /etc
+ /sbin/umount /var
+ ;;
+esac
/bin/cp -Rp /conf/default/etc/* /etc
chkerr $? "cp /conf/default/etc to /etc MFS"
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110171008.f9HA8t010726>
