Ziel dieses Artikels ist es die Kompilierung des Kerns (oder Kernel) unter Linux vorzustellen.
Die folgenden Ausführungen basieren auf der Version 2.4.20 des Kernels, die jüngste zu dem Zeitpunkt als der Artikel verfasst wurde (März 2003).
Die Quellen der jüngsten Version stehen zum Runterladen zu Verfügung unter http://www.kernel.org.
Die Quellen "wiegen" zwischen 25 und 30 Mo.
Wenn Sie die Quellen erhalten haben Sie je nach dem eine tar.bz2 oder tar.gz Datei.
Kopieren Sie diese in das Verzeichnis /usr/src/ ihrer Linux-Maschine, aber dekomprimieren Sie sie nicht sofort.
In dem betroffenen Verzeichnis, geben Sie den folgenden Befehl ein:
castor@linuxbox:/usr/src$ ls -al total 8 drwxrwsr-x 2 root src 4096 Feb 8 2002 . drwxr-xr-x 13 root root 4096 May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:39 linux -> linux-2.4.18 drwxr-sr-x 2 root src 4096 Feb 25 15:38 linux-2.4.18 -rw-r--r-- 1 root root 27421046 Feb 25 15:37 linux-2.4.20.tar.bz2 castor@linuxbox:/usr/src$
Das Ergebnis kann auf Ihrer Maschine anders ausfallen.
Als erstes muss der symbolische Link linux mit dem Befehl rm linux gelöscht werden.
Dann muss der zuvor erhaltene tarball entkomprimiert werden. Dafür muss Platz vorgesehen sein, die entkomprimierten Quellen brauchen fast 200 Mo !!
Dann erstellen wir einen symbolisch Link linux der auf das neue Verzeichnis verweist.
Je nach Fall, heißt das Verzeichnis, in dem sich die Quellen befinden
schon linux, dann muss es mit folgendem Befehl umbenannt werden mv linux linux-2.4.20.
root@linuxbox:/usr/src# rm linux rm: remove `linux'? y root@linuxbox:/usr/src# tar -xjf linux-2.4.20.tar.bz2 root@linuxbox:/usr/src# ln -s linux-2.4.20 linux root@linuxbox:/usr/src# ls -hal total 27M drwxrwsr-x 4 root src 4.0k Feb 25 15:49 . drwxr-xr-x 13 root root 4.0k May 1 1980 .. lrwxrwxrwx 1 root src 12 Feb 25 15:49 linux -> linux-2.4.20 drwxr-sr-x 2 root src 4.0k Feb 15 15:38 linux-2.4.18 drwxr-xr-x 14 root src 4.0k Nov 29 00:53 linux-2.4.20 -rw-r--r-- 1 root src 26M Feb 25 15:37 linux-2.4.20.tar.bz2 root@linuxbox:/usr/src#
Der Linux-Kern ist "modular", d.h. dass manche Optionen, als "Module" definiert,
erst zum passenden Zeitpunkt durch den Kern übernommen werden. Dadurch wird Speicherraum gespart,
zu Lasten der Ladezeit. Wenn Sie z.B. alle sechs Monate eine Seite drucken
ist es unnötig die Druckerpiloten permanent im Speicher zu behalten (Parallelanschluß, Drucker, usw.).
Diese werden erst geladen, wenn der Benutzer drucken möchte.
Es ist also wichtig die künftige Benutzung der Maschine unter Linux gut zu kennen, bevor man mit der Konfiguration des Kerns beginnt.
Es gibt drei Befehle um die Quellen zu konfigurieren: make config, make menuconfig und make xconfig.
Die ersten beiden sind in Text-Modus, die dritte braucht das System X-window.
Die Wahl liegt bei Ihnen, alle drei sind vollkommen gleichwertig. Nur muss man bei der ersten alle Optionen durchgehen.
Was mich betrifft, bevorzuge ich make menuconfig.
root@linuxbox:/usr/src/linux# make menuconfig ( cd include ; ln -sf asm-i386 asm) make -C scripts/lxdialog all make[1]: Entering directory `/usr/src/linux-2.4.20/scripts/lxdialog' gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o checklist.o checklist.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o menubox.o menubox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o textbox.o textbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o yesno.o yesno.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o inputbox.o inputbox.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o util.o util.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o lxdialog.o lxdialog.c gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o msgbox.o msgbox.c gcc -o lxdialog checklist.o menubox.o textbox.o yesno.o inputbox.o util.o lxdialog.o msgbox.o -lncurses ...
Es ist seht empfehlenswert für jede Option die online-Hilfe zu lesen.
Die folgenden Angaben können je nach Kernel-Version und gewählten Optionen variieren.
/dev/cpu/microcode - Intel IA32 CPU microcode support /dev/cpu/*/msr - Model-specific register support /dev/cpu/*/cpuid - CPU information supportDiese drei Optionen können gefahrenlos eingesetzt werden, sie können die Prozessorverwaltung optimieren.