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