The kernel is easy to compile, although it seems daunting when you first do it. Configuring the kernel, selecting which drivers to include and such is actually more tedious than the compilation. If you google for "linux kernel compilation" you'll find lots of FAQs and articles. There are minor differences in compiling 2.4 and 2.6 kernels, and depending on the linux distro the final steps of updating the bootloader may be different, but in a nutshell it goes something like: download kernel source tarball usually from kernel.org ftp ftp.kernel.org then go to pub/linux/kernel and pick the version you want, put it in /usr/src/linux and extract it there. There will be a symbolic link of /usr/src/linux to the kernel version you have, need to update that if changing to new kernel, so for example rm /usr/src/linux ln -s /usr/src/linux-2.6.21.5 /usr/src/linux This make /usr/src/linux a link to the specific kernel. You would normally leave your older version kernel there in case the new one doesn't work. Before you begin, do this to save your old .config and make sure you have a clean source tree cd /usr/src/linux cp .config .config.SAVE make mrproper If you were installing speakup, at this point you would do the speakup patching of the kernel source. Then you configure the kernel, most people do make menuconfig which is ncurses menu based, but you can also do make config which is interactive text If you want to configure using your old configuration as a start and just change a few things, you can do make oldconfig This creates the .config file which the kernal makefile uses to determine which drivers to include when building the kernel, which are statically built into the kernel, which are buit as loadable modules, and possibly setting some kernel parameters for some drivers. Once the kernel is configured, you simply build it: make dep make clean make bzImage make modules That all takes quite a while, once complete you copy the compiled kernel to the boot location cp /usr/src/linux/arch/i386/boot/bzImage /boot Then install the modules make modules_install Finally update the bootloader to use the new kernel. This depends on the distro since some use lilo and others use grub etc. For example, on slackware, it uses lilo, so I would edit lilo.conf and add a new entry for the new kernel then run lilo -v to update the bootloader. You always want to leave your old kernel there, both the kernel itself and the entry in the bootloader, in case the new kernel won't boot, you need to be able to boot the new. That's it in a nutshell. There are lots of docs on the web for more detailed info. Scott said: What if you don't know how to compile a kernel