NEUEN DEBIAN KERNEL BAUEN (Beispiel Debian 4.0) (Stand 19.10.2007)
aptitude install kernel-package build-essential libc6-dev gcc debianutils make libncurses5-dev initrd-tools cd /usr/src
- hierher nun die kernel sourcen laden
tar xvfj /usr/src/linux-2.x.xx.tar.bz2
oder halt
tar xvfz /usr/src/linux-2.x.xx.tar.gz
- umbenennen
mv linux-2.x.xx linux-2.x.xx-xx
- symlink zum alten kernel entferen mit
unlink linux
- neuen symlink erstellen
ln -s /usr/src/linux-2.x.xx-xx/ /usr/src/linux cd linux
- geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel anfangen:
make clean && make mrproper
- config von altem kernel übernehmen:
cp /boot/config-2.x.xx-xx /usr/src/linux/.config
Debian:
cp /boot/config-`uname -r` /usr/src/linux/.config
oder halt eine alte gesicherte config benutzen
make menuconfig
- sofort wieder EXIT um die config datei neu zu schreiben und die alten optionen zu übernehmen
- oder um alle neue module angezeigt zu bekommen und zu configen
make oldconfig
- nun bearbeiten wir das makefile, dies sollte wie folgt aussehen
VERSION = 2 PATCHLEVEL = x SUBLEVEL = xx EXTRAVERSION = x
- wir fügen für unsere erste version dieses kernels eine -0.1 ein
VERSION = 2 PATCHLEVEL = x SUBLEVEL = xx EXTRAVERSION = x-0.1
- dann bearbeiten wir die .config datei
CONFIG_LOCALVERSION="-default"
- dies ändere ich z.B. in
CONFIG_LOCALVERSION="-opp"
- was nun zusammen eine kernel version wie folgt anzeigt
2.x.xx.x-0.1-opp
- als nächstes wird die config fein eingestellt (darauf achten das unter security die default kernel capabilities auf * stehen und nich auf M)
make menuconfig
- oder halt per
make oldconfig
- weitere beschreibung siehe am ende
- z.B. das Datum beim erstellen:
make-kpkg buildpackage --initrd --revision xx
- Mit dem Parameter buildpackage geben wir an, dass wir alle Pakete bauen lassen wollen:
linux-doc linux-headers linux-image linux-manual linux-source
- Natürlich kann man auch zb nur das linux-image bauen (reicht in den meisten Fällen auch aus), z.B. so:
make-kpkg linux-image --initrd --revision xx
- Jetzt kann man das in /usr/src liegende Debian-Archiv bequem mit dpkg installieren, je nachdem welches paket man gebaut hat und installieren möchte:
cd /usr/src dpkg -i linux-(doc|headers|image|manual|source)-2.x.xx.x-0.1-opp_xx_i386.deb
- Dann evtl noch Änderungen an Lilo/Grub wie folgt anpassen.
LiLo
- Bei LiLo ist das die Datei /etc/lilo.conf
image = /boot/vmlinuz label = linux root = /dev/hdax vga = 791 initrd = /boot/initrd image = /boot/vmlinuz-2.x.xx.x-0.1-opp label = linux-2.x.xx.x-0.1-opp root = /dev/hdax vga = normal initrd = /boot/initrd.img-2.x.xx.x-0.1-opp
- Anschliessend führen Sie noch
/sbin/liloaus - Falls alles wie gewünscht klappt kann man anschliessend auch am Anfang der /etc/lilo.conf die Zeile eintragen, womit der Kernel zum Standard-Kernel des Rechners wird
default=linux-2.x.xx.x-0.1-opp
- Anschliessend führen Sie nochmals
/sbin/liloaus
Grub
- die Konfigurationsdatei
/boot/grub/menu.lstwie folgt anpassen:title Debian GNU/Linux, kernel 2.6.18-4-686 root (hd0,0) kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hdax ro initrd /boot/initrd.img-2.6.18-4-686 savedefault title Debian GNU/Linux, kernel 2.6.18-4-686 (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hdax ro single initrd /boot/initrd.img-2.6.18-4-686 savedefault
- dort fügen wir unseren neuen kernel hinzu
title Debian GNU/Linux, kernel 2.6.18-4-686 root (hd0,0) kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hdax ro initrd /boot/initrd.img-2.6.18-4-686 savedefault title Debian GNU/Linux, kernel 2.6.18-4-686 (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hdax ro single initrd /boot/initrd.img-2.6.18-4-686 savedefault title Debian GNU/Linux, kernel 2.x.xx.x-0.1-opp root (hd0,0) kernel /boot/vmlinuz-2.x.xx.x-0.1-opp root=/dev/hdax ro initrd /boot/initrd.img-2.x.xx.x-0.1-opp savedefault title Debian GNU/Linux, kernel 2.x.xx.x-0.1-opp (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.22.1-0.1-opp root=/dev/hdax ro single initrd /boot/initrd.img-2.x.xx.x-0.1-opp savedefault
- Auch hier kann man den neuen Kernel zum Standard-Kernel machen über die Default-Zeile (ziemlich weit oben):
default 1
- dann noch die config sichern
cp /usr/src/linux/.config /boot/config-2.x.xx.x-0.1-opp
the Debian-way
update-grub
anmerkungen:
make menuconfig
Wie schon bei xconfig haben sie eine gewisse Grafik und Sie können nach
belieben einstellen wie Sie wollen und können jederzeit wieder etwas zurück stellen. Die Maus funktioniert hier nicht. Stattdessen arbeitet man hier mit den Pfeiltasten.
- Anmerkung: Für make menuconfig müssen Sie X normalerweise nicht starten. Der Kernel sollte in der Lage sein auch ohne X die Farben und Menüs darzustellen. Wenn er also einen Fehler diesbezüglich meldet, benutzen Sie es in X unter z.B. xterm.
- Jedenfalls kommt nun der Teil bei dem ich Ihnen auch nicht viel sagen kann. Egal welches der Werkzeuge Sie benutzen, Sie müssen selbst wissen was Sie nun einstellen müssen. Ein paar Tipps kann ich Ihnen aber geben :
- Wenn Sie X benutzen können Sie einfach mehrere xterm öffnen und so die neue und alte Konfiguration gleichzeitig ansehen:
- Wechseln sie nach /boot und suchen sie den config File der alten Kernel Version, z.B. config-2.4.3-20 und kopieren Sie ihn in das
Verzeichnis Ihrer alten (!!) Kernel Quellen, also z.B. /usr/src/linux-2.4.3. Wechseln Sie dann in dieses Verzeichnis und rufen Sie dort „make xconfig“ oder besser „make menuconfig“ auf. Wählen sie dann den Punkt „Load …“ um Ihre alte Konfiguration zu laden und geben Sie hier den eben kopierten Configfile an.
- Anmerkung: Es empfiehlt sich dann auch ihn eventuell umzubenennen, damit Sie ihn in Zukunft einfacher laden können. Also z.B. von
config-2.4.3-20 nach config243.
- Sie können nun die Konfiguration Ihres aktuellen Kernels sehen und ihn teilweise (!) als Vergleich für den neuen Kernel benutzen.
Einfach alles zu übernehmen wird jedoch nicht funktionieren und macht zudem auch keinen Sinn. Denn z.B. für ihre Netzwerkkarte brauchen sie nur dieses eine Modul und nicht alle. Und wenn Sie keine Radio oder TV Karte oder kein USB haben oder wollen, dann braucht Ihr neuer Kernel dies alles auch nicht.
- Schauen Sie sich an welche Hardware Sie haben und überprüfen Sie Ihre aktuelle Konfiguration (modules.conf, lsmod usw.) welche Module dort geladen werden. Was Sie nicht haben (oder wollen), das brauchen Sie nicht auszuwählen.
- Wichtig sind vor allem die Filesysteme: ext2, ReiserFS, MS Dos, Vfat, /dev/pts sollten auf jeden Fall drin sein, sonst können Sie nachher nicht richtig booten. Möglicherweise sind auch noch weitere nötig. Vergleichen Sie hierzu mit ihrer alten Konfiguration und übernehmen Sie alles von dem Sie nicht genau wissen das Sie es nicht brauchen.
- Einige Auswahlmöglichkeiten können Sie nur aktivieren wenn Sie vorher einen andern Menüpunkt ausgewählt haben. Meist ist dies der Support für irgendetwas. Sie können z.B. keinen SCSI Low Level Treiber installieren wenn Sie keinen SCSI Support aktiviert haben.
- Wenn in Ihrem alten Kernel etwas mit einem Modul kompiliert wurde, dann ist es ratsam dies auch im neuen Kernel zu tun. Anmerkung: Der Grund ist einfach, das die Konfiguration dann dieses Modul mit entsprechenden Optionen lädt. Packen Sie es nun in den Kernel, dann
läuft es zwar grundsätzlich, die Optionen sind eventuell aber trotzdem notwendig und werden dann nicht mehr gesetzt. Wenn Sie wissen was Sie ändern müssen, damit es funktioniert, dann können Sie das selbstverständlich machen wie Sie es für Richtig halten.
- Wenn Sie alles konfiguriert haben, dann speichern Sie ihre Einstellungen auf jeden Fall unter einem anderen Namen noch mal ab. Bei menuconfig und xconfig kann man das auswählen. Wenn Sie config benutzt haben, kopieren Sie sich den File .config oder laden Sie diesen noch mal mit menuconfig und speichern damit ab. So können Sie dann auch gleich noch mal eventuelle Fehler während make config korrigieren. Am besten speichern Sie es unter dem Namen config247-1 oder so ähnlich ab. So können Sie nachher wieder darauf zurück greifen
- Beim beenden von menuconfig werden Sie gefragt ob gespeichert werden soll. Hier wählen sie natürlich „Ja“. Dadurch wird die Datei .config erstellt mit der kompiliert wird. Wenn sie „Nein“ wählen und weiter machen, dann wird nur eine Standard Konfiguration benutzt die vermutlich nicht lauffähig ist. Bei xconfig können Sie einfach „save and exit“ wählen, nachdem Sie vorher wie gesagt noch zusätzlich unter anderem Namen gespeichert haben