Chapter 9, Administration and Automation
#74 Clone Your Linux Install
Restore the Image
Now you should have a large file called image.bin in the root directory of /dev/
sda1 (or whichever partition you mounted on /mnt/foo). At this point, you
should unmount the disk to which you wrote the image. If you used an exter-
nal USB drive, you can plug it into any computer onto which you want to
clone this Linux install.
To restore the image, you literally do the commands in reverse. You need a
Linux boot CD of some sort (such as Knoppix, SUSE, Ubuntu, or Red Hat)
and boot into a recovery mode, or gain access to a shell (Ctrl-Alt-F2 when
you are in the installation portion of a distribution). Then you can load the
usb_storage module again, and mount the external hard disk:
foo@bar:~# mkdir /foo
foo@bar:~# modprobe usb_storage
foo@bar:~# mount /dev/sda1 /foo
Now you need to partition the disk on the new machine using fdisk or a sim-
ilar partitioning tool. A root partition and a swap partition are required.
Assuming that the root partition is the first partition on the disk and the
swap is the second, you need to format the swap partition using the follow-
ing command:
foo@bar:~# mkswap /dev/hda2
It isn’t necessary to write a filesystem to the root partition, because the
image is providing a filesystem. At this point you can load the image file
onto the hard disk using the
dd command again:
foo@bar:~# dd if=/foo/image.bin of=/dev/hda1
As you can see, the command just reverses the source and destination of the
input and output. When this is finished, you need to mount the partition
chroot into it so that you are “inside” the Linux installation:
foo@bar:~# mkdir /install
foo@bar:~# mount /dev/hda1 /install
foo@bar:~# chroot /install /bin/bash
The last line tells the system to pretend the root directory is /install, and run
the bash shell upon entering it. Now you need to sort out the bootloader for
the system. Most systems use either LILO or GRUB. In the case of LILO,
you need to run
lilo in the chrooted environment. This will write the neces-
sary code to the master boot record:
foo@bar:~# lilo
With GRUB you need to run grub-install:
foo@bar:~# grub-install /dev/hda

Get Linux Desktop Hacks now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.