Instructions for updating the node disk image. A. Linux: 0. Update /etc/testbed/supfile from the source (tmcd/linux) directory. With each new image, the sup release needs to be bumped and the checkouts file removed. See below for a more detailed explaination of this. 1. Update whatever files necessary. 2. Reboot to single-user. To do this, reboot and when you get the LILO prompt, type "linux -s". Note: I prefer to reboot rather than just shutdown to single user, to ensure that all processes are gone and all filesystems unmounted. 3. Mount the root filesystem RW: mount -n -o remount,rw / so you can update files. 4. Mount the rest of the filesystems so you can add/change things: mount -a -t ufs 5. Run the testbed prepare script: cd /usr/local/etc/testbed ./prepare 6. Reboot to BSD to finish. I have tried dd'ing off the linux partition while running Linux, but it has always produced a corrupt image. So I dd everything from FreeBSD. B. FreeBSD: 0. Update /etc/testbed/supfile from the source (tmcd/freebsd) directory. With each new image, the sup release needs to be bumped and the checkouts file removed. See below for a more detailed explaination of this. 1. Update whatever files necessary. 2. Reboot to single-user. To do this, reboot and when you get the FreeBSD boot prompt: >> FreeBSD/i386 BOOT Default: 0:ad(0,a)kernel boot: Type "kernel -s" at the boot prompt and type return. 3. Mount the root filesystem RW: mount -u / so you can update files. 4. Mount the rest of the filesystems so you can add/change things: mount -a -t ufs 5. Run the testbed prepare script: cd /usr/local/etc/testbed ./prepare --------------------------------------------------------------------------- C. Cutting the image: 1. Boot into the FreeBSD MFS (you can use the 'node_admin on' command to set this up) 2. Log in and run imagezip - to make a full-disk image, run: /usr/local/bin/imagezip -d /dev/rad0 The MFS will mount all the usual /users and /proj directories, so write it into NFS somewhere, then move it into its final location on boss from there. CVSUP: Each time we cut a new image, we need to bump the sup release since its entirely possible that different versions of the image will be running on different nodes. Older images will still need the sup release that they were built with so that they continue to get updates, while new images need a different (newer) sup release. Fortunately, this is pretty easy to do. * Before you cut a new image, make sure that both freebsd and linux are booted to multiuser mode so that they pick up all the updates in their sup release. * Bump the sup release in the supfile. This file is CVS'ed in the tmcd directory as linux/supfile and freebsd/supfile. The section of this file that matters is: release=20000221 Change this to the current date and install the new supfile. On freebsd this is /etc/testbed/supfile. On linux its /etc/rc.d/testbed/supfile. * Unfortunately, cvsup on the client side has a minor bug in how it handles a new release. The work around is to remove the "checkouts" file that tells sup which files it has picked up: Linux: rm /etc/rc.d/testbed/sup/sup/RHL62-STD/checkouts Freebsd: rm /etc/testbed/sup/sup/FBSD40-STD/checkouts * Now for the server side (before you boot the new image!). You need to create the new "release" that is referenced in the supfile you modified above. To do this, go to paper:/usr/testbed/sup/sup/{FBSD40-STD,RHL62-STD} and edit the "releases" file in each. You need to *add* a line like this: 20000221 list=list prefix=/usr/testbed/sup/sup/FBSD40-STD/root-20000221 norcs where 20000221 is the name of the new release you put in the supfile above. You also need to create the new root directory (the prefix argument): mkdir /usr/testbed/sup/sup/FBSD40-STD/root-20000221 Do this for both the freebsd and linux sup subdirs. * Thats it! Easy as cake.