From owner-freebsd-current Tue Oct 6 16:26:55 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id QAA26653 for freebsd-current-outgoing; Tue, 6 Oct 1998 16:26:55 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from vader.cs.berkeley.edu (vader.CS.Berkeley.EDU [128.32.38.234]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id QAA26599 for ; Tue, 6 Oct 1998 16:26:28 -0700 (PDT) (envelope-from asami@vader.cs.berkeley.edu) Received: from silvia.hip.berkeley.edu (sji-ca11-102.ix.netcom.com [209.109.237.102]) by vader.cs.berkeley.edu (8.8.7/8.7.3) with ESMTP id QAA18078 for ; Tue, 6 Oct 1998 16:26:12 -0700 (PDT) Received: (from asami@localhost) by silvia.hip.berkeley.edu (8.8.8/8.6.9) id QAA07881; Tue, 6 Oct 1998 16:26:05 -0700 (PDT) Date: Tue, 6 Oct 1998 16:26:05 -0700 (PDT) Message-Id: <199810062326.QAA07881@silvia.hip.berkeley.edu> To: current@FreeBSD.ORG Subject: CDROM as system disk From: asami@cs.berkeley.edu (Satoshi Asami) Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi, I'm thinking about using CDROMs as boot (system) disks on our cluster. This is because the internal (IDE) drives shipped with the PCs seem to have an enormous failure rate (25% in 1 1/2 years) and it's also a pain in the backside to replace them. (We have external (SCSI) disks too but would like to avoid using them as anything other than swap and logs for reasons that I will not go into here.) So, the question is: is there anyone out there using this kind of setup? Obviously lots of stuff (except /tmp and /var) has to be read-only, and I could get rid of most of the boot-time warnings and errors with the following patches (relative to -stable) to move motd and nologin to /var/run: === Index: etc/login.conf =================================================================== RCS file: /usr/cvs/src/etc/login.conf,v retrieving revision 1.9.2.7 diff -u -r1.9.2.7 login.conf --- login.conf 1998/03/09 03:03:23 1.9.2.7 +++ login.conf 1998/10/06 23:04:47 @@ -51,7 +51,7 @@ # standard:\ :copyright=/etc/COPYRIGHT:\ - :welcome=/etc/motd:\ + :welcome=/var/run/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=/usr/bin/ee:\ :path=~/bin /bin /usr/bin /usr/local/bin:\ :manpath=/usr/share/man /usr/local/man:\ Index: etc/rc =================================================================== RCS file: /usr/cvs/src/etc/rc,v retrieving revision 1.104.2.37 diff -u -r1.104.2.37 rc --- rc 1998/09/16 22:43:36 1.104.2.37 +++ rc 1998/10/06 23:24:02 @@ -143,8 +143,6 @@ chmod 666 /dev/tty[pqrsPQRS]* # clean up left-over files -rm -f /etc/nologin - clean_var # If it hasn't already been done rm /var/run/clean_var Index: etc/rc.local =================================================================== RCS file: /usr/cvs/src/etc/rc.local,v retrieving revision 1.21.2.2 diff -u -r1.21.2.2 rc.local --- rc.local 1998/02/15 14:24:49 1.21.2.2 +++ rc.local 1998/10/06 23:04:37 @@ -9,13 +9,11 @@ # . /etc/rc.conf #fi -T=/tmp/_motd +T=/var/run/motd rm -f $T uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' > $T awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' < /etc/motd >> $T -cp $T /etc/motd -chmod 644 /etc/motd -rm -f $T +chmod 644 $T echo -n 'starting local daemons:' Index: include/paths.h =================================================================== RCS file: /usr/cvs/src/include/paths.h,v retrieving revision 1.7 diff -u -r1.7 paths.h --- paths.h 1995/09/23 15:14:25 1.7 +++ paths.h 1998/10/06 22:47:37 @@ -55,7 +55,7 @@ #define _PATH_MAILDIR "/var/mail" #define _PATH_MAN "/usr/share/man" #define _PATH_MEM "/dev/mem" -#define _PATH_NOLOGIN "/etc/nologin" +#define _PATH_NOLOGIN "/var/run/nologin" #define _PATH_SENDMAIL "/usr/sbin/sendmail" #define _PATH_SHELLS "/etc/shells" #define _PATH_TTY "/dev/tty" === (Incidentally, nologin seems to belong to /var/run in all senses of the word; does anyone know why it's in /etc at all?) The other "gotchas" I see are caused by tty perms in /dev, as /etc/rc tries to chmod them as well as fbtab (if you're running X) and mesg and so on. These should go away with devfs so I'm not too worried. Pretty much everything in /var needs to be read-write, so I guess swap, /tmp and /var should still be on a hard disk. (/tmp can be on MFS.) But only /var needs to be preserved across reboots so this shouldn't be to much of a problem. One problem is how to identify the hostname. Since it is currently set in /etc/rc.conf, and we'd like to have only one CDROM for all our 20+ machines, there should be some way to have the hosts identify themselves. I see a bootparamd (can this be used from CDROM boots?). Another possibility is to keep a table of "ethernet address:IP address" pairs on the CDROM but that requires burning another CD when the ethernet card goes bad so I'd like to avoid that. Since this table can be kept on an NIS server, the question is how to get the machines to talk to the server long enough to obtain the table. An idea I came up with is: (1) During boot, machine picks an IP address (at random) in a certain range (2) If there is conflict (can this be found easily?), go to (1) (3) Use that IP address to query the NIS server to get the real IP address Any other ideas? Another thing I'm thinking is to make this CDROM self-contained; that is, you can stick this into any machine without anything in the internal disk and it will automatically generate necessary filesystems and mount them. This will make adding new machines to the cluster very easy. What do you guys think? Am I totally off the mark? Satoshi To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message