Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Newimage

Newimage

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 <outfile>

   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 it's
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.