HOWTO: Move FreeBSD to a new hard disk
Posted by Jason on Sunday November 04, @09:13AM
from the old-data-new-drive dept.
This article will explain how you can move your FreeBSD installation from one hard
disk drive to another. I have done this many times using the dump/restore utility.
Before you begin, be sure you have read this document carefully.
Let's assume that our FreeBSD installation is on a 4 gigabyte drive (ide master ad0)
and we would like to move it to a new 20 gig drive.
What you need to do is remove the old hard disk, install the new [20G] drive as an
ide master and perform a minimal clean install of FreeBSD, setting up the partitions
exactly how you want them. Be se sure to set the drive as bootable and boot from it
one time as a test.
Next, put your old [4G] drive back in the system as an ide master and the new [20G]
drive in as an ide slave. Boot the system on your old installation in single user
To boot in single user mode:
Press the [spacebar] at the 10 second countdown.
Press [enter] for the default shell.
At the (#) prompt type:
mount -u /
Next, make sure you have the device files made so you can mount the partitions on
the slave drive.
Now make mount points for the new drive's partitions:
Lastly, I use a shell script to do the following:
1 - create new filesystems (newfs the drive)
2 - mount the partitions
3 - dump the data from my old drive, and restore it to my new one
4 - unmount the new drives partitions
5 - enable softupdates on the new drive (optional)
Here is the script I use:
mount /dev/ad1s1a /backup/root
mount /dev/ad1s1e /backup/var
mount /dev/ad1s1f /backup/usr
( dump -0f - / ) | ( cd /backup/root ; restore -rf - )
( dump -0f - /var ) | ( cd /backup/var ; restore -rf - )
( dump -0f - /usr ) | ( cd /backup/usr ; restore -rf - )
tunefs -n enable /dev/ad1s1a
tunefs -n enable /dev/ad1s1e
tunefs -n enable /dev/ad1s1f
It will probably take several hours to perform the dump/restore, so be patient. Once
the data has been dumped and restored to the new drive, all you have to do is remove
your old drive and put it in a safe place, set the new drive to a master and reboot.
Your system will now boot your old FreeBSD installation on your new hard disk.
Note: You can download the drivecopy shell script by clicking on the drivecopy.tar
filename located on the right sidebar of this page. Issue the command tar xvf
drivecopy.tar to untar the drivecopy.sh file.
You may need to modify the drivecopy shell script if you are using custom
partitions. If you had selected the standard FreeBSD partitions at install, this
file will work without modification.
To learn more about dump, restore and other unix commands, please read the man