Moving Linux to a new hard disk

In this example, I move my existing Red Hat Linux 8.0 partitions to a new 120 GB hard disk. Here are the steps I used to move the data to the new disk:

1. Connect the new hard disk as the IDE Primary Slave. You may have to change the jumper settings on the IDE Primary Master when you connect a Primary Slave.

2. Boot a Red Hat Linux installation CD into Rescue Mode by typing linux rescue.

3. Use fdisk to create partitions on the new hard disk.

My old hard disk had the following file systems:

/dev/hda1    /boot    100 Megabytes
/dev/hda2    swap     512 Megabytes
/dev/hda3    /        Remainder of disk space

My new hard disk appears to Linux as /dev/hdf. I used fdisk to partition the new hard disk similar to that of the old hard disk.

4. Create the ext3 and swap file systems on the new hard disk.

mkfs.ext3 /dev/hdf1
mkfs.ext3 /dev/hdf3
mkswap /dev/hdf2

5. Mount the /boot and / (root) slices from both disks.

mkdir /old/boot
mkdir /old/root
mount /dev/hda1 /old/boot
mount /dev/hda3 /old/root

mkdir /new/boot
mkdir /new/root
mount /dev/hdf1 /new/boot
mount /dev/hdf3 /new/root


6. Copy the file systems from the old disk to the new disk.

cd /old/boot
tar cvf - . | tar xvf - -C /new/boot
cd /old/root
tar cvf - . | tar xvf - -C /new/root


7. Red Hat Linux uses file system labels in /etc/fstab. You will either have to edit the new /etc/fstab or (what I chose) use the e2label command to create file system labels on the new hard disk partitions.

e2label /dev/hdf1 /boot
e2label /dev/hdf3 /

8. Edit the lilo boot loader configuration on the new hard disk. If you are experienced with the grub boot loader, you may want to use it instead of lilo.

umount /dev/hdf1
chroot /new/root
mount /dev/hdf1 /boot


vi /etc/lilo.conf


Add:

boot = /dev/hda
delay = 40
compact
vga = normal
root = /dev/hda3
read-only
image = /boot/vmlinuz-2.4.18-14
        label = Linux


Run lilo -v to make the changes take effect.

9. Reboot your system.

Back to brandonhutchinson.com.

Last modified: 01/16/2003