Monday, June 27, 2011

Virtualizing a Suse Enterprise Server 9 on VMware vSphere

Recently I’ve virtualized an old  Suse Enterprise Server 9 with VMware. Here you can find some tips if you need to do something like that.

The best procedure would be adding the kernel modules for LSI Parallel controller on the physical machine and run /sbin/mkinitrd before P2V process, but if you are not allowed to modify the physical machine this is the only way I know to virtualize it.

I’ve done the P2V process using VMware’s Coldclone CD v4.1.1, first I’ve injected the physical machine’s SCSI drivers using peTool.exe

peTool.exe -i coldclone.iso -d STORAGE

Where STORAGE is a folder containing the TXTSETUP.OEM file and the drivers for my SCSI controller (LSI MegaRaid SCSI 320-2X).

Once the virtual machine is created I’ve got a boot error, the virtual machine can’t find /dev/sda1, is still trying to boot using the old MegaRaid SCSI controller:

image

In the virtualized machine I’ve chosen a LSI Logic Parallel SCSI controller:

image

Now I’ve to create a customized initrd that loads at init level my new SCSI drivers, so I’ll boot the virtualized machine using SysRescCD

image

Now you need to mount the boot disk, so I’ll use the following command:

mount /dev/sda1 /mnt/backup

Now you must edit the file /mnt/backup/etc/sysconfig/kernel and change the INITRD_MODULES variable. This is the actual value, note the reference to the physical megaraid SCSI controller:

image

You must edit this file using vi, nano or other editor and change INITRD_MODULES like that:

image

Note that mptscsih is the driver that Suse uses for LSI Logic Parallel SCSI controller.

Now we must modify the initrd RAM boot disk image file, you can find here in page 10 Novell’s documentation for this task.

We are going to decompress the file /boot/initrd and store it in the file /tmp/ramdisk:

gunzip </mnt/backup/boot/initrd > /tmp/ramdisk

Now you must mount the file in /mnt/ramdisk:

mkdir /mnt/ramdisk
mount -o loop /tmp/ramdisk /mnt/ramdisk

Now you must delete the megaraid drivers not needed anymore:

rm -rf /mnt/ramdisk/lib/modules/2.6.5-7.201-smp/kernel/drivers/scsi/megaraid

Note that 2.6.5-7.201-smp folder depends on the system’s kernel version, it can be different in your case.

Now we are going to add the new SCSI drivers:

mkdir /mnt/ramdisk/lib/modules/2.6.5-7.201-smp/kernel/drivers/message
mkdir /mnt/ramdisk/lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion
cp /mnt/backup/lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion/mptbase.ko /mnt/ramdisk/lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion
cp /mnt/backup/lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion/mptscsih.ko /mnt/ramdisk/lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion

You must also modify the file /mnt/backup/boot/linuxrc and locate the lines with the following text:

echo "Loading kernel/drivers/scsi/megaraid/megaraid_mm.ko"
insmod /lib/modules/2.6.5-7.201-smp/kernel/drivers/scsi/megaraid/megaraid_mm.ko

echo "Loading kernel/drivers/scsi/megaraid/megaraid_mbox.ko"
insmod /lib/modules/2.6.5-7.201-smp/kernel/drivers/scsi/megaraid/megaraid_mbox.ko

And replace them with:

echo "Loading kernel/drivers/message/fusion/mptbase.ko"
insmod /lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion/mptbase.ko

echo "Loading kernel/drivers/message/fusion/mptscsih.ko"
insmod /lib/modules/2.6.5-7.201-smp/kernel/drivers/message/fusion/mptscsih.ko

Now we must backup up the original initrd file, note that initrd is a link to initrd-2.6.5-7.201-smp file, so you must backup that file first:

mv /mnt/backup/boot/initrd-2.6.5-7.201-smp /mnt/backup/boot/initrd-2.6.5-7.201-smp.orig

And gzip the new one with the LSI Logic Parallel SCSI drivers:

umount /mnt/ramdisk
gzip </tmp/ramdisk > /mnt/backup/boot/initrd-2.6.5-7.201-smp

Now umount /dev/sda1 device and reboot the virtual machine, remember to disconnect the SysRescCD CD and boot from hard disk.

umount /dev/sda1
init 0

On next boot you will have to reconfigure the graphical settings, but you should choose Text mode only because the VMware graphic card is not supported until you install the vmware tools package.

image

You must also delete the /etc/sysconfig/network/ifcfg-eth-id-xx:xx:xx:xx:xx:xx file for the old physical ethernet card. And then set the network settings using yast from command line.