The latest range of Red Hat distributions is still being shipped with a 2.4.20, 2.4.21, or 2.4.22 kernel. Our research has proven that these kernels - in fact any 2.4 kernel prior to 2.4.24 - has serious SCSI issues that can negatively impact tape operations.
The only way to fix this is to update your system to a 2.4.24/25/26/27/28/29 kernel (we recommend 2.4.29). We know that users and admins are worried about what happens if you run a non-Red Hat kernel on a Red Hat system. One thing that many people don't realize is that you can have multiple kernels on a Linux system. This document describes adding a newer kernel to a Red Hat system while retaining their antique kernel.
Install the kernel sources for your distribution Download 2.4.29 from kernel.org
For 2.6 environments, we recommend 2.6.23.1 Extract
it into /usr/src on your system (where we mention 2.4, replace it with 2.6 if you are using a 2.6
kernel) Remove the linux-2.4 link:
rm ./linux-2.4
Create a fresh link:
ln -s linux-2.4.29 linux-2.4
Copy a config file from the distro's default source Tree. There are many to choose from. Look into the RH kernel source for a directory called "configs". For SuSE, look in "arch/i386/" for defconfig. For other distros, please check with your distribution provider for the location of their defualt kernel config file. For this example, we'll use the kernel-2.4.20-i386.config version:
cp linux-2.4.20-8/configs/kernel-2.4.20-i386.config linux-2.4/.config
CD into the new kernel directory:
cd linux-2.4
Update the .config file using the oldconfig option:
make oldconfig
You will only be asked about new options since the old kernel was defined. We suggest that you accept the default and just hit ENTER when prompted. Build the kernel and driver modules:
make dep && make bzImage && make modules modules_install
You should probably go grab a cup of coffee or whatever you favorite beverage is. When the build is complete, you will have a new kernel and its associated device driver modules. Copy the kernel to the standard RH location (this does not affect your running kernel):
cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.4.29
cp System.map /boot/System.map-2.4.29
Build the initial RAMDISK image:
For Red Hat Systems: mkinitrd /boot/initrd-2.4.29.img 2.4.29
For SuSE-based Systems: mkinitrd -k 2.4.29 -i initrd-2.4.29
Update the GRUB bootloader to include your new kernel. The Config file is /etc/grub.conf on Red Hat-based systems and /boot/grub/menu.lst on SuSE-based systems. For this we recommend that you copy an existing entry and modify it to use your new kernel info:
OLD ENTRY:
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
NEW ENTRY:
title Backup Linux (2.4.29)
root (hd0,0)
kernel /vmlinuz-2.4.29 ro root=LABEL=/
initrd /initrd-2.4.29.img
Note: If you use LILO as your boot loader, please refer to the lilo and lilo.conf man pages
for information on the changes required. Don't forget to run lilo before rebooting.
Take a Deep Breath and Smile! At this point, you are ready to reboot into your new kernel. Again, nothing that we have done here has had any effect on your existing, supported RH or SuSE kernel. Once you reboot, both your original RH kernel and the new 2.4.29 Backup Linux kernel will be displayed in the boot menu. Now, you can run your backups with the satisfaction of knowing that silly, outdated SCSI bugs won't interfere with its proper operation.
In the event that you do run into a problem that requires Red Hat's assistance, simply reboot back into the original kernel.
NOTE: While we have done our best to make sure that the information presented is correct, we do not guarantee that it will do anything more than waste CPU cycles. If you are not comfortable with building a Linux kernel, please contact a Linux consultant for assistance