This appendix deals directly with upgrading a box installed with a stock Red Hat Intel 6.2 release to the kernel errata released on 14 April 2000.
First, download the appropriate files indicated by the errata: http://www.redhat.com/support/errata/RHBA-2000013-01.html
For this example, it is assumed that the kernel version to be used will be 2.2.14-6.0.1smp and that scsi exists on the system (thus the need for a initrd.)
Save the files needed to a temporary directory. I usually keep an errata directory in /usr/local to download updates into (or /home/ftp/pub if the machine might be serving them out).
So /usr/local/62errata should have the following files:
kernel-2.2.14-6.0.1.i686.rpm
kernel-doc-2.2.14-6.0.1.i386.rpm
kernel-headers-2.2.14-6.0.1.i386.rpm
kernel-ibcs-2.2.14-6.0.1.i386.rpm
kernel-smp-2.2.14-6.0.1.i686.rpm
kernel-source-2.2.14-6.0.1.i386.rpm
kernel-utils-2.2.14-6.0.1.i386.rpm
Install the files with RPM (when doing a kernel upgrade, always install files).
[root@blippy 62errata]# rpm --force -ivh kernel-2.2.14-6.0.1.i686.rpm kernel-smp-2.2.14-6.0.1.i686.rpm
And upgrade the other non-kernel errata if desired.
[root@blippy 62errata]# rpm -Uvh kernel-headers-2.2.14-6.0.1.i386.rpm kernel-doc-2.2.14-6.0.1.i386.rpm \
> kernel-ibcs-2.2.14-6.0.1.i386.rpm kernel-source-2.2.14-6.0.1.i386.rpm kernel-utils-2.2.14-6.0.1.i386.rpm
Along with the pcmcia package if needed.
Then check the files in /boot.
[root@blippy /root]# ls -l /boot
lrwxrwxrwx 1 root root 26 Apr 20 16:20 System.map -> System.map-2.2.14-6.0.1smp
-rw-r--r-- 1 root root 203645 Mar 7 21:12 System.map-2.2.14-5.0
-rw-r--r-- 1 root root 214981 Mar 7 21:06 System.map-2.2.14-5.0smp
-rw-r--r-- 1 root root 202447 Apr 14 10:49 System.map-2.2.14-6.0.1
-rw-r--r-- 1 root root 213784 Apr 14 10:43 System.map-2.2.14-6.0.1smp
-rw-r--r-- 1 root root 512 Mar 3 19:11 boot.4800
-rw-r--r-- 1 root root 4568 Feb 2 17:03 boot.b
-rw-r--r-- 1 root root 612 Feb 2 17:03 chain.b
-rw-r--r-- 1 root root 389960 Mar 3 19:11 initrd-2.2.14-5.0.img
-rw-r--r-- 1 root root 390122 Mar 3 19:11 initrd-2.2.14-5.0smp.img
-rw-r--r-- 1 root root 390222 Apr 20 16:23 initrd-2.2.14-6.0.1.img
-rw-r--r-- 1 root root 390427 Apr 20 16:21 initrd-2.2.14-6.0.1smp.img
-rw-r--r-- 1 root root 0 Apr 14 10:19 kernel.h
drwxr-xr-x 2 root root 12288 Mar 3 19:01 lost+found
-rw------- 1 root root 49664 Apr 20 16:24 map
lrwxrwxrwx 1 root root 24 Apr 20 16:19 module-info -> module-info-2.2.14-6.0.1smp
-rw-r--r-- 1 root root 11773 Mar 7 21:12 module-info-2.2.14-5.0
-rw-r--r-- 1 root root 11773 Mar 7 21:06 module-info-2.2.14-5.0smp
-rw-r--r-- 1 root root 11773 Apr 14 10:49 module-info-2.2.14-6.0.1
-rw-r--r-- 1 root root 11773 Apr 14 10:43 module-info-2.2.14-6.0.1smp
-rw-r--r-- 1 root root 620 Feb 2 17:03 os2_d.b
-rwxr-xr-x 1 root root 1615706 Mar 7 21:12 vmlinux-2.2.14-5.0
-rwxr-xr-x 1 root root 1723324 Mar 7 21:06 vmlinux-2.2.14-5.0smp
-rwxr-xr-x 1 root root 1622273 Apr 14 10:49 vmlinux-2.2.14-6.0.1
-rwxr-xr-x 1 root root 1729888 Apr 14 10:43 vmlinux-2.2.14-6.0.1smp
lrwxrwxrwx 1 root root 23 Apr 20 16:20 vmlinuz -> vmlinuz-2.2.14-6.0.1smp
-rw-r--r-- 1 root root 622249 Mar 7 21:12 vmlinuz-2.2.14-5.0
-rw-r--r-- 1 root root 647013 Mar 7 21:06 vmlinuz-2.2.14-5.0smp
-rw-r--r-- 1 root root 637961 Apr 14 10:49 vmlinuz-2.2.14-6.0.1
-rw-r--r-- 1 root root 662586 Apr 14 10:43 vmlinuz-2.2.14-6.0.1smp
System.map and module-info should both be pointing at the appropriate file for your kernel, in this case the ones for 2.2.14-6.0.1smp. You can use the "ln -s -f <existing file> <link name>" command to redirect the links if needed.
[root@blippy /root]# cd /boot
[root@blippy /boot]# ln -s -f System.map-2.2.14-6.0.1smp System.map
Now to create a initrd file. If you don't have a scsi system then you probably can skip this step. If you are not sure, check the /boot directory . . . If you have an initrd, you will need a new one.
The mkinitrd command takes arguments in the format
mkinitrd </path/to/file/to/create> <kernel-version-to-create>
Since you will want an initrd to use with both the smp kernel and the uniprocessor kernel (the latter in the case of emergencies or debugging) the mkinitrd command will need to be run twice, slightly differently:
mkinitrd /boot/initrd-2.2.14-6.0.1smp.img 2.2.14-6.0.1smp
mkinitrd /boot/initrd-2.2.14-6.0.1.img 2.2.14-6.0.1
Most errors at this point are usually caused by typos, the wrong kernel being specified, or the loop kernel module not loaded. In the latter case, use
modprobe loop
and run the mkinitrd commands again.
Now comes the fun of editing the configuration file for LILO.
Here's the original /etc/lilo.conf file on my system:
boot=/dev/ida/c0d0
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.2.14-5.0smp
label=linux
initrd=/boot/initrd-2.2.14-5.0smp.img
read-only
root=/dev/ida/c0d0p5
optional
image=/boot/vmlinuz-2.2.14-5.0
label=linux-up
initrd=/boot/initrd-2.2.14-5.0.img
read-only
root=/dev/ida/c0d0p5
optional
The /dev/ida/c0d0p5 is for the compaq smart array raid controller in this particular system. Most people will have /dev/hda# or /dev/sda#.
Here's the modified lilo.conf file. Basically, just copy the original two image stanzas and edit the version numbers for the kernels.
boot=/dev/ida/c0d0
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.2.14-6.0.1smp
label=linux
alias=l
initrd=/boot/initrd-2.2.14-6.0.1smp.img
read-only
root=/dev/ida/c0d0p5
image=/boot/vmlinuz-2.2.14-6.0.1
label=linux-up
initrd=/boot/initrd-2.2.14-6.0.1.img
read-only
root=/dev/ida/c0d0p5
image=/boot/vmlinuz-2.2.14-5.0smp
label=linux-old
initrd=/boot/initrd-2.2.14-5.0smp.img
read-only
root=/dev/ida/c0d0p5
optional
image=/boot/vmlinuz-2.2.14-5.0
label=linux-up-old
initrd=/boot/initrd-2.2.14-5.0.img
read-only
root=/dev/ida/c0d0p5
optional
Then run
/sbin/lilo -v
to write the changed lilo configuration to the LILO boot loader. I got the following output.
[root@blippy /root]# /sbin/lilo -v
LILO version 21, Copyright 1992-1998 Werner Almesberger
Reading boot sector from /dev/ida/c0d0
Merging with /boot/boot.b
Boot image: /boot/vmlinuz-2.2.14-6.0.1smp
Mapping RAM disk /boot/initrd-2.2.14-6.0.1smp.img
Added linux (alias l) *
Boot image: /boot/vmlinuz-2.2.14-6.0.1
Mapping RAM disk /boot/initrd-2.2.14-6.0.1.img
Added linux-up
Boot image: /boot/vmlinuz-2.2.14-5.0smp
Mapping RAM disk /boot/initrd-2.2.14-5.0smp.img
Added linux-old
Boot image: /boot/vmlinuz-2.2.14-5.0
Mapping RAM disk /boot/initrd-2.2.14-5.0.img
Added linux-up-old
/boot/boot.4800 exists - no backup copy made.
Writing boot sector.
That's it. . . time to reboot and try out the new kernel. It should automatically load without intervention.