DEBIAN KERNEL BAUEN

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

NEUEN DEBIAN KERNEL BAUEN (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net]


Alle folgenden Befehle sind als Benutzer root auszufuehren:


Benoetigte Pakete installieren:

aptitude install kernel-package build-essential libc6-dev gcc debianutils make libncurses5-dev initrd-tools


Nach /usr/src wechseln:

cd /usr/src


Hierher nun die Kernel Sourcen laden (Version 3.8.10 sollte nach Bedarf angepasst werden):

wget http://kernel.org/pub/linux/kernel/v3.x/linux-3.8.10.tar.bz2

oder

wget http://kernel.org/pub/linux/kernel/v3.x/linux-3.8.10.tar.gz


Die Sourcen nun entpacken:

tar xvfj /usr/src/linux-3.8.10.tar.bz2

oder

tar xvfz /usr/src/linux-3.8.10.tar.gz


Rechte auf root setzen:

chown -R root:root /usr/src/linux-3.8.10


Umbenennen des entpackten Ordners:

mv linux-3.8.10 linux-3.8.10-1-686-opp

oder

mv linux-3.8.10 linux-3.8.10-1-amd64-opp


Symlink zum alten Kernel entfernen:

unlink linux


Neuen Symlink erstellen:

ln -s /usr/src/linux-3.8.10-1-686-opp /usr/src/linux

oder

ln -s /usr/src/linux-3.8.10-1-amd64-opp /usr/src/linux


Nach linux wechseln:

cd linux


Geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel anfangen:

make clean && make mrproper


Config von altem Kernel uebernehmen:

cp /boot/config-`uname -r` /usr/src/linux/.config


(oder eine alte gesicherte config benutzen.)


Nun bearbeiten wir das Makefile, dies sollte dann wie folgt aussehen:


VERSION = 3

PATCHLEVEL = 8

SUBLEVEL = 10

EXTRAVERSION = -1


Wir haben fuer unsere erste Version dieses Kernels eine -1 bei der EXTRAVERSION hinzugefuegt.


Dann bearbeiten wir die .config Datei:


CONFIG_LOCALVERSION="-default"


Dies aendere ich zb in:


CONFIG_LOCALVERSION="-opp"


Was nun zusammen eine Kernel Version wie folgt ergibt:

3.8.10-1-opp


Als naechstes wird die .config fein eingestellt (darauf achten das unter Security die default Kernel capabilities auf * stehen und nich auf M):

make menuconfig


oder per:


make oldconfig

(Um alle neuen Module angezeigt zu bekommen und zu konfigurieren, weitere Beschreibung siehe am Ende dieser Anleitung.)



Nun kommen wir zum bauen der Debian Pakete:

make-kpkg buildpackage --initrd --revision `date +%Y%m%d`


Mit dem Parameter buildpackage geben wir an, dass wir alle Pakete bauen lassen wollen:


linux-doc

linux-headers

linux-image

linux-manual

linux-source


Natuerlich kann man auch zb nur das linux-image und linux-headers bauen (reicht in den meisten Faellen auch aus), z.B. so:


make-kpkg linux-image --initrd --revision `date +%Y%m%d`


Wenn fertig dann weiter mit:


make-kpkg linux-headers --initrd --revision `date +%Y%m%d`


Jetzt kann man das in /usr/src liegende Debian-Archiv bequem mit dpkg installieren, je nachdem welches Paket man gebaut hat und installieren moechte:


cd /usr/src

dpkg -i linux-(doc|headers|image|manual|source)-3.8.10-1-opp_*.deb)


Dann evtl noch Aenderungen an Lilo/Grub wie folgt anpassen.


LiLo (/etc/lilo.conf):


image  = /boot/vmlinuz

label  = linux

root   = /dev/hdax

vga    = 791

initrd = /boot/initrd


image  = /boot/vmlinuz-3.8.10-1-opp

label  = linux-3.8.10-1-opp

root   = /dev/hdax

vga    = normal

initrd = /boot/initrd.img-3.8.10-1-opp


Anschliessend fuehren Sie noch /sbin/lilo aus.


Falls alles wie gewuenscht klappt kann man anschliessend auch am Anfang der /etc/lilo.conf die Zeile


default=linux-3.8.10-1-opp


eintragen, womit der Kernel zum Standard-Kernel des Rechners wird.

Anschliessend fuehren Sie nochmals /sbin/lilo aus.


Grub:

Fuer Grub muessen Sie nur folgenden Befehl ausfuehren:

update-grub



Anmerkungen zu "make menuconfig":


Wie schon bei xconfig haben sie eine gewisse Grafik und Sie koennen nach belieben einstellen wie Sie wollen und koennen jederzeit wieder etwas zurueck stellen. Die Maus funktioniert hier nicht. Stattdessen arbeitet man hier mit den Pfeiltasten.


Anmerkung: Fuer make menuconfig muessen Sie X normalerweise nicht starten. Der Kernel sollte in der Lage sein auch ohne X die Farben und Menues darzustellen. Wenn er also einen Fehler diesbezueglich 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 muessen selbst wissen was Sie nun einstellen muessen. Ein paar Tipps kann ich Ihnen aber geben :


  • Wenn Sie X benutzen koennen Sie einfach mehrere xterm oeffnen und so die

neue und alte Konfiguration gleichzeitig ansehen:


o 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. Waehlen 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 koennen. Also z.B. von config-2.4.3-20 nach config243.


o Sie koennen nun die Konfiguration Ihres aktuellen Kernels sehen und ihn teilweise (!) als Vergleich fuer den neuen Kernel benutzen. Einfach alles zu uebernehmen wird jedoch nicht funktionieren und macht zudem auch keinen Sinn. Denn z.B. fuer 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 ueberpruefen Sie Ihre

aktuelle Konfiguration (modules.conf, lsmod usw.) welche Module dort geladen werden. Was Sie nicht haben (oder wollen), das brauchen Sie nicht auszuwaehlen.


  • Wichtig sind vor allem die Filesysteme: ext2, ReiserFS, MS Dos, Vfat, /

dev/pts sollten auf jeden Fall drin sein, sonst koennen Sie nachher nicht richtig booten. Moeglicherweise sind auch noch weitere noetig. Vergleichen Sie hierzu mit ihrer alten Konfiguration und uebernehmen Sie alles von dem Sie nicht genau wissen das Sie es nicht brauchen.


  • Einige Auswahlmoeglichkeiten koennen Sie nur aktivieren wenn Sie vorher

einen andern Menuepunkt ausgewaehlt haben. Meist ist dies der Support fuer irgendetwas. Sie koennen 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 laedt. Packen Sie es nun in den Kernel, dann laeuft es zwar grundsaetzlich, die Optionen sind eventuell aber trotzdem notwendig und werden dann nicht mehr gesetzt. Wenn Sie wissen was Sie aendern muessen, damit es funktioniert, dann koennen Sie das selbstverstaendlich machen wie Sie es fuer 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 auswaehlen. Wenn Sie config benutzt haben, kopieren Sie sich den File .config oder laden Sie diesen noch mal mit menuconfig und speichern damit ab. So koennen Sie dann auch gleich noch mal eventuelle Fehler waehrend make config korrigieren. Am besten speichern Sie es unter dem Namen config247-1 oder so aehnlich ab. So koennen Sie nachher wieder darauf zurueck greifen


  • Beim beenden von menuconfig werden Sie gefragt ob gespeichert werden

soll. Hier waehlen sie natuerlich "Ja". Dadurch wird die Datei .config erstellt mit der kompiliert wird. Wenn sie "Nein" waehlen und weiter machen, dann wird nur eine Standard Konfiguration benutzt die vermutlich nicht lauffaehig ist. Bei xconfig kaennen Sie einfach "save and exit" waehlen, nachdem Sie vorher wie gesagt noch zusaetzlich unter anderem Namen gespeichert haben