Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapter 3. Kernel Upgrades

Make sure to install the latest kernel where all proprietary drivers, if applicable, are certified and supported. Note that proprietary drivers are often installed under /lib/modules/<kernel-version>/kernel/drivers/addon. For example, the EMC PowerPath drivers can be found in the following directory when running the 2.4.21-32.0.1.ELhugemem kernel:
$ ls -al /lib/modules/2.4.21-32.0.1.ELhugemem/kernel/drivers/addon/emcpower
total 732 
drwxr-xr-x    2 root     root         4096 Aug 20 13:50 . 
drwxr-xr-x   19 root     root         4096 Aug 20 13:50 .. 
-rw-r--r--    1 root     root        14179 Aug 20 13:50 emcphr.o 
-rw-r--r--    1 root     root         2033 Aug 20 13:50 emcpioc.o 
-rw-r--r--    1 root     root        91909 Aug 20 13:50 emcpmpaa.o 
-rw-r--r--    1 root     root       131283 Aug 20 13:50 emcpmpap.o 
-rw-r--r--    1 root     root       113922 Aug 20 13:50 emcpmpc.o 
-rw-r--r--    1 root     root        75380 Aug 20 13:50 emcpmp.o 
-rw-r--r--    1 root     root       263243 Aug 20 13:50 emcp.o 
-rw-r--r--    1 root     root         8294 Aug 20 13:50 emcpsf.o 
Therefore, when you upgrade the kernel you must ensure that all proprietary modules can be found in the right directory so that the kernel can load them. To check which kernels are installed, run the following command:
$ rpm -qa | grep kernel
To check which kernel is currently running, execute the following command:
$ uname -r
For example, to install the 2.4.21-32.0.1.ELhugemem kernel, download the kernel-hugemem RPM and execute the following command:
# rpm -ivh kernel-hugemem-2.4.21-32.0.1.EL.i686.rpm


Never upgrade the kernel using the RPM option '-U'. The previous kernel should always be available if the newer kernel does not boot or work properly.
To make sure the right kernel is booted, check the /etc/grub.conf file if you use GRUB and change the "default" attribute if necessary. Here is an example:
title Red Hat Enterprise Linux AS (2.4.21-32.0.1.ELhugemem)
	root (hd0,0) 
	kernel /vmlinuz-2.4.21-32.0.1.ELhugemem ro root=/dev/sda2
	initrd /initrd-2.4.21-32.0.1.ELhugemem.img 
title Red Hat Enterprise Linux AS (2.4.21-32.0.1.ELsmp) 
	root (hd0,0) 
	kernel /vmlinuz-2.4.21-32.0.1.ELsmp ro root=/dev/sda2
	initrd /initrd-2.4.21-32.0.1.ELsmp.img
In this example, the "default" attribute is set to "0" which means that the 2.4.21-32.0.1.ELhugemem kernel will be booted. If the "default" attribute would be set to "1", then 2.4.21-32.0.1.ELsmp would be booted. After you installed the newer kernel reboot the system. Once you are sure that you do not need the old kernel anymore, you can remove the old kernel by running:
# rpm -e <OldKernelVersion>
When you remove a kernel, you do not need to update /etc/grub.conf.