DEBIAN KERNEL BAUEN

Aus OPPServer.net Wiki | OPPs Wiki
Version vom 29. April 2013, 00:29 Uhr von SOliver (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „NEUEN DEBIAN KERNEL BAUEN (Stand 26.05.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net] sudo aptitude instal…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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


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


cd /usr/src

hierher nun die kernel sourcen laden

(z.B. sudo wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2)

oder

(z.B. sudo wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.gz)


sudo tar xvfj /usr/src/linux-2.x.xx.tar.bz2

(z.B. sudo tar xvfj /usr/src/linux-2.6.39.tar.bz2)

oder

sudo tar xvfz /usr/src/linux-2.x.xx.tar.gz

(z.B. sudo tar xvfz /usr/src/linux-2.6.39.tar.gz)


rechte auf root setzen sudo chown -R 0:0 /usr/src/linux-2.x.xx (z.B. sudo chown -R 0:0 /usr/src/linux-2.6.39)

umbenennen sudo mv linux-2.x.xx linux-2.x.xx-xx (z.B. sudo mv linux-2.6.39 linux-2.6.39-1-586-opp) oder (z.B. sudo mv linux-2.6.39 linux-2.6.39-1-amd64-opp)


symlink zum alten kernel entfernen mit sudo unlink linux


neuen symlink erstellen sudo ln -s /usr/src/linux-2.x.xx-xx/ /usr/src/linux (z.B. sudo ln -s /usr/src/linux-2.6.39-1-586-opp /usr/src/linux) oder (z.B. sudo ln -s /usr/src/linux-2.6.39-1-amd64-opp /usr/src/linux)


cd linux


geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel anfangen: sudo make clean && sudo make mrproper


config von altem kernel uebernehmen

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

oder halt eine alte gesicherte config benutzen


nun bearbeiten wir das makefile dies sollte wie folgt aussehen

VERSION = 2 PATCHLEVEL = x SUBLEVEL = xx EXTRAVERSION = x

wir fuegen fuer unsere erste version dieses kernels eine -1 ein

VERSION = 2 PATCHLEVEL = x SUBLEVEL = xx EXTRAVERSION = -1


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 anzeigt 2.x.xx-1-opp (z.B. 2.6.39-1-opp)


als naechstes wird die config fein eingestellt (darauf achten das unter security die default kernel capabilities auf * stehen und nich auf M) sudo make menuconfig

oder halt per

sudo make oldconfig um alle neue modulle angezeigt zu bekommen und zu configen

weitere beschreibung siehe am ende


sudo make-kpkg buildpackage --initrd --revision xx

als revision z.b. das Datum beim erstellen sudo 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 bauen (reicht in den meisten Faellen auch aus), z.B. so:

sudo make-kpkg linux-image --initrd --revision xx

oder

sudo make-kpkg linux-image --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 sudo dpkg -i linux-(doc|headers|image|manual|source)-2.x.xx-1-opp_xx_i386.deb (z.B. sudo dpkg -i linux-image-2.6.39-1-opp_19780801_i386.deb)


Dann evtl noch Aenderungen 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-1-opp label = linux-2.x.xx-1-opp root = /dev/hdax vga = normal initrd = /boot/initrd.img-2.x.xx-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-2.x.xx-1-opp eintragen, womit der Kernel zum Standard-Kernel des Rechners wird Anschliessend fuehren Sie nochmals /sbin/lilo aus


Grub die Konfigurationsdatei /boot/grub/menu.lst wie 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 fuegen wir unseren neuen kernel hinzu

title Debian GNU/Linux, kernel 2.x.xx-1-opp root (hd0,0) kernel /boot/vmlinuz-2.x.xx-1-opp root=/dev/hdax ro initrd /boot/initrd.img-2.x.xx-1-opp savedefault

title Debian GNU/Linux, kernel 2.x.xx-1-opp (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.x.xx-1-opp root=/dev/hdax ro single initrd /boot/initrd.img-2.x.xx-1-opp savedefault

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


anmerkungen: 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