Assignment 7 - Linux Kernel Upgrade
INLS 183 - Distributed Systems (new window)
November 4, 2002
Send comments to:

Assignments Index Page

Introduction / Background

Kevin Lanning and I attempted a kernel upgrade on Cyan last week (10/27/02) but it was unsuccessful (see Cyan script). We did get grub edited and everything seemed to install correctly. However, when we tried to boot into the new kernel the boot would fail at the "uncompressing Linux" stage of the boot process. We also got an error about a missing SCSI driver and this turned out to have happened to Dr. Newby as well.

We decided to try another kernel upgrade, this time on Kevin's Linux laptop which does not require a SCSI driver like Cyan did. We were also unsuccessful on this second attempt.

After this kernel upgrade on the laptop failed, we returned to the Cyan kernel upgrade thinking this one closer to success. Over a couple of revisits, we made configuration changes via "make menuconfig" including adding AIC7xxx SCSI driver support, ext3 filesystem support, and 3Com 3cxxx network card support. After rebuilding the kernel with these configuration settings in place, the Linux 2.4.19 kernel successfully loaded and seems to be mostly working on Cyan.

We didn't have a specific reason to upgrade the kernel other than our interest in trying something the Red Hat Kernel "HowTo" describes as very difficult.

Installation and Troubleshooting Narrative (see laptop script)

We previously tried to install on Cyan and everthing seemed to be going well. We made a new initrd img ($ /sbin/mkinitrd initrd 2.4.19.img 2.4.19), copied the initrd and kernel images (bzImage) into /boot directory, and made the sym links required. Then, we edited /etc/grub.conf file and added a listing for the new kernel, but could not get it to boot. This sounds quick but it actually took about 6 hours due to confusion about the need for an initrd (see p. 134 in Stanfield & Smith) and some other problems. When we attempted to boot, we got an error indicating we were missing the AIC7xxx SCSI driver module. Then, when we would try to boot the boot failed at "uncompressing Linux."

Due to the AIC7xxx error, we decided to try the next kernel install on an IBM 380XD laptop to avoid the SCSI driver problem. This kernel upgrade failed as well, so we returned to Cyan where we seemed closer to success, made a couple more rounds of configuration changes adn finally succeeded in installing and booting into the new 2.4.19 kernel.

We used the old tar file which originally was downloaded as bz2. We rezipped it with gzip and copied it to /usr/src where we unzipped and decompress it.

$ tar zxf linux-2.4.19.tar.gz

That created a folder named Linux-2.4.19. We renamed that file "linux." On this install, we did not create the sym link from linux-2.4.19.tar to /usr/src/linux because we were already in /usr/src/linux.

In the previous Cyan install attempt, we had unzipped and detarred into /usr/bin/linux-2.4.19, copied the bzImage, vmlinux and files from their locations within linux-2.4.19 to /boot. We then created symlinks to the 2.4.19 kernel image (vmlinuz-2.4.19; bzImage renamed) and files.

This time (on the laptop) we decided to install in /usr/src since linux kernel source "wants to be in" /usr/src/linux. A couple of things made us think this would be okay to do even though the README file explicitly said NOT to use the /usr/src/linux area to install the kernel, warning that kernel headers used by library header files might be altered by kernel version specific headers:

First, there was no pre-existing linux directory or file in /usr/src (we figured this probably would be created when the tar file was decompressed).

Second, there was a /usr/src/redhat directory which we thought might be from the original kernel installation and that would not be effected by installing the 2.4.19 kernel in /usr/src. We left that directory alone and from what we could see during the 2.4.19 build, it left that directory alone as well.

Third, there is contradictory installation information regarding this kernel installation on p. 255 of Stanfield & Smith.

1) > cd /usr/src/linux
> root /usr/src/linux> make mrproper

2) root /usr/src/linux> make menuconfig (we did not change anything)

3) Then, we began to build the kernel.

root /usr/src/linux> make dep (took about 5 minutes)

4) root /usr/src/linux> make bzImage (took about 25 minutes)

5) root /usr/src/linux> make modules (took about a minute)

6) root /usr/src/linux> make modules install (instead of make modules_install per gbn tip).

This last command copied the kernel, bzImage, from, in our case, /usr/src/linux/arch/i386/boot to /boot, renamed bzImage to vmlinuz-2.4.19, copied from the /usr/src/linux directory to /boot/, removed the old link, removed the old vmlinuz link and then created two new sym links to and to vmlinuz. Toward the end of this step we were concerned by one message which indicated that the kernel was too big to run in /boot. This caused us to be concerned that on this try we had deleted the .tar file and not create a sym link from /usr/src/linux to the linux-2.4.19.tar file (per gbn's step 4 of kernelsteps.txt) because there was no tar file.

10) We edited GRUB, but did not create a new .img file as we had on Cyan. Instead, we decided to use the old .img file as was suggested might work by the older LILO boot loader configuration instructions that were readily available in our text and in the Linux HOWTo. Our edit included the following:

title Red Hat Linux (2.4.19)
kernel /vmlinuz-2.4.19 ro  root=/dev/hda2
initrd /initrd-2.4.18-3.img
11) After our second (laptop) kernel upgrade attempt failed, we consulted Dr. Newby via email; he offered some suggestions for additional grub configuration settings. I reran "make menuconfig" remotely that evening and located and added SCSI AIC7xxx driver support, ext3 filesystem support, and Adaptec network card support. I then repeated steps to build the kernel (make dep; make bzImage; make modules; make modules install). I rebooted Cyan the next evening before class to test the new configuration and the kernel loaded!...very close now. Remote login attempts with the new kernel loaded failed indicating Cyan was not on the network. Class discussions revealed that we needed to enable support for 3Com 3cxxx network card (rather than an Adaptec network card). Kevin and I reconfigured and rebuilt the kernel one last time after class. The 2.4.19 kernel booted successfully and is now operational on Cyan.

Instructions for Use

You should be able to select which kernel you want to boot at the GRUB boot screen.

The 2.4.19 Linux kernel does seem fully functional; the Cyan yippee.txt is a brief script that confirms it is running. We are seeing a couple of errors at boot up time for the sound card and the floppy drive. Since this is a server, we probably will not pursue the sound card error (though its probably just a matter of adding support for the appropriate sound card in the kernel configuration). However, due to the need to be able to boot a compromised server from a boot disk, we will look into the floppy drive error. The prior version was 2.4.18-3; this is verified in the Cyan script in paragraph one above.
nbsp; Send comments to: