How to Compile 2.6 kernel for RedHat
Last Updated: Mon Feb 23 14:47:55 EST 2004
The latest version of this document can be found at:
Download the latest version of the kernel and any patches. This documentation
is done with linux-2.6.3, but look for later versions.
Also take a look at http://www.codemonkey.org.uk/post-halloween-2.5.txt
This has some useful hints on some of the changes needed.
Download the latest version of module-init-tools
[module-init-tools-3.0-pre10.tar.gz] and modutils-2.4.21-2x.src.rpm
Install module-init-tools. This will replace depmod [/sbin/depmod] and
tar -zxvf module-init-tools-3.0-pre10.tar.gz cd
module-init-tools-3.0-pre10 ./configure --prefix=/sbin
Install modutils-2.4.21-23.src.rpm. You'll may get warnings about user
rusty and group rusty not existing. Also, yes, you'll have to force the
install. If you don't do these steps for both Redhat 9 and Redhat 8, you'll
have problems with the make modules_install.
rpm -i modutils-2.4.21-23.src.rpm
rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec
rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.21-23.i386.rpm
Install and configure the kernel. Do NOT use the /usr/src/linux area!
Reference the README. I put my files in /home/src/kernel/
gunzip linux-2.6.3.tar.gz tar -xvf linux-2.6.3.tar cd linux-2.6.3
If you have patches install these now:
bzip2 -dc ../patch-2.6.xx.bz2 | patch -p1
Copy the appropiate /usr/src/linux-2.4/configs [kernel-2.4.20-i686.config,
kernel-2.4.20-i686-smp.config] to .config in /home/src/kernel/linux-2.6.3
If you don't have the source configs, you can download them from here:
I've also included a file config2.6-chirico which was a 2.6 version for some
of my systems. This isn't a bad reference if you run into trouble.
Assuming you copied the appropriate kernel-2.4 config to .config, run the
following which will run through necessary questions for the 2.6 kernel. Or,
you might want to use the config2.6-chirico...this has already been run
through make oldconfig on my system, and I've answered the necessary questions
for a general system.
This is very important. Make sure you're .config has the following in it
CONFIG_EXT3_FS=y You'll run into the following error if you leave this =m
instead of =y:
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
This is because Redhat 9.0 and 8.0 user the ext3 filesystem for /boot ...
Edit the Makefile and add changes to the Extraversion is needed. Patches will
update these values as well.
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 3
EXTRAVERSION = -skim-ch6
If you come across errors here, what version of "depmod" is being picked
up in your path?
Also, if you get a module not found, say the following:
No module aic7xxx found for kernel 2.6.x
Then, in /lib/modules/2.6.x/kernel/drivers/scsi/aic7xxx/
cp aic7xxx.ko aic7xxx.o
insmod should look for aic7xxx.ko ;but, it looks for aic7xxx.o
If you still have touble, make the following change in the .config
and go back to STEP 10.
You also may want to ref
/etc/rc.sysinit needs to be modified. Look for the following line
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
and after this line enter the following:
action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
Here's my /etc/rc.sysinit for reference:
Be very careful at this step. Backup the /etc/rc.sysinit file. I didn't
need any USB support, but your configuation may need it.
Thomer [http://thomer.com/linux/migrate-to-2.6.html ] also added changes
to /etc/fstab. I did NOT have to do this. No harm in addding; you'll just
get errors when booting that it can't be mounted twice.
Check the following:
a. The new image file should be installed on boot and there should be sym
link to it. My latest kernel is 2.6.3-skim-ch6, and I got the "-skim-ch6"
from the values I put in the Makefile, so I see the following:
vmlinuz -> vmlinuz-2.6.3-skim-ch6
System.map -> System.map-2.6.3-skim-ch6
/boot/grub/grub.conf Should have been automatically updated from make
install and look something like the the following:
# grub.conf generated by anaconda
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,2)
# kernel /vmlinuz-version ro root=/dev/hda6
# initrd /initrd-version.img
title Red Hat Linux (2.6.3-skim-ch6)
kernel /vmlinuz-2.6.3-skim-ch6 ro root=LABEL=/
b. The directory /sys exists
c. You added the mount command for sys
d. CONFIG_EXT3_FS=y was used in the .config