5.8. Omkonfigurere Linux kernen

Kernen er det program, der styrer computeren. Den består af en række forskellige funktioner, og vi vil i dette afsnit diskutere, hvordan du kan omkonfigurere kernen, så den kommer til at passe bedre til din computer. Sagen er nemlig den, at den kerne, som følger med f.eks. Red Hat 6.1, indeholder en række funktioner, som du måske ikke har brug for. Ved at omkonfigurere kernen slipper du for at spilde en masse hukommelse (og måske tid). Du kan måske også mangle support for en hardware del, f.eks. USB (Universal Serial Bus). Den er netop for nylig kommet med i Linux kernen, hvorfor du kan blive nødt til at lave en ny Linux kerne.

Vores gennemgang af kernekonfiguration er overfladisk, dvs. vi vil ikke gå i detaljer med, hvad de enkelte funktioner kan, men forklare dig, hvordan en konfiguration foregår.

Et par bemærkninger omkring drivere til Linux er på sin plads. Drivere kan eksistere på to måder under Linux; som en del af kernen eller som et modul. Hvis driveren er en del af kernen, ligger den fast i hukommelsen hele tiden, men et modul indlæses først i det øjeblik, der er brug for det - ja, faktisk kan et modul også fjernes fra hukommelsen, når der ikke er brug for det længere (se afsnit 5.9). Det er klart en fordel at benytte moduler, hvis man ikke har megen hukommelse.

5.8.1. Bliv klar til at oversætte kernen

Første trin til at lave din egen kerne er at se, om du fik installeret hele kildekoden til Linux kernen. Der er to muligheder; enten fra den installations-CDROM du har, eller fra en helt ny kildetekst.

Hvis du vil installere kildekoden til kernen, så skriv

[root@linus /root]#  rpm -ivh /cdrom/RedHat/RPMS/kernel-headers-2.2.5-15.i386.rpm
[root@linus /root]#  rpm -ivh /cdrom/RedHat/RPMS/kernel-source-2.2.5-15.i386.rpm
Dette gør, at kildeteksten lægges ind i /usr/src/linux.

I øvrigt kan det tilrådes at lade /usr/src/linux være et symbolsk link til et versionsafhængigt underkatalog:

[root@linus /root]#  ls -l /usr/src/linux
lrwxrwxrwx   1 root root   11 Jan 31 12:01 linux -> linux-2.2.5
drwxr-xr-x  17 root root 1024 Jan 25 21:22 linux-2.0.36
drwxr-xr-x  15 root root 1024 Jan 31 20:45 linux-2.2.5
På denne måde er det nemt at teste forskellige versioner af Linux kernen. Antag, at du vil opgradere til kerne 2.3.1, som du henter hjem fra Internettet, dvs. nu vil du installere kildeteksten selv (uden RPM). Start med at lave et nyt katalog og et symbolsk link til det nye katalog (du skal være root).
[root@linus /root]#  rm /usr/src/linux
[root@linus /root]#  mkdir /usr/src/linux-2.3.1
[root@linus /root]#  ln -s /usr/src/linux-2.3.1 /usr/src/linux
Gå (cd) ned til /usr/src/linux og læs README. Her er forklaret, hvordan du oversætter kernen. Du bør altid også læse /usr/src/linux/Documentation/Changes, som beskriver, hvordan dit system bør være konfigureret, for at du kan oversætte kernen.

5.8.2. Oversæt Linux-kernen

For det første skal du skifte til kataloget /usr/src/linux, hvor kildeteksten til kernen er placeret. Skriv nu make xconfig. Du vil nu se et vindue som det nedenfor.

Som du kan se, er der en række punkter, som du kan konfigurere. Du kan nu trykke på "General Setup", og du vil få et vindue som nedenfor. I langt de fleste punkter i menuen kan du vælge mellem "y", "m" og "n". Vælges "y", bliver funktionen en del af kernen, mens "n" betyder, at den ikke kommer med. Hvis du vælger "m", bliver den ikke en del af kernen, men funktionen vil eksistere som et modul. Som du også kan se, er der mulighed for at få en forklaring ved at trykke på knappen "help". Når du har konfigureret kernen, trykker du på "Save and exit".

Du er nu klar til at generere en ny kerne. Der er en række skridt, som du bare skal følge. Den fjerde kommando antager, at du bruger LILO som boot-loader. Selve oversættelsen af kernen (tredje kommando) og moduler (femte kommando) kan godt tage en rum tid afhængigt af, hvor meget du har taget med, og hvor hurtig din computer er.

[root@linus /root]#  cd /usr/src/linux
[root@linus linux]#  make dep
[root@linus linux]#  make clean
[root@linus linux]#  make zlilo
[root@linus linux]#  make modules
[root@linus linux]#  make modules_install

Hvis du ikke anvender LILO, så erstat make zlilo med make bzImage, og bagefter kan du finde den nye Linux kerne i /usr/src/linux/arch/i386/boot/bzImage. Du kan teste den nye kerne ved at kopiere den til floppy og boote fra denne. Brug cp /usr/src/linux/arch/i386/boot/bzImage /dev/fd0 for at teste på denne måde. Er du tilfreds med den nye kerne, kan du kopiere kernen til /boot og rette i LILO's konfigurationsfil - læs mere i afsnit 5.13.1.

Moduler laves til kernen svarende til kernens versionsnummer under /lib/modules, dvs. for kerne 2.3.1 gemmes de i /lib/modules/2.3.1 Nu spørger du måske om, hvorfor man i det hele taget laver en kerne og så moduler. Dels kan kernen blive mindre og derfor ofte hurtigere. Men er der fejl i et modul, kan man hurtigt rette i modulets kildetekst, genoversætte koden og starte modulet påny - uden at genstarte maskinen!