needs to be streamlined for quicker access to your operating system
you really use. Kernel hacking
isn't difficult, but it is risky
and it's not recommended for users new to Linux
. A mistake could make your operating system and data within inaccessible
. The most critical aspect of configuring and compiling the kernel
is the preparation beforehand - let's get started and you'll see what i mean.
Before you even think about attempting it, make sure you know the make and specifications of your hardware
. Writing a comprehensive list of all your hardware isn't a bad idea at all
. Once your satisfied you've got the skinny
on your system, it's time to backup
if you've had a few too many beers
and are doing this on impulse *sheepish grin*. It's also essential
you have development tools already in place:
Roll Up Your Sleeves
If you have rpm kernel-source and headers, go ahead and install
them. With tar.gz files
, unpack them into /usr/src/linux-kernel version
and make a symlink
from /usr/src/linux to the actual kernel source tree /usr/src/linux-kernel version
. In /usr/src/linux,
you can either apply a patch - using the command zcat /patch_location/ patchname.gz | patch -p0 -e
Type make mrproper
up the kernel source tree. To initiate the kernel configuring stage proper, type make xconfig
, make menuconfig
or the text-based make config
. I heartily recommend make xconfig. This stage is where you design/optimize the kernel for your particular system and computing
needs. With each kernel feature, you will be presented with a y for "yes-i need this feature", n for no-"i don't need this feature or my system doesn't support this feature" and sometimes an m for modular
. It's generally recommended one makes a kernel as modular as possible. This way, instead of having the software for a device
always in memory
, the module in question is loaded
only when the device's services are requested.
Kernel Configuring Tips:
- If you have an AMD processor, select the Pentium or Pentium Pro option.
- If you have a system greater than a 386, select no to math emulation.
- Networking support
If you want to connect with SLIP, PPP, term, and so on to dial up for internet access, you need to say yes. Even if your system isn't connected to a real network, the X window system and other packages need networking support.
- Say yes to TCP/IP networking.
- Standard (minix) - Minix filesystems is as outdated as Foghat, but a few rescue disks use it which may or may not be useful to you.
- ISO9660 - Which entails most CD-ROMs. If you want to use your cdrom with Linux, it's a good idea to say yes and compile it with the kernel.
Double Check Your Configuration
Finished configuring your kernel? Fire up your favorite text editor
and view the .config
file in your current directory
. The .config file was created when you executed the make xconfig command
and documents your selections among other more esoteric
settings. If you see something you dont want, reconfigure the kernel as described or edit
the file if you know your stuff. Now, still from the /usr/src/linux directory run make dep; make clean
from the command line prompt which as you guessed, runs make dep
and make clean
consecutively. Keep an eye out for errors. If you hear sirens or see smoke coming out of your box, things aren't copeseptic
Compile the Kernel
Time to compile the kernel source. Type make bzImage
and relax. Depending on the size of the kernel and brawn
of your particular system
, you may have enough time to watch the football double header
or do a load of laundry
. Once this is complete and there are no errors, cd
over to /usr/src/linux/arch/i386/boot and and confirm there is the kernel executable
file called bzImage is there. Copy bzImage to the /boot
Let LILO in on it
It's important that we now alter LILO to reflect the changes we made. Open lilo.conf
found in the /etc
directory and create a new section for the newly configured kernel. We won't abandon the old kernel because we may need to use it in case our new kernel panics
. The easiest way is to mimic
the original entry
, and change the name of the image
to /boot/bzImage and the label of the old kernel image to something reasonable like linux.save or whatever.
Here's what lilo.conf should look like:
Now, at bootup, press the TAB
button and you will be presented with a choice. But please, do NOT bootup yet!
The kernel you just compiled and the old kernel, which is linux.save in this instance. Once you've made these changes to lilo.conf, exit the vim
and type /sbin/lilo -v
to seal the deal.
Make Your Modules
It's time to create the module executables and install them. Mosey on down to /lib/modules street and mv
the old kernel module versions to a name that's easily identifiable-say 2.2.14.save. After your done that, enter make modules; make modules_install
at the prompt
, and visit your new modules in /lib/modules/kernel version number
. Type /sbin/depmod -a
which in essence instructs
the kernel to load the modules in a set order
Gut Check Time!
Time to reboot
your system. If there are any failures during the boot up process
, you'll need to fine tune
the kernel further. The text might whirl by fast, so us the Pause/Break button to slow the text so you can jot the error down. If you get an outright kernel panic, reboot and at the LILO prompt and select the old kernel. See, it was a good idea to save the old image!