Subject: Re: When is the next release or snapshot due?
To: Jon Ribbens <jon@oaktree.co.uk>
From: Andrew Brown <codewarrior@daemon.org>
List: port-i386
Date: 06/04/1997 13:19:26
>Are there instructions anywhere on how to upgrade NetBSD?
>At a first glance it looks like it's something you need to
>set aside about a full working week for, per machine.

i've done live, running migrations from 1.1 to 1.2 a few times, all
with the machine being up, live, running, and doing stuff.  the only
"down-time" the machine experienced was when it changed from the 1.1
kernel to the 1.2 one.

what i did (which may or may not be "correct", but worked fine for me):

1) make a directory into which the new stuff will be unpacked (eg,
/newroot).

2) make subdirectories in /bin, /sbin, /usr/sbin, /usr/lib,
/usr/libexec, called .1.1 and .1.2 (the significance of these names
will become apparent shortly).

3) in "/newroot", i made a directory called usr and made six symlinks
to the .1.2 directories made in the previous step.  so now i have
stuff like:

  /bin/.1.1/
  /bin/.1.2/
  /sbin/.1.1/
  /sbin/.1.2/
  ...

  /newroot/bin -> /bin/.1.2
  /newroot/sbin -> /sbin/.1.2
  /newroot/usr/bin -> /usr/bin/.1.2
  /newroot/usr/sbin -> /usr/sbin/.1.2
  ...

4) unpack the new stuff into /newroot (which will actually end up
unpacking it into your real tree, albeit somewhat sequestered away).
also, at this time, move your old kernel source tree and unpack the
new kernel source.

5) copy /bin/mv to / (so that i know where it is)

6) then, in order, i cd into /usr/lib, /sbin, /bin, /usr/sbin,
/usr/bin, /usr/libexec, and execute the following one-line command
(regardless of the shell)

  /mv * .1.1 ; /mv .1.2/* .

which has the following side-effects (as i understand things):
a) no files are removed, they are simply moved
b) no running programs should be affected by libraries disappearing
c) there does exist a tiny window for new programs starting while
you're doing the step in the /usr/lib directory to fail, but i
dismissed it
d) by replacing libraries first, and then binaries, you have a much
greater chance that everything will continue to work as you are
working

7) now, with new tools in place, config and build a new kernel.  then
install it and reboot.

no one noticed when i did it.

-- 
|-----< "CODE WARRIOR" >-----|
andrew@echonyc.com (TheMan)        * "ah!  i see you have the internet
codewarrior@daemon.org                               that goes *ping*!"
warfare@graffiti.com      * "information is power -- share the wealth."