Diskussion:Zwei Kernel parallel installieren: Unterschied zwischen den Versionen
Robi (Diskussion | Beiträge) (Kernel aus Code parallel installieren) |
(kein Unterschied)
|
Version vom 22. August 2009, 21:56 Uhr
eigenen Kernel aus dem Quellcode bauen
Einen eigenen Kernel aus dem Quelltext selbst bauen ist eigentlich für einen etwas Linuxerfahrenen überhaupt kein Problem, nur das System insbesondere Grub sollte eben sauber konfiguriert sein, damit Suse dann hinterner nicht ins schleudern kommt. Problematischer ist es spezielle Konfigurationen im Kernel einzustellen, hier sollte man wirklich genau wissen was man warum macht. Ich zeige hier mal anhand von Konsolausgaben wie das prinziell funktioniert. Beutzt wird eines Suse 11.1 (2.6.27.25-0.1-pae). Auf Spezialitäten und Hintergründe wird nicht eingegangen. Aber es sollte davor gewarnt werden, oft funktioniert mit einem solchem Kernel alles, was Hardware betrifft gelegentlich auch etwas mehr wie vorher, manchmal aber auch nicht, es ist und bleibt für dein SuseSystem ein instabiles Gebilde und gedacht mal für Tests oder spezielle Optionen oÄ. Der orignal-Susekernel sollte im Normalfall das sein, mit dem du arbeitest. Je größer der Versionssprung im Kernel, desdo größer die Wahrscheinlichkeit, das einige Programme nicht mehr funktionieren. Voraussetzungen zum kopilieren sind natürlich genügend Platz auf der Platte und die üblichen Entwicklertools wie gcc make usw installiert.
Downloadquelle für den Quellcode nutze ich
http://www.de.kernel.org/pub/linux/kernel/v2.6/
also (aktuell ist heute) http://www.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.5.tar.gz downloaden sollten so etwas mehr als 70MB sein. Wo du ihn hinspeicherst ist egal, bei mir kommt er unter ~/Desktop/ an.
rob@dhcppc3:~/Desktop> su - Passwort: dhcppc3:~ # cd /usr/src dhcppc3:/usr/src # ls linux linux-2.6.27.25-0.1 linux-2.6.27.25-0.1-obj linux-obj packages dhcppc3:/usr/src # tar -xzf /home/rob/Desktop/linux-2.6.30.5.tar.gz dhcppc3:/usr/src # ls linux linux-2.6.27.25-0.1 linux-2.6.27.25-0.1-obj linux-2.6.30.5 linux-obj packages dhcppc3:/usr/src # cd linux-2.6.30.5/ dhcppc3:/usr/src/linux-2.6.30.5 # zcat /proc/config.gz > ./config dhcppc3:/usr/src/linux-2.6.30.5 # make oldconfig
damit habe ich jetzt folgendes gemacht, ich habe das Tar-Archiv nach /usr/src/ ausgepackt und habe die Orginalkonfiguration des derzeitigen Susekernels dort abgespeichert. Das downgeloadete Tar-Archiv kannst dann schon löschen, das brauchst du dann wahrscheinlich nicht mehr. Das "make oldconfig" macht jetzt die Konfiguration neu, dabei wird es alles Alte übernehmen und nur nach gefragt, wenn was Neues im Kernel ist,Das dürfte bei diesem Kernelsprung eine ganze Menge sein, einfach mal staunen was der Neue jetzt alles kann und einfach mit ENTER jeweils das default übernehmen.
Jetzt kannst du an deinem neuem Kernel noch einstellen was du gerne hättest, Am besten geht das mit mit "make xconfig" dazu musst du aber wahrscheinlich einiges nachinstallieren, zB qt3-devel und das wiederum hat eine Rattenschwanz Abhängigkeiten die es mitinstalliert.
dhcppc3:/usr/src/linux-2.6.30.5 # make xconfig
Wenn du weißt, warum du einen neuen Kernel brauchst, dann solltest du auch finden was du hier an geänderten Konfigurationen einstellen musst. Nur zum ausprobieren brauchst du auch nichts ändern. Ändern bzw einstellen solltest du aber auf jeden Fall unter "General setup" -> "Local version -append do kernel release:" einfach doppelt anklicken, ich setze mal jetzt einfach "-0.1-pae" dort in der EingabeZeile (erscheint wahrscheinlich in der Mitte). Was du hier einträgst wird Bestantteil des eindeutigen Kernelnamens am Ende
Danach "File"-> "save as" als ".config" speichern und Konfiguration ist fertig. Mit "quit" verlassen
Da ich hier im Moment eine 2 Prozessormaschine habe und auch mit 2 Prozessoren kompilieren will
dhcppc3:/usr/src/linux-2.6.30.5 # export MAKE="make -j2" dhcppc3:/usr/src/linux-2.6.30.5 # make -j2
Wenn du mehr Prozessoren hast, dann eben hier statt der 2 eben 4 oder wieviel logische Prozessoren du eben hast, (mit 16 CPUs und überreichlich Speicher macht das richtig Spass;-) ) es geht aber auch mit einem Porzessor nur mit "make" auch, nur dauert es eben etwas länger. jetzt kannst du in aller Seelen Ruhe einen Kaffee trinken gehen ( bei einem langsamen Prozessor auch ein paar mehr, das dauert dann eventuell ein paar Stunden), oder zusehen wie hier einige tausend Zeilen durchlaufen.
Du kannst hier mit "make rpm" auch ein Paket bauen, hat aber den Nachteil, wenn du das installierst, dann steht es in der Datenbank und erzeugt eventuell Konflikte mit den Standardpaketen. Wenn du deinen eigene Kerneli ohne Paket installiert später wieder loshaben willst, musst ihn eben per Hand löschen. Verzeichnisse /usr/src/KERNEL/ ; /lib/modules/KERNEL-NAME/ sowie die Dateien /boot/*KERNEL-NAME und die Eintragungen in der /boot/grub/menu.lst . Wobei du dabei natürlich den richtigen KERNEL-NAMEN erwischen solltest.
Eventuell bricht das Kompilieren mit folgenden Fehler ab.
internal compiler error: Segmentation fault
Dann hast du eventuell einen Speicherfehler oder einen ECC-Error in der CPU gehabt, Einfach nochmal make starten, dann geht das dann genau an dieser Stelle weiter, ist bei PC-Hardware längere Zeit unter permanenter Vollast immer mal drin, das da was zu warm wird. Erst wenn der Fehler immer wieder an der selben Stelle auftreten sollte, bist du entweder auf einen Kernelbug oder eine Fehlkonfiguration gestoßen.
Fertig ist der Kompilierlauf dann irgendwann, wenn er ohne Errormeldung beendet.
Jetzt kommt als nächstes
dhcppc3:/usr/src/linux-2.6.30.5 # make modules_install
damit werden jetzt die Module installiert und die Modulkonfiguration gemacht.
danach kommt
dhcppc3:/usr/src/linux-2.6.30.5 # make install
damit wird jetzt eine initrd gebaut der Kernel installiert und die menu.lst konfiguriert. Es werden für den neuen Kernel jeweils 2 neue Menüpunkte dazufügt. Die /boot/grub/menu.lst sollten wir uns auf jeden Fall vor dem Reboot noch einmal anschauen, insbesondere was er jetzt als default booten will oder soll.
Jetzt kommt der Reboot. wir starten im Grubmenu natürlich jetzt unseren Kernel. Nach dem reboot und der richtigen Auswahl im Grub sollte jetzt wenn alles funktioniert hat der neue Kernel laufen
dhcppc3:~ # uname -r 2.6.30.5-0.1-pae
Haben wir einen speziellen Grafiktreiber, vmware oder sonstiges, dann müsste dort noch einiges gemacht werden damit auch diese Module jetzt neu für den neuen Kernel erstellt werden, aber ansonsten können wir den neuen Kernel testen.
Muss die Konfiguration des Kernels jetzt noch mal geändert werden, weil irgendwas nicht dem entspricht was man will und umkonfiguriert werden soll, dann
cd /usr/src/linux-2.6.30.5 make clean make xconfig make make modules_install make install
und der Kernel wird nochmal gebaut, wird der Kernelnamen geändert, gibt es einen neuen Kernel mit eigenen Modulen und Eintragungen in der menu.lst geben, ansonsten werden die schon vorhandenen überschrieben.