OK, I said I was intending to try this. I've carried out the
following
procedure on a test box in my office: before I do it with a
live server 400
miles away, can anyone see any problems I've overlooked?
I have two boxes on the remote site - call them server and
gateway. I have ssh
access to both boxes and a null-modem serial cable linking
their serial
ports. server is running FreeBSD 4.8 on an 80GB hard drive
(ad0), and has a
second brand-new 80GB hard drive (ad2). gateway is
effectively acting as a
serial terminal server.
Copy the following files from a FreeBSD 6.0-RELEASE CD to
~root on server (I'm
sure it works with 6.1 too, but 6.0 was what I had to hand
for testing):
boot/boot1
boot/boot2
boot/loader
boot/mfsroot.gz
boot/device.hints
boot/kernel/kernel
and edit device.hints to add set to the start of each line
(that's
``set<space>''). (I couldn't find another way to
include the device hints
when we get to that part of the loader sequence).
Use disklabel to upgrade the boot blocks on the FreeBSD
slice:
disklabel -B -b /root/boot1 -s /root/boot2 ad0s1
This is so the bootloader will be able to read the UFS2
filesystem you are
about to create. (Is it a problem to change the label on the
slice rather
than the root `a' partition within the slice - which you
can't do with /
mounted?)
Establish the serial console link from gateway to server and
echo ``/boot/loader -h'' >/boot.config
on server.
Reboot server, get past the initial bootblock prompt, and
interrupt kernel
booting to get to a loader prompt.
Enter the following:
unload
load /root/kernel
include /root/device.hints
load -t mfs_root /root/mfsroot
set vfs.root.mountfrom=ufs:/dev/md0c
boot
You are now running FreeBSD 6.0 sysinstall from a memory
disk on a serial
console. Carry out the installation on ad2 (in theory, you
could actually do
this on ad0 if you wanted to blow away your original
installation and didn't
have a spare drive installed), remembering to visit the
configuration menu
and edit /etc/ttys to enable serial console login. Because
the install was
done over a serial link, the installed system should be
configured for serial
console.
Reboot. At the bootblock prompt, enter
1:ad(0,a)
to boot from the new drive. You should now be running
FreeBSD6 multiuser, with
a serial console for login, off ad2, and you can configure
it, copy data from
the old installation on ad0, etc. (My intention is to set up
ad2 as a gmirror
drive at this point - there is the extremely unlikely, but
possible, risk of
loss of data from adding the metadata to the last sector. I
want to take the
risk early before transferring too much data!). If you
reboot the box it will
drop to a bootblock prompt from the 4.8 installation: if you
want to change
that, put
1:ad(0,a) -h
in /boot.config. The BIOS will still start the boot process
from ad0, the
lowest-numbered drive, but the bootblock will switch over to
the other drive.
Once that's done, and the 4.8 installation is no longer
needed, ad0 can be
added to the mirror.
Comments, anyone?
Jonathan
_______________________________________________
freebsd-questions freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-que
stions
To unsubscribe, send any mail to
"freebsd-questions-unsubscribe freebsd.org"
|