Een RedHat distributie wordt geleverd met een standaard kernel. Deze kernel kan de meest populaire hardware aan en zal dus in veel gevallen voldoen. Soms kan het echter zijn dat enkele exotische hardware die je hebt niet ondersteund wordt, ik denk hierbij aan een TV-kaart, speciale SCSI kaart, ... Hiervoor moet je dus je kernel hercompilleren. Op die manier wordt er een soort nieuwe 'command.com' (om een vergelijking met MS-DOS te trekken) voor je systeem gemaakt, met dat verschil dat hiermee je specifieke hardware ondersteund wordt.
Een andere reden die je zou kunnen aanhalen om je kernel te hercompilleren is de volgende. Aangezien de kernel van RedHat een standaard kernel is, zullen er hoogstwaarschijnlijk heel veel protocollen en hardware devices insteken die je compleet niet nodig hebt. Niet alleen maakt zo'n kernel je systeem vele trager, hij neemt ook nog eens dat oh zo kostbaar geheugen in beslag. Als je dus al iets gevorderd bent is dit je eerste taak, je kernel zo hercompilleren dat hij net nog datgene heeft wat jou systeem nodig heeft.
Nu sta je voor de belangrijke keuze welke onderdelen je wel of niet in de kernel wilt opnemen. Ik ga niet dieper ingaan op elke keuze die je kan maken, maar wel even uitleggen hoe je juist kan kiezen. Er bestaan 3 mogelijkheden. Ofwel neem je het niet in de kernel op, dan staat er N, neem je het wel in je kernel op, dan zal er Y of een '*' staan. Nu is er nog een laatste optie, en die vereist effe een kleine uitleg.
Linux kan, net zoals andere besturingssystemen, met drivers werken. Alleen noemen deze onder Linux niet drivers, maar modules. Het is nu mogelijk om bijvoorbeeld je SCSI kaart niet in de kernel in te compilleren, maar in een module te laten compilleren. Veel duidelijker is misschien het volgende voorbeeld: stel, je hebt een portable parallele Zip-Drive. Je zal deze niet altijd aansluiten op je PC en vindt het daarom nutteloos om hem in je kernel in te compilleren. Op het moment dat je hem wilt gebruiken wil je gewoon effe snel de module laden en data van of naar de drive kopieren. Dan kies je dus voor de optie 'M' bij het compilleren van je kernel. Na de compillatie zullen de modules (als je 'make modules' en 'make modules_install' hebt uitgevoerd) in de directory /lib/modules te vinden zijn. Ga daarna naar de directory van je nieuwe kernel en type daarna 'modeprobe module-name'. Hierna zal de desbetreffende module ingeladen worden in het geheugen en desnoods, de modules die nodig zijn om deze module in te kunnen laden.
Linux werkt met het systeem van experimentele en gewone kernel. De gewone kernels kenmerken zich door het even nummer achter de 2., zo is 2.0.36 een gewone kernel.
Nu is Linux echter een systeem dan continue veranderd (1 van zijn grote voordelen) en moeten er natuurlijk ook kernel versies zijn waar de programmeurs mee werken. Deze kernels kenmerken zich door een oneven nummer achter de 2., zo is 2.1.131 een experimentele kernel.
Momenteel is Linux aan kernel versie 2.2.0 (28/01/1999), de allerlaatste versie kan je steeds downloaden op ftp://ftp.be.kernel.org. Inloggen doe je met het anonymous account.
Meer informatie over het hercompilleren van je kernel kan je vinden in /usr/doc/HOWTO/Kernel-HOWTO of in de README die bij de sources van de kernel geleverd wordt. Ik raad je aan om deze instrcuties strikt op te volgen, daar je anders wel eens een foute boel kan krijgen. Vergeet ook nooit een 'make mrproper' uit te voeren als je van diezelfde versie al een kernel gecompilleerd hebt.
Een laatste punt van aandacht is de optie 'load config' of 'save config'. De config die je instelt, wordt gesaved in de file .config. Het is nu mogelijk om deze .config naar een veilige plek te kopieren als config-12-december-1999-server. Later kan je dan deze config (bij een nieuwe kernel versie) gewoon inladen en moet je enkel nog die dingen instellen die nieuw zijn, dit doe je door 'make oldconfig' in te typen. Vooral voor zij die continue mee willen zijn is dit zeker een aanrader.