Using Mondorescue to restore a server image on VMWare
To get a working copy of a complete remote server running in VMWare I used Mondo Rescue for backup and restoring.
Mondo Rescue is a nice tool which can put a whole server disk into one ISO image file. It allows to boot from its corresponding floppy disk image and to restore the ISO image to another machine.
Create the ISO image
The command line to create the ISO image in /root/images:
nice mondoarchive -Oi -9 -k FAILSAFE -s 35000m -d /root/images -S /root/images -I '/ /dev/hda3' -E '/root/images'
Refer to man mondorescue for an explanation of the command options.
Boot in VMWare
I used VMWare Fusion 3.0 on Mac OS X. The procedure may be similar when using other versions of VMWare.
- Create a new Virtual Machine using the Linux preset which matches your remote server's OS.
- Create a virtual hard disk matching the size of your backed up server disk. I used disk type IDE.
- Create a virtual floppy disk (Settings > Other Devices) and attach the boot disk image created by Mondo Rescue to it. If you don't copied it from the remote server mount the ISO image to your local computer and copy /images/mindi-bootroot.2880.img. This is the boot disk image file.
- Attach the ISO image to the virtual CD Rom drive of VMWare.
Boot the Virtual Machine. You should finally see a prompt where you can enter mondorestore. Restore by choosing
- How to restore: Automatically
- Read From: CD-R disks
Mondo Restore will start to erase your virtual hard disk after a delay of some seconds. Power down the Virtual Machine after restore is complete and remove the virtual Floppy Disk and the ISO image from the virtual CD-Rom.
After starting up the Virtual Machine you should see your server boot. It depends on your installed kernel if drivers for devices like the virtual Ethernet NIC will be loaded.
In my case (special Debian 3.1 kernel from Strato) it was necessary to install a generic kernel to get a working Ethernet NIC. VMWare needs pcnet32.o loaded. The Strato kernel did not use modules to load drivers so I installed the latest Debian 3.1 kernel available from archive.debian.org.
Because of the missing Ethernet driver I put the new kernel and it's dependencies onto an ISO image file which I attached to the Virtual Machine and mounted to /mnt.
What I downloaded:
What I installed:
- dpkg -i /mnt/dash_052-5_i386.deb
- dpkg -i /mnt/cramfsprogs_11-6_i386.deb
- dpkg -i /mnt/initrd-tools_01811_i386.deb
- dpkg -i /mnt/kernel-image-2427-3-386_24.deb
My system uses lilo to boot so after installing the kernel I created a new /etc/lilo.conf which reflected the changes to paths and the new initrd option. Running lilo configured the boot loader and after a reboot the Ethernet NIC was available and usable.