Kompilera linuxkärna


Varför kompilera en linuxkärna

Varför vill man kompilera upp/kompilera om en linuxkärna? Några av de främsta skälen är: För att kunna sätta upp brandväggsregler på datorn måste det finnas stöd för det i kärnan. Gör det inte det från början måste en ny kärna med brandväggsstöd kompileras upp.

Monolitisk kärna versus moduler

Vi kompilering av kärnan går det att välja att lägga in allt stöd in i kärnfilen. Kärnan blir då monolitisk. Det har för och nackdelar.

Många drivrutiner kan även kompileras som moduler. Drivrutinerna ligger då som separata filer under /lib/modules istället för att ligga i kärnfilen. Fördelen med det är att de går att ladda in och ut ur kärnan under drift när de behövs utan att boota om datorn.

Hur gör jag för att kompilera upp en kärna

För det första måste källkoden och headerfilerna till kärnan finnas installerade. På ett RedHatsystem och andra system som använder rpm-paket kan du göra
rpm -qa | grep -i kernel
och se så att den listar kernel-headers och kernel-source. Listar den inte kernel-headers och kernel-source har du dem inte installerade och då måste det göras. I en modern RedHat ligger headerfilerna istället i paketet glibc-kernheaders.
rpm -q glibc-kernheaders
visar om du har paketet installerat. Förutom källkoden till kärnan och headerfilerna måste du även ha en kompilator installerad. Gör
rpm -qa | grep -i egcs
eller
rpm -qa | grep -i gcc
och se så att antingen egcs-någonversion eller gcc-någonversion listas och därmed finns installerad på ditt system. Du ska ha antingen gcc eller egcs installerad. I debian och Corellinux gör du istället
dpkg -l | grep -i egcs
eller
dpkg -l | grep -i gcc

För system med annat pakethanteringssystem än rpm och dpkg bör du se efter i dina manualer för hur du listar installerade paket.

Om något paket saknas måste det installeras. I system med rpm skriver du

rpm -ihv paketnamn
Om kernel-source och kernel-headers saknas gör du således
rpm -ihv kernel-headers-2.2.16-3.i386.rpm kernel-source-2.2.16-3.i386.rpm

I debian och Corellinux startar du antingen dselect eller skriver

apt-get install paketnamn

Tar-arkiv

Istället för att installera källkoden till Linuxkärnan från ett paket kan du hämta hem källkoden i form av ett tar-arkiv från till exempel
ftp://ftp.sunet.se/pub/Linux/kernels
Gå sedan till katalogen /usr/src. Om /usr/src/linux är en symbolisk länk radera den.
rm linux
Om det är en katalog döp om den till någonting lämpligt, t.ex. linux-old
mv linux linux-old
Se till att du står i katalogen /usr/src. Packa nu upp tar-arkivet med källkoden till Linuxkärnan. Om källkoden finns i filen /root/linux-2.4.9.tar.gz gör:
tar xvfz /root/linux-2.4.9.tar.gz
Döp om katalogen linux till linux-versionsnummer. Exempel:
mv linux linux-2.4.9
Sätt upp en symbolisk länk, linux, som pekar på katalogen med den nya källkoden. Exempel:
ln -s linux-2.4.9 linux
Nu finns källkoden till Linuxkärnan på plats. Nu kan du konfigurera och kompilera den enligt nedan.

Debian

För mer information om hur man kompilerar en kärna i Debian se den dokumentation som följer med i Debian. Har du dokumentationen installerad kan du på Debiandatorn gå till någon av följande länkar.
file:/usr/share/doc/kernel-package/README.gz
http://localhost/doc/kernel-package/README.gz

RedHat och liknande system

För RedHat och andra liknande Linuxsystem följ anvisningarna nedan. Börja med att gå till katalogen /usr/src/linux innan du konfigurerar och bestämmer vad som ska finnas med i kärnan.

Konfigurera och kompilera och installera kärnan

Det skiljer sig en del åt mellan olika kärnor. Välj nedan för olika kärnor.

Till Linuxkärnan går det att ändra på en del parametrar. Läs vidare under kernelparametrar.


Källkoden till Linuxkärnan finns i form av korsreferenshypertextformat på http://lxr.linux.no/

Copyright © 2010 Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.1