Unix tutorial Contact as

How to move FreeBSD to a new hard disk

The original of this article you can find here.

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 mode.

To boot in single user mode:
Press the [spacebar] at the 10 second countdown.
boot -s
Press [enter] for the default shell.

At the (#) prompt type:
fsck -p
mount -u /
mount -a
swapon -a
adjkerntz -i

Next, make sure you have the device files made so you can mount the partitions on the slave drive.
cd /dev
./MAKEDEV ad1s1a
./MAKEDEV ad1s1e
./MAKEDEV ad1s1f

Now make mount points for the new drive's partitions:
mkdir /backup
mkdir /backup/root
mkdir /backup/usr
mkdir /backup/var

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:

newfs /dev/ad1s1a
newfs /dev/ad1s1e
newfs /dev/ad1s1f

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

umount /backup/root
umount /backup/var
umount /backup/usr

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 pages:

man dump
man restore
man tar
man mount
man adjkerntz

Back to main page

Copyright © 2003-2016 The UnixCities.com
All rights reserved