Linux Integration Services no longer function after a kernel upgrade


Symptoms


Consider the following scenario:

  •  You are running Linux based virtual machines on Hyper-V with the 2.1 version of the Linux Integration Services installed.
  •  You apply an updated kernel in the Linux based virtual machine.

After applying the kernel update, the Linux based guest operating system fails to boot with "Unable to mount root file system".

Cause


This problem occurs because the Linux Integration Services must be recompiled after a kernel upgrade to function.

Resolution


To prevent this issue, enable Dynamic Kernel Module Support (DKMS) before applying kernel updates.

 

To use DKMS with Red Hat:

1.      Install the latest DKMS package:

wget http://linux.dell.com/dkms/permalink/dkms-2.1.1.2-1.noarch.rpm

rpm -ivh dkms-2.1.1.2-1.noarch.rpm

 

2.      Copy the Linux Integration Services source code to the virtual machine. After attaching the LinuxIC v21.iso file to the virtual machine, run the following commands in the virtual machine:

a.      Copy the contents of the ISO to the virtual machine.

cp -R <cdrom mount point> /usr/src/linuxic-2.1

b.     Copy the dkms.conf file to /usr/src/linuxic-2.1

cp /usr/src/linuxic-2.1/scripts/dkms.conf /usr/src/linuxic-2.1/

c.      Add these four extra lines to /etc/modprobe.conf.

alias scsi_hostadapter1 vmbus

alias scsi_hostadapter2 blkvsc

alias scsi_hostadapter3 storvsc

alias scsi_hostadapter4 netvsc

 

3.      Install the drivers through DKMS.

dkms add -m linuxic -v 2.1

dkms build -m linuxic -v 2.1

dkms install --force -m linuxic -v 2.1

reboot

 

4.      After the reboot, confirm that the drivers have loaded successfully by executing the following command:

# /sbin/modinfo vmbus

filename:       /lib/modules/2.6.18-194.el5/kernel/drivers/vmbus/vmbus.ko

version:        2.1.25

license:        GPL

depends:

vermagic:       2.6.18-194.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1

parm:           vmbus_irq:int

parm:           vmbus_loglevel:int

The kernel can now be updated without affecting the currently installed kernel modules.

 

To use DKMS with Novell SUSE Linux Enterprise Server 10 or 11:

 

1.      Upgrade the module-init-tools package, and install the latest DKMS package. The module-init-tools package can be downloaded through YaST or from the Novell web site.

rpm -U module-init-tools-3.4-70.7.1.x86_64.rpm

wget http://linux.dell.com/dkms/permalink/dkms-2.1.1.2-1.noarch.rpm

rpm -ivh dkms-2.1.1.2-1.noarch.rpm

 

2.      Copy the Linux Integration Services source code to the virtual machine. After attaching the LinuxIC v21.iso file to the virtual machine, run the following commands in the virtual machine:

a.      Copy the contents of the ISO to the virtual machine.

cp -R <cdrom mount point> /usr/src/linuxic-2.1

b.     Copy the dkms.conf file to /usr/src/linuxic-2.1

cp /usr/src/linuxic-2.1/scripts/dkms.conf /usr/src/linuxic-2.1/

c.      Edit /etc/modprobe.d/unsupported-modules to read:

allow_unsupported_modules 1

 

3.      Install the drivers through DKMS.

dkms add -m linuxic -v 2.1

dkms build -m linuxic -v 2.1

dkms install --force -m linuxic -v 2.1

4.      Modify /boot/grub/menu.lst and /etc/fstab

a.      Create a backup of the original files:

cp /boot/grub/menu.lst /boot/grub/menu.lst/bak

cp /etc/fstab /etc/fstab.bak

b.     As the root user, edit /etc/fstab and make the following changes:

c.      Sections that begin with /dev/disk/* should be replaced by their /dev/hd* equivalents, so that /etc/fstab looks similar to the following example:

/dev/hda1 swap                swap       defaults              0 0

/dev/hda2 /                   ext3       acl,user_xattr        1 1

d.     Save the changes to /etc/fstab.

e.     As the root user, edit /boot/grub/menu.lst and modify the kernel options as follows:

root=/dev/hda2 resume=/dev/hda1

f.       Save the changes to /boot/grub/menu.lst

g.      Reboot the virtual machine.

 

 

5.      After the reboot, confirm that the drivers have loaded successfully by executing the following command:

# /sbin/modinfo vmbus

filename:      /lib/modules/2.6.16.60-0.54.5-smp/kernel/drivers/vmbus/vmbus.ko

version:       2.1.25

license:       GPL

depends:

vermagic:      2.6.16.60-0.54.5-smp SMP gcc-4.1

parm:          vmbus_irq:int

parm:          vmbus_loglevel:int

6.      Before a kernel update, restore the original /etc/fstab and /boot/grub/menu.lst files, then reboot the VM.

# cp /etc/fstab.bak /etc/fstab

# cp /boot/grub/menu.lst.bak /boot/grub/menu.lst

# reboot

7.      Upgrade the kernel and the kernel-source package, then reboot.

8.      After the reboot into the new kernel, follow the directions in the User’s Guide to modify /etc/fstab and /boot/grub/menu.lst:

a.      As the root user, edit /etc/fstab and make the following changes:

b.     Sections that begin with /dev/disk/* should be replaced by their /dev/hd* equivalents, so that /etc/fstab looks similar to the following example:

/dev/hda1 swap                swap       defaults              0 0

/dev/hda2 /                   ext3       acl,user_xattr        1 1

c.      Save the changes to /etc/fstab.

d.     As the root user, edit /boot/grub/menu.lst and modify the kernel options as follows:

root=/dev/hda2 resume=/dev/hda1

e.     Save the changes to /boot/grub/menu.lst

f.       Reboot the virtual machine.