Pick a Free OS

How to roll your own Linux

and interfaces that aren't used in all systems--parallel ports, various sound

cards, unused file systems and devices, PCMCIA ports, network cards and so on.

You can always recompile the Linux kernel for a particular system and hence

add functionality, or tweak it to get optimal performance. The fun part is that

you don't need to be a programmer to do this: there are automated configuration

scripts to help you out.

Three kinds of configuration scripts are available:

The standard sequential 'make config' that asks you hundreds of questions about

almost every kernel option that can be tweaked;

The 'make menuconfig' that gives you a menu-based interface to the same options;


The 'make xconfig' that gives you a graphical interface--quite like the menu-driven

'make menuconfig' in the X Window System.

But, before you set about exploring the exciting world of kernel modules, make

sure you have some necessary things with you. The first is the kernel source

code, itself. Almost all Linux distributions come with kernel source code packages.

You can install them using either the GnoRPM or KDE Package managers, or manually,

with the standard RPM tool. Just switch to the directory where the kernel source

RPMs exist and do an 'rpm -ivh kernel-source*.rpm'. This should install the

kernel source code in the /usr/src/linux-x.x.xx directory, where x.x.xx is the

version of the kernel source.

Change to the /usr/src/linux-x.x.xx directory and run 'make menuconfig'. This

makes it easier to understand what each option means before you use them. If

you're running X, just type 'make xconfig' and you'll get a GUI-based system

to do the same work, while, in the 'menuconfig' mode, you can just type '?'

to access specific comments and help about a particular option. Make sure you

read what a particular service can deliver before you plan to disable it. The

same can be done in 'xconfig' mode by using the 'Help' button.

To ensure the kernel re-mains small in size, load most options as kernel modules

rather than compiling them straight into the kernel. Do this in the 'menuconfig'

mode. A* in front of the option means it's selected; an M means it's to be loaded

as a module; and a blank means the option is not selected. In the 'xconfig'

mode, this is indicated by y (="yes"), m (="module") and

n (="no").