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

# wget ‘’

# 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 ‘’

# make menuconfig

Now scroll all the way down and select load kernel configuration and press enter to select the .config.

# make

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
root= /dev/hda4
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 /boot/

# rm /boot/

# ln -s /boot/ /boot/

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- rc.modules-2.6.31-pdg

# ln -s /etc/rc.d/rc.modules-2.6.31-pdg /etc/rc.d/rc.modules

# lilo

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 🙂