8.6. Kompilering af en ny kerne

Hvorfor ønsker nogle at kompilere en ny kerne? Det er ofte ikke nødvendigt, da standardkernen leveret med Debian håndterer de fleste konfigurationer. Debian tilbyder ofte også flere alternative kerner. Så du kan først undersøge, om der er et alternativt kerneaftryk, som bedre svarer til dit udstyr. Det kan dog være nyttigt at kompilere en ny kerne for at:

8.6.1. Håndtering af kerneaftryk

Vær ikke bange for at prøve at kompilere kernen. Det er sjovt og giver indsigt.

For at kompilere en kerne på Debians måde, så skal du bruge nogle pakker: fakeroot, kernel-package, linux-source-2.6 og nogle få andre, som sandsynligvis allerede er installeret (se /usr/share/doc/kernel-package/README.gz for den fulde liste).

Denne metode vil lave en .deb af din kernekilde, og, hvis du har moduler der ikke er standard, en synkroniseret afhængig .deb også for dem. Det er en bedre måde at håndtere kerneaftryk; /boot vil indeholde kernen, System.map og en log over den aktive konfigurationsfil for kompileringen.

Bemærk at du ikke skal kompilere din kerne på Debians måde; men vi kan se at brug af pakkesystemet til at håndtere din kerne er sikkert og nemt. Du kan få dine kernekilder direkte fra Linus i stedet for linux-source-2.6, men stadig bruge kompilationsmetoden fra kernel-package.

Bemærk at du kan finde en fuldstændig dokumentation for brugen af kernel-package under /usr/share/doc/kernel-package. Dette afsnit indeholder kun en kort introduktion.

Herefter vil vi antage, at du har fri råderet over din maskine og vil udtrække din kernekilde til et sted i din hjemmemappe[19]. Vi antager også, at din kerneversion er 3.16. Sikr dig, at du er i mappen, hvor du ønsker at udpakke kernekilderne, udtræk dem via tar xf /usr/src/linux-source-3.16.tar.xz og gå til mappen linux-source-3.16, som er blevet oprettet.

Nu kan du konfigurere din kerne. Kør make xconfig hvis X11 er installeret, konfigureret og afvikles; kør make menuconfig ellers (du skal havelibncurses5-dev installeret). Tag dig tid til at læse hjælpen fra nettet og vælg omhyggeligt. Hvis i tvivl, så er det typisk bedre at inkludere enhedsdriveren (programmet som håndterer udstyrsenheder, såsom Ethernetkort, SCSI-controllere og så videre), du er usikker på. Vær omhyggelig: Andre indstillinger, ikke relateret til specifikt udstyr, skal have standardværdien, hvis du ikke forstår dem. Glem ikke at vælge Kernelmodulindlæseren i Understøttelse af modulindlæsning (det valg er ikke standard). Hvis ikke inkluderet, så vil din Debian-installation opleve problemer.

Ryd kildetræe og nulstil parametrene for kernel-package. Det gøres ved at afvikle make-kpkg clean.

Kompiler nu kernen: fakeroot make-kpkg --initrd --revision=1.0.custom kernel_image. Versionsnummeret for 1.0 kan ændres; det er kun et versionsnummer, som du kan bruge til at registrere dine kernebygninger. På samme måde kan du placere ethvert ord i stedet for custom (f.eks. et værtsnavn). Kernekompilering kan tage et stykke tid, afhængig af din maskine.

Når kompileringen er færdig, så kan du installere din tilpassede kerne som enhver pakke. Som root, udfør dpkg -i ../linux-image-3.16-subarchitecture_1.0.custom_arm64.deb. Delen subarchitecture er en valgfri underarkitektur, afhængig af hvilke kerneindstillinger du angav. dpkg -i vil installere kernen, sammen med nogle andre gode støttefiler. For eksempel vil System.map blive korrekt installeret (nyttigt til at fejlsøge kerneproblemer), og /boot/config-3.16 vil blive installeret, indeholdende dit nuværende konfigurationssæt. Din nye kernepakke er også klog nok til automatisk at opdatere din opstartsindlæser til at bruge den nye kerne. Hvis du har oprettet en modulpakke, så skal du også installere den pakke.

Det er tid til at genstarte systemet: Læs omhyggeligt alle advarsler som de ovenstående trin kan have medført, og så shutdown -r now.

For yderligere information om Debian-kerner og kernekompilation, se Debian Linux Kernel Handbook. For yderligere information om kernel-package, så læs den fine dokumentation i /usr/share/doc/kernel-package.



[19] Der er andre placeringer, hvor du kan udtrække kernekilder og bygge din tilpassede kerne, men dette er nemmest, da det ikke kræver specielle tilladelser.