There seems to be a lot of tutorials with respect to how you can dump/restore FreeBSD implementations. However, none of them appear to be all encompassing what is actually required from start to finish during the entire process.
The one thing that I think is lacking in proper documentation is utilizing FreeBSD in a LiveCD scenario (LiveFS) within a network capacity (necessary for migration).
We decided to write this tutorial so that people could have one place to establish all the necessary things required for this type of migration from start to finish.
In this scenario we actually migrated a FreeBSD implementation on VMWARE to XEN HVM. In the end, there were no technical problems with FreeBSD actually running after it was migrated — it ran beautifully actually.
I should note that this was tested with FreeBSD 7.2-RELEASE disc images.
Please find the guide below :
Prepare OLD Instance
1. Boot into old operating system
2. Take note of partition slices / slice names / sizes / etc
3. Reboot with FreeBSD LiveFS disc
Prepare NEW Xen
1. Boot Xen instance with FreeBSD Disc 1 ISO
2. Partition / install boot loader exactly the same slices as the old instance. To be extra careful, give your slices a bit more disc space than the old implementation.
3. Write changes & reboot with FreeBSD LiveFS disc
Establish FreeBSD LiveFS environment
You need to establish a few things to get SSH / DUMP / RESTORE to work properly on both the ”’old”’ and ”’new”’ instances
1. Boot into FreeBSD LiveFS (Fixit > livefs)
2. Create the following folders :
/etc/ssh /usr/sbin /usr/bin /root /root/.ssh
3. Copy the following files :
cp /mnt2/bin/ps /bin cp /mnt2/sbin/sysctl /sbin cp /mnt2/etc/ssh/* /etc/ssh cp /mnt2/bin/csh /bin cp /mnt2/bin/cat > /bin cp /mnt2/sbin/restore > /sbin
4. Set an IP address on both old and new instances:
ifconfig eth0 10.0.0.50 netmask 255.255.255.0
ifconfig eth0 10.0.0.60 netmask 255.255.255.0
5. Start sshd :
Start transferring slices
1. To allow for transferring of partitions properly, the /tmp partition should be mounted on the new Xen instance :
mount -t ufs /dev/ad0s1e /tmp
2. For the first partition you wish to transfer, mount the empty slice on the new xen instance :
mount -t ufs /dev/ad0s1a /mnt/ufs.1
Sometimes you have to fsck mark the filesystem clean to mount it :
3. On the old instance :
dump -0aLf - /dev/ad0s1a | ssh 10.0.0.50 "cd /mnt/ufs.1 && cat | restore -rf -"
That should dump/restore the slice from old > new.
Final things on the new Xen instance
Dont forget to boot the new instance in single user mode and modify ”’fstab”’ to reflect the new slice names (if applicable), as well as ”’rc.conf”’ for any hard coded interface names, etc. FreeBSD won’t boot if the right slice names / interface names aren’t present. Or at least cause problems.
You can mount the /etc slice while still in the LiveFS for the new FreeBSD instance.
Hopefully this was helpful! Obviously this has nothing to do with Xen, other than the fact that we were migrating the FreeBSD vmware instance to Xen.
You can do this on “real” machines, or from xen to vmware or anywhere. As long as the hardware is compatible.