This guide 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.
- Root Access or Sudo Rights.
- A List of Your Old and new Hardrive Information like /dev/ad* /dev/da* /dev/sd* and so on this can be checked by doing cat /var/log/messages and read the disctypes that come along.
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 4 at the 10 second countdown.
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:
- create new filesystems (newfs the drive)
- mount the partitions
- dump the data from my old drive, and restore it to my new one
- unmount the new drives partitions
- enable softupdates on the new drive (optional)
Here is the script I use:
#!/bin/sh 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 #end
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.