Stoppt die Vorratsdatenspeicherung! Jetzt klicken &handeln! Willst du auch an der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:

Kernel unter Debian kompilieren

Der Linuxkernel lässt sich unter Debian GNU/Linux natürlich genau wie in anderen Distributionen mit make menuconfig && make dep && make bzImage && make modules erstellen und anschließend die erstellten Binärdaten in /boot und /lib/modules/`uname -r`/ kopieren. Dies läuft aber dem sauberen Paket-Management (dpkg) unter Debian zuwieder und erhöht den Aufwand für die Sysadmins. Aus diesem Grunde gibt es das Programm make-kpkg.

make-kpkg installieren

make-kpkg ist ein Teil des Paketes kernel-package und ist demnach einfach über: "apt-get install kernel-package" zu installieren. Wie wir später sehen werden ist auch das Paket fakeroot nützlich weshalb wir noch ein "apt-get install fakeroot" dranhängen. Natürlich brauchen wir auch die Quelltexte des Linux-Kernels, den wir zu kompilieren wünschen. Dieser ist entweder direkt bei kernel.org oder die entsprechenden Source-Pakete bei Debian z.b. kernel-source-2.4.20 zu erhalten. Um make menuconfig verwenden zu können wird noch die libncurses aus dem Paket libncurses-dev benötigt, die wir bei Bedarf installieren müssen. Weitere zwingend benötigte Pakete sind libc-dev, gcc, debianutils und make die, sollten sie noch nicht vorhanden sein, nachinstalliert werden.

Den Kernel-Source vorbereiten

Wir haben uns im vorhergehenden Schritt die Kernel-Quellen besorgt. Wir gehen davon aus, das diese in /usr/src/ liegen. Wir entpacken diese wie gewohnt - "tar xvjf kernel-source-2.4.20.tar.bz2" tut das hervorragend - und verlinken das Ergebnis mit /usr/src/linux indem wir ein "ln -sf kernel-source-2.4.20 linux" absetzen.
Idealerweise führen wir alle Operationen, die keine root-Rechte benötigen als Benutzer aus, welcher der Gruppe "src" angehört. Außer für die "apt-get install" benötigen wir die Rechte bis jetzt nicht.
Nun kann der Kernel konfiguriert werden also: "cd linux" und "make-kpkg --config=menuconfig --revision=Custom.1.00 configure"

Kernel bauen

Nachdem die Vorbereitungen abgeschlossen sind und eine Kernel-Configuration vorliegt, kann mit dem Kompiliervorgang begonnen werden.
In unserem Beispiel: "make-kpkg --rootcmd=fakeroot kernel_image".
Wenn wir auch das dazugehörige initrd-image bauen wollen so wird der Parameter --initrd benötigt:
"make-kpkg --initrd --rootcmd=fakeroot kernel_image".
Das erzeugt, wenn alles glatt läuft - ein .deb file in /usr/src/. Der Revisions-Parameter sollte natürlich den eigenen Bedürfnissen angepasst werden. Sollte der Vorgang im aktuellen Verzeichnis wiederholt werden, ist es wichtig zuerst "make-kpkg clean" durchzuführen um alte Daten aus dem Weg zu räumen. Außer dem Parameter --revision kann man sinnigerweise noch eine Extraversion anhängen; dies geschieht mit --append_to_version (nur Kleinbuchstaben, -, + und .). Diese Extraversion ist mit dem uname -a sichtbar und hat somit auch Auswirkungen auf das Modul-Ladeverhalten.

Kernel installieren

Installieren läßt sich das deb-file (als root) mit "dpkg -i kernel-image-2.4.20_Custom.1.00_i386.deb". Dabei wird der Kernel nach /boot und die Module in ein passendes Verzeichnis kopiert. Das kernel-image wird automatisch mit /vmlinuz verlinkt, was bei Debian der Standard-Eintrag in der Bootmanager-Konfiguration (z.B. lilo oder grub) sein sollte. Der Ursprüngliche Standardkernel wird mit /vmlinuz.old verlinkt und bleibt also funktional. Dies gilt aber nur bei anderen Kernel-Versionen oder Extra-Versionen! Neue Revisionen werden überschrieben!
Das Kernel-Debian-Paket kann nun einfach kopiert werden auch auf anderen Rechnern sein Unheil anrichten.

Zusammenfassung

Für die Eiligen:


sudo apt-get install make gcc kernel-package fakeroot libncurses-dev kernel-source-2.4.20
cd /usr/src/



tar xvjf kernel-source-2.4.20.tar.bz2
ln -sf kernel-source-2.4.20 linux
cd linux
make-kpkg clean
make-kpkg --config=menuconfig --revision=1.00.Custom configure
make-kpkg --initrd --rootcmd=fakeroot kernel_image
cd ..
sudo dpkg -i kernel-image-2.4.20_Custom.1.00_i386.deb

Kommentare

Markus am Februar 21, 2008 at 2:11 vorm.

Danke, ganau das was ich gesucht hatte.
Wird die Nacht doch nicht so lange.

Grüße Markus

Andreas Schulz am März 5, 2008 at 5:01 nachm.

Unter 2.6 Kernels muss das Initrd-image erzeugt werden

und in das Paket eingearbeitet werden !

Du weist hoffentlich dann auch wie.

Max am März 26, 2008 at 9:48 nachm.

bei neueren Kernels geht es auch mit "make deb-pkg"

Gruß

Max

Torsten am Juni 24, 2008 at 11:13 vorm.

@ Andreas Schulz

genau da hängt es bei mir. Wie erstelle ich denn das richtige initrd-image?

Gruß, Torsten

Toke am Juni 24, 2008 at 1:17 nachm.

@Torsten:

einfach:
make-kpkg --initrd --rootcmd=fakeroot kernel_image
diese Anleitung ist leider schon etwas älter und berücksichtigte das initrd-image nicht.

Kommentieren