This is the way I did it, and hopefully should work for you as well.
Open terminal and login as root [or if you’d prefer, use sudo in every step.]
# cd /usr/src
# tar xvfj linux-2.6.31.tar.bz2
After it’s extracted remove the previous symlink.
# rm -rf linux
# ln -s /usr/src/linux-2.6.31 /usr/src/linux
Now your linux directory points to your newly extracted kernel tree source. If you want you can configure using your personal config, or I have uploaded my config which I will use in this guide. So you may skip next step of wgetting it. 😉
# cd /usr/src/linux && wget ‘http://www.sigmirror.com/files/31573_su3ht/.config’
# make menuconfig
Now scroll all the way down and select load kernel configuration and press enter to select the .config.
This will take a while, meanwhile open another tab and configure lilo.
# nano /etc/lilo.conf
Scroll all the way down and copy the existing linux entry. Just change the part which says /boot/vmlinuz to /boot/bzImage and then add another line just below it called initrd. Here’s my entry:
image = /boot/bzImage
initrd = /boot/initrd.gz
label = Linux
Remember to replace /dev/hda4 with your own root partition. Yes yes, I know we haven’t created an initrd image yet. Patience! Just save and exit for now.
Now that make is over run:
# make modules_install
# cp arch/i386/boot/bzImage /boot/bzImage
# cp System.map /boot/System.map.new
# rm /boot/System.map
# ln -s /boot/System.map.new /boot/System.map
You may copy over the config file to /boot but I see now use for that and hence I skipped it. Hey as long as it works, eh? 😉
Anyways, now for the next step, you are own your own since it depends on what partition type you are using. I use ext4 throughout and have no separate partition for /boot and hence this is how I generated my initrd image. Please refer to /boot/README.initrd file for details!
# mkinitrd -c -k 2.6.31-pdg -m ext4 -f ext4 -r /dev/hda4
# cd /etc/rc.d
# rm rc.modules
# cp rc.modules-18.104.22.168-smp rc.modules-2.6.31-pdg
# ln -s /etc/rc.d/rc.modules-2.6.31-pdg /etc/rc.d/rc.modules
If you get a warning about LBA32 just add “lba32” in your lilo.conf and re-run lilo. And now reboot into your new kernel!
Good Luck 🙂