Date: Wed, 2 Mar 2005 10:59:23 -0800 From: Brooks Davis <brooks@one-eyed-alien.net> To: Mike Makonnen <mtm@identd.net> Cc: rc@freebsd.org Subject: Re: proposal: etc/rc.d/initdiskless -> /etc/rc.initdiskless Message-ID: <20050302185922.GA18031@odin.ac.hmc.edu> In-Reply-To: <20050227131203.GA3172@rogue.smit.lan> References: <20050224221257.GA655@odin.ac.hmc.edu> <20050227131203.GA3172@rogue.smit.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
--k+w/mQv8wyuph6w0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Feb 27, 2005 at 04:12:03PM +0300, Mike Makonnen wrote: > On Thu, Feb 24, 2005 at 02:12:57PM -0800, Brooks Davis wrote: > > I would like to propose that we move the initdiskless script out of rc.d > > and back into /etc. The reason for doing this is that initdiskless is > > really about bootstrapping /etc from a minimial configuration. Thus > > running it via rcorder is really running it too early.=20 > ^^^^^^^^^ > I think you mean too late, right? >=20 > > By moving it to > > /etc and running it directly from /etc/rc (possiably conditionally based > > on the existance of /conf) we fix this issue. The main benefit of this > > is that /etc/rc.d can now be modified or created entierly from entries > > under /conf which could make it easier to maintain extra scripts in the > > main flow of rc.d. > >=20 > > The change to /etc/rc would look something like: > >=20 > > diff -u -p -r1.335 rc > > --- rc 8 Oct 2004 14:23:49 -0000 1.335 > > +++ rc 24 Feb 2005 21:02:18 -0000 > > @@ -50,6 +50,10 @@ HOME=3D/ > > PATH=3D/sbin:/bin:/usr/sbin:/usr/bin > > export HOME PATH > > =20 > > +if [ -d /conf ]; then > > + /etc/rc.initdiskless > > +fi > > + >=20 > This is too generic. Isn't there some way of definitely knowing > whether this is a diskless boot? >=20 > > . /etc/rc.subr > > =20 > > # Note: the system configuration files are loaded as part of > >=20 > >=20 > > Does anyone have major objections to this change? The goal is to run > > initdiskless as early as possible so /etc can be as minimal as possible > > at that point. >=20 > Sounds ok to me. Does the following patch address your concerns? I'd be having etc/rc.d/initdiskless repo-copied to /etc/rc.initdiskless and would remove etc/rc.d/preseedrandom. etc/rc.d/rcconf.sh would lose its dependency on initdiskless and become the first script to run. -- Brooks Index: rc =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/cvs/src/etc/rc,v retrieving revision 1.335 diff -u -p -r1.335 rc --- rc 8 Oct 2004 14:23:49 -0000 1.335 +++ rc 2 Mar 2005 17:57:29 -0000 @@ -50,6 +50,11 @@ HOME=3D/ PATH=3D/sbin:/bin:/usr/sbin:/usr/bin export HOME PATH =20 +dlv=3D`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null` +if [ ${dlv:=3D0} -ne 0 -o -f /etc/diskless ]; then + /etc/rc.initdiskless +fi + . /etc/rc.subr =20 # Note: the system configuration files are loaded as part of Index: rc.d/initdiskless =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/cvs/src/etc/rc.d/initdiskless,v retrieving revision 1.41 diff -u -p -r1.41 initdiskless --- rc.d/initdiskless 12 Dec 2004 08:04:26 -0000 1.41 +++ rc.d/initdiskless 2 Mar 2005 18:20:42 -0000 @@ -124,9 +124,6 @@ # # (end of documentation, now get to the real code) =20 -dlv=3D`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null` -[ ${dlv:=3D0} -eq 0 ] && [ ! -f /etc/diskless ] && exit 0 - # chkerr: # # Routine to check for error @@ -171,11 +168,16 @@ create_md() { # # set -v =20 +# We need some entropy for some commands to work, so feed the PRNG. +( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ + | dd of=3D/dev/random bs=3D8k 2>/dev/null + # Figure out our interface and IP. # bootp_ifc=3D"" bootp_ipa=3D"" bootp_ipbca=3D"" +dlv=3D`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null` if [ ${dlv:=3D0} -ne 0 ] ; then iflist=3D`ifconfig -l` for i in ${iflist} ; do @@ -321,3 +323,9 @@ done =20 # umount partitions used to fill the memory filesystems [ -n "${to_umount}" ] && umount $to_umount + +# The entropy we fed the PRNG was low quality to mark it unseeded. +seeded=3D`sysctl -n kern.random.sys.seeded 2>/dev/null` +if [ -n "${seeded}" ]; then + sysctl kern.random.sys.seeded=3D0 2>/dev/null +fi --=20 Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4 --k+w/mQv8wyuph6w0 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFCJg0KXY6L6fI4GtQRAvmjAKC2a/EuY7cF5ymo3l0oQm+hG/uljwCfZywX k9zSaXucCxYYo/LkK6vdnFM= =epRn -----END PGP SIGNATURE----- --k+w/mQv8wyuph6w0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050302185922.GA18031>