Here are more detailed Instructions for Compiling the Kernel

  1. Log in as root, and mount the CD you created with the patches on it.

    mount /dev/cdrom

  2. I like to work from one place, so I just copy everything to /usr/src

    cp -r /mnt/cdrom/* /usr/src

  3. Extract the Kernel source

    cd /usr/src

    tar -xzf ./linux-2.4.20.tar.gz

  4. Copy Mark's patch into the /usr/src/linux-2.4.20 directory, then unpack it

    cp ./patch-2.4.21-pre5-ac3-mhp3.bz2 ./linux-2.4.20/

    cd linux-2.4.20

    bunzip2 ./patch-2.4.21-pre5-ac3-mhp3.bz2

  5. Apply the patch

    patch -p1 < patch-2.4.21-pre5-ac3-mhp3

  6. Remove the /usr/src/linux-2.4.20/include/asm directory and link it to /usr/src/linux-2.4.20/include/asm-i386

    rm -rf ./include/asm

    ln -s ./include/asm-i386 ./include/asm

    (don't know yet why I need to do this, but things don't work if I don't)

  7. Compile the Kernel: (see the howto at for an explanation of these steps)

    make clean

    make mrproper

    make menuconfig

    (optional) Once you are in menuconfig, go to the bottom of the list and select "Load an Alternate configuration from a file" In the dialog that opens up, type /usr/src/rob4.config

    Note - If you don't want to use my config, just make sure you enable ACPI, and ISA PnP. I have also enabled PnP BIOS in this config. these are needed for the PCMCIA to work properly. (I am not 100% sure PnP BIOS is needed, but everything works great with it there) You will also need to enable support for the various hardware devices (sound, ethernet, any pcmcia cards you have, etc...)

    press <esc> <esc> when you are done making changes in menuconfig, and say yes to save your configuration.

    make dep

  8. Give a unique name to your new Kernel

    vim /usr/src/linux-2.4.20/Makefile and change the EXTRAVERSION entry to something you will recognise

    press <alt> i to insert text, when you finish press <esc>, then the colon : key, then wq <enter> to save your changes

  9. Make your Kernel image, and your modules

    make bzImage

    make modules

    make modules_install

  10. Copy the new kernel image to the boot partition

    cp ./arch/i386/boot/bzImage /boot/bzImage.2.4.21-<Your Kernel Name> (whatever you put in EXTRAVERSION [step 8])

  11. Copy .config to /boot

    cp /usr/src/linux-2.4.20/.config /boot/config-2.4.21-<Your Kernel Name>

  12. Make an Initial Ramdrive (Optional)

    cd /boot

    mkinitrd ./initrd-2.4.21-<Your Kernel Name>.img 2.4.21-<Your Kernel Name>

    If you are unsure exactly what <Your Kernel Name> is, have a look in /lib/modules, there will be a directory there with the exact kernel name you should use

  13. Edit /etc/grub.conf to boot with your new kernel

    vim /etc/grub.conf

    Add the entry for your new Kernel, it should look something like this:

    title Red Hat Linux (2.4.21-<Your Kernel Name>)
            root (hd0,1)
             kernel /bzImage-2.4.21-
    <Your Kernel Name> ro root=LABEL=/ hdc=ide-scsi
                 initrd /initrd-2.4.21-<Your Kernel Name>.img

    root(hd0,1): corresponds to /dev/hda2 which is my /boot partition --- Yours may be different. look at the entries already in grub.conf for your particular circumstances

<Back to main page>