(#1) | ||
<>-<
Beiträge: 4.337
Registriert seit: 23.05.2003
Ort: Wuppertal, NRW |
FAQ : Kernel kompilieren - 05.08.2003,
01:03
Written by 'Hunter'
(Linuxforen.de) :
Diese FAQ soll Anfängern erklären wie sie sicher (!!) einen neuen Kernel kompilieren können. Zur Konfiguration des Kernels kann ich nur ein paar Tipps geben, aber keine Anleitung, da das viel zu viel wäre. Hierzu muss man seinen Rechner selbst kennen und die Hilfetexte lesen. 0. Grundlagen Der Kernel ist das Bindeglied zwischen Programmen und der Hardware. Hier können viele Hardware Komponenten festgelegt werden wie z.B. Unterstützung für IDE und SCSI, Soundkarten, USB, auch Support für Filesysteme und vieles mehr. Deswegen ist es wichtig das man sich mit seinem System auskennt, da man sonst nicht weiß was man überhaupt braucht. Wer dies also nicht weiß sollte es sein lassen, bis er sich damit auskennt. Des weiteren ist es wichtig zu wissen das man drei Einstellmöglichkeiten hat. Man kann eine Option entweder gar nicht installieren (weil man sie nicht bracht), in den Kernel einbinden (weil man sie immer braucht) oder als Modul installieren (weil man sie manchmal braucht). Manche Distributoren raten davon ab einen eigenen Kernel zu kompilieren. Daher sollte man zunächst im Forum nachfragen ob und wie man trotzdem einen neuen Kernel kompilieren kann. 1. Kernelquellen Die Quellen für den Kernel bekommen Sie aufwww.kernel.orgDort können Sie verschiedene Versionen vom FTP Server runter laden. Am besten sie entscheiden sich für den neusten stable Kernel. Von unstable sollten Sie als normaler User lieber die Finger lassen. Die Quellen des Kernels sind als tar.gz über 20 MB groß. Entpackt sind das über 100 MB. Soviel Platz müssten Sie also mindestens haben, was bei den heutigen Platten aber kein Problem sein sollte. Schauen Sie sich vor dem entpacken mal ihr Verzeichnis /usr/src an. Dort finden Sie die Quellen Ihres aktuellen Kernels. Oft sind die Distributoren so schlau gewesen und haben die Kernel Sourcen mit der Versionsnummer versehen, also z.B. linux-2.4.3 und haben dann einen Link "linux" zu diesem Verzeichnis erstellt. Sie sollten also /usr/src/linux-"Version" haben und einen Link mit Namen linux darauf. Sollte es diesen Link nicht geben und nur das Verzeichnis linux da sein wo sich die alten Quellen befinden, dann benennen Sie das Verzeichnis linux zu linux-"Version" um. Sollte es nur den Link geben, dann löschen Sie diesen. Es darf also nur linux-"Version" mit den alten Quellen übrig bleiben. Anmerkung: Die Konsolen Befehle die dazu notwendig sind, sollten sie selbst kennen. Falls nicht, verändern sie die Verzeichnisse unter X z.B. mit "gmc" oder "fr". Wenn Sie kein X haben oder wollen, können Sie auch "mc" benutzen. Erst jetzt dürfen Sie die Quellen nach /usr/src/ entpacken. Es sollte dann automatisch im linux-"neue Version" Verzeichnis liegen. Ist dem so, dann erstellen Sie einen neuen Link "linux" auf dieses neue Verzeichnis. Andernfalls müssen sie erst "linux" umbenennen nach linux-"neue Version" und dann den Link erstellen. Anmerkung: Entpacken können Sie den Kernel mit dem "tar" Befehl oder Hilfsprogrammen wie "ark" oder "gnozip" benutzen. 2. Sauber machen - melden Sie sich als Root an - wenn sie unter X arbeiten öffnen Sie eine Konsole (xterm etc.) - wechseln Sie in das Verzeichnis mit den Quellen cd /usr/src/linux - geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel anfangen: make clean && make mrproper Anmerkung: Damit stellen Sie sicher das keine alten Daten übrig bleiben, die beim kompilieren eines neuen Kernels störend sein könnten. Aber Vorsicht: Die Datei .config die Ihre bis dato gemachten Einstellungen enthält wird hiermit gelöscht. Am besten vorher sichern, wie im nächsten Punkt beschrieben, wenn bereits wichtige Änderungen gemacht wurden. Die Konfigurationsdatei .config ist mit neueren Kernelquellen kompatibel, also ggf. eine eigene .config über die neue drüber kopieren und die alten Einstellungen bleiben. Nächster Schritt ist aber unbedingt notwendig, da u. a. die Datei version.h erstellt wird ohne die sich nix kompiliert. 3. Konfiguration Anmerkung: Sie sollten noch immer in /usr/src/linux sein Um nun den neuen Kernel zu konfigurieren haben Sie drei Möglichkeiten: make config Ihnen werden eine Menge Fragen gestellt die Sie mit y, n, m oder ? beantworten können. y bedeutet fest im Kernel, n bedeutet nicht benutzen, m bedeutet als Modul kompilieren und ? bietet Ihnen einen Hilfetext. Der Vorteil hier ist das Sie sich zwangsläufig mit jeder Einstellmöglichkeit befassen müssen und mit ? einiges darüber erfahren. Der große Nachteil ist das Sie nicht wieder zurück können, wenn Sie etwas anders einstellen wollen. Anmerkung: Für make config brauchen Sie X nicht zu starten. make xconfig Hier haben Sie alle Einstellmöglichkeiten grafisch dargestellt. Sie können jederzeit Einstellungen wieder verändern. Zudem können Sie mit der Maus arbeiten. Der Nachteil ist das man schnell mit den ganzen Fenstern durcheinander kommen kann. Anmerkung: Für make xconfig müssen Sie X starten. 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: 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. 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. o 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 4. Kompilieren und installieren - Nachdem Sie konfiguriert haben ist der Rest nun einfach: make dep && make bzImage && make modules && make modules_install Damit werden alle Abhängigkeiten erfüllt, der Kernel kompiliert, die Module kompiliert und dann die Module installiert. Keine Angst, die Module werden in ein Extra Verzeichnis gepackt, so das Ihre alten nicht verloren gehen. 1._Anmerkung: Eventuell können Fehlermeldungen auftreten. Das kann mit der Version von gcc (ihrem Compiler) zusammenhängen. Geben Sie dann mal folgendes ein : gcc --version Am besten sind die 2.95-2 Versionen. Einige 2.96 gehen auch noch. Nur die ersten 3.0 Versionen und ein paar Versionen davor könnten Ärger machen. Versuchen Sie dann mal eine andere Version und fragen Sie im Forum mal nach welche Versionen was taugen und welche nicht. 2._Anmerkung: Eventuell müssen Sie auch die neueren "modutils" installieren. Wichtig ist das Sie zwar die neuste Version nehmen sollten, die Versionsnummer aber nicht unbedingt mit der Kernelversion übereinstimmen muss. Sie können diese z.B. auf http://www.rpmfind.net/ oder http://www.suse.de/ finden. * kopieren Sie nun den neuen Kernel nach /boot. Sie finden ihn unter /usr/ src/linux/arch/i386/boot/ mit dem Namen bzImage. Benennen Sie ihn am besten dann auch gleich um zu z.B. vmlinuz-2.4.7-1. Die 1 am Ende soll Ihnen helfen Ihre später vielleicht zahlreichen Versionen auseinander halten zu können. Also z.B.: cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-1 - Des weiteren müssen Sie noch die Datei System.map von /usr/src/linux/ nach / boot kopieren. In boot gibt es schon eine System.map die meist ein Link auf z.B. System.map-2.4.3 ist. Kopieren Sie die Datei dann entsprechend mit dem Namen (z.B.) System.map-2.4.7 und erstellen / überschreiben Sie dann halt den Link System.map zu dieser neuen Datei Also z.B.: cp /usr/src/linux/System.map /boot/System.map-2.4.7 rm /boot/System.map (den Link entfernen) ln -s /boot/System.map-2.4.7 /boot/System.map (neuen Link erstellen) Der neue Kernel und die neuen Module (siehe /lib/modules/) sind nun kompiliert und einsatzbereit. Der alte Kernel funktioniert noch genauso wie vorher. Zumindest dann wenn Sie der Anleitung gefolgt sind und nichts überschrieben oder gelöscht haben, sondern nur Links geändert haben und Dateien und Verzeichnisse, nur mit Versionsnummern behaftet, umbenannt haben. 5. Einrichten des neuen Kernels Der nächste Schritt ist nun den Kernel in Lilo einzubinden um ihn nach Bedarf booten zu können. Hier dürfen Sie auf keinen Fall die Einstellungen zum booten des alten Kernels ändern, denn der sollte für alle Zeiten im Notfall bootbar sein. - Wenn ihre Distribution ein eigenes Programm hat mit der Sie Lilo konfigurieren können, so können Sie dies benutzen und als zu bootenden Kernel geben Sie dann den neuen an. Bei Suse und Mandrake besteht diese Möglichkeit definitiv. Achten Sie auch darauf das Sie einen passenden Namen vergeben, z.B. linux-2.4.7. - Besser ist aber der Weg, die /etc/lilo.conf manuell zu bearbeiten. Die Einstellungen vom aktuellen Kernel können Sie kopieren und dann entsprechend ändern. Sollte ein Eintrag "vga" vorhanden sein, so löschen Sie ihn Sicherheitshalber bei den neuen Einstellungen, da sonst Probleme beim booten auftauchen können. * Anschließend führen Sie noch in der Konsole /sbin/lilo aus. Wenn das ohne Fehler funktioniert ist der neue Kernel einsatzbereit und kann gebootet werden. Anmerkung: Wenn sie nicht lilo sondern einen anderen Bootmanager verwenden müssen Sie es im Prinzip genauso machen. Der Grund, warum man das Kommando "lilo" nach dem neukompilieren der Kernels auch dann ausfüren muß, wenn sich der Pfad des Kernels nicht ändert, ist folgender: Lilo findet beim Starten von Linux den Kernel nicht durch den Pfad, welcher in /etc/lilo.conf steht, sondern anhand einer Tabelle (/boot/map), in der sämtliche Sektoren aufgelistet sind, auf denen sich die Kerneldatei befindet. Diese Tabelle stimmt nach dem Neukompilieren nicht mehr, auch wenn der Pfad gleichgeblieben ist. Durch das Ausführen von "lilo" wird eine aktualisierte Version der map-Datei erstellt, und Lilo kann den Kernel wieder starten. 6. vor dem Reboot Bevor Sie nun den Reboot wagen um Ihren neuen Kernel zu testen sollten Sie noch etwas bedenken. Wenn Sie mit X booten und eine Nvidia Karte verwenden, dann haben Sie wahrscheinlich die Treiber von Nvidia installiert. Diese bestehen aus einem GLX Treiber und einem Kernel Modul (!). Wenn Sie nun einfach neu booten, dann fehlt dieses natürlich bei den Modulen des neuen Kernels. Stellen Sie deshalb sicher das nach dem Reboot erst mal NICHT KDM, GDM oder XDM gestartet wird. Des weiteren sollten Sie sich bereits den neuen Treiber von Nvidia als Quellen runtergeladen haben. Nach dem Neustart müssen Sie sich als Root einloggen und die Treiber für den Kernel neu kompilieren und installieren. Die alten sollten sie vorher deinstallieren. Es gibt unter in der Linuxforen FAQ-Section eine Anleitung dazu. Es reicht im Übrigen nicht die vorher mal kompilierten RPM Pakete zu verwenden, da diese nicht zu dem neuen Kernel passen. Es sei denn es war die selbe Version des Kernels für den Sie das gemacht haben. Anmerkung: Dieses Problem besteht nun auch bei anderen Programmen und Treibern. Wenn Sie z.B. eine Soundblaster Live Karte haben und die Treiber von Creative selbst kompiliert haben, dann müssen Sie das für den neuen Kernel alles wieder neu machen. Das reicht aber auch bis nach dem Reboot. Die Grafikkarte ist da viel wichtiger, da Sie ohne Sound leben können, aber ohne Grafikkarte bekommen Sie X nicht gestartet und das kann Ihnen unnötig Probleme bereiten. 7. Reboot Wenn alle Einstellungen wie beschrieben vorgenommen wurden, können Sie den neuen Kernel booten. Achten Sie darauf was beim booten für Fehlermeldungen angezeigt werden und merken Sie sich was z.B. für Module nicht geladen werden können und welche Filesysteme nicht funktionieren weil der Kernel dafür keinen Support enthält. Sollte der Kernel aber ordnungsgemäß hochfahren, dann können Sie von der Konsole aus versuchen einmal X zu starten. Sollte auch das funktionieren, testen Sie Sound, TV Karte, Internet, Netzwerk, Samba usw. durch ob alles funktioniert. 8. Fehlerkorrektur "Nobody is perfekt" und auch einem erfahrenen Linux User kann es passieren das etwas im neuen Kernel nicht wie gewünscht funktioniert. Führen Sie dann einen Reboot durch. Wenn möglich aber kein Reset, da sonst die Festplatte beim nächsten Start überprüft werden muss. Starten Sie dann Ihren alten Kernel und fangen Sie wieder bei Punkt 2 an. Hier müssen Sie nun nicht wieder alles neu machen. Nach Punkt 2 ist zwar der .config File verschwunden, aber dafür haben Sie ja extra gespeichert. Mit xconfig oder menuconfig (config macht keinen Sinn) können Sie dann diesen File laden und Ihre aktuelle Konfiguration überarbeiten. Danach wieder kompilieren und alles einrichten. Anmerkung: Selbst wenn Sie den alten selbst kompilierten Kernel überschreiben, sollten Sie dennoch /sbin/lilo ausführen. Andernfalls kann es aus mir schleierhaften Gründen zu Problemen kommen. 9. Sonstiges * Wenn Ihr neuer Kernel perfekt funktioniert, können Sie ihn zum Standard Kernel machen. Ihr alter sollte aber dennoch weiterhin in Lilo auswählbar bleiben. * Der Punkt Konfiguration ist sicherlich der schwierigste. Sie können aber im Forum dazu Fragen stellen und bekommen sie mit Sicherheit auch beantwortet. * Bleiben Sie ordentlich und speichern Sie jede Version Ihrer Konfiguration ab. Löschen Sie ältere Config Files erst wenn der neue Kernel einwandfrei funktioniert. Kopieren Sie dann den aktuellen mit entsprechendem Namen nach /boot, damit Sie auch später noch die Übersicht behalten. * Wenn eine neue Version des Kernels als stabil freigegeben wird, reicht es wenn Sie einen Patch runter laden und in ihr Quellenverzeichnis kopieren. Also nach /usr/src/linux kopieren und in dieses Verzeichnis wechseln. Danach folgendes eingeben: scripts/patch-kernel Anmerkung: Nun werden ihre Quellen auf den neusten Stand gebracht. Beachten Sie aber das Sie die Reihenfolge der Patches beibehalten. Sie können mit Patch 2.4.8 nicht den Kernel 2.4.6 patchen wenn Sie nicht auch den Patch 2.4.7 haben. Das Script muss im übrigen nur einmal ausgeführt werden. Wenn alle Patches vorhanden sind werden alle automatisch ausgeführt. * Der Ordnung halber sollten Sie dann beim Quellverzeichnis die Versionsnummer entsprechend ändern. Den Link "linux" müssen Sie dann natürlich auch wieder ändern, aber wie gesagt, bleiben Sie ordentlich, damit Ihnen keine vielleicht folgenschweren Fehler passieren. * Sie können ihre aktuelle Konfiguration dann im neuen Kernel wieder verwenden und dann einen neuen Kernel mit der höheren Version kompilieren und einrichten. Wenn Sie dann nur noch den ganz neuen benutzen können Sie in /lib/modules ihre älteren Module löschen, da sie nutzlos sind wenn kein Kernel mehr dafür da ist. Achten Sie aber darauf das Sie die Module ihres 1. Kernels (von der Distribution) nicht löschen. 10. Schlussbemerkungen Jetzt noch ein paar Bemerkungen von mir. Ich behaupte nicht das es einfach ist einen neuen Kernel zu kompilieren bzw. zu konfigurieren. Ich selbst habe eine Woche gebraucht in der ich jeden Tag ein paar Stunden daran gearbeitet habe. Deshalb habe ich nun diese FAQ geschrieben, damit andere Leute einen leichteren Einstieg finden. Es gibt außerdem noch weitere Befehle und Möglichkeiten. Beispielsweise kann man in den Kernel noch zusätzliche Funktionen einbauen, wie z.B. automatisches mounten und unmounten des CD, je nach Bedarf. da ich mich dabei noch nicht auskenne habe ich dazu auch nichts geschrieben. Sobald ich Ahnung davon habe wird dieser Text überarbeitet. Zusätzlich können die Leser dieser FAQ sich im Forum dazu äußern und Vorschläge machen was noch rein sollte oder was geändert werden müsste. Zitat:
| |
|
(#2) | |
Steirer
Beiträge: 2.109
Registriert seit: 01.06.2003
Ort: ÖSTERREICH |
05.08.2003, 19:19
net schlecht
gute FAQ
Das [[Unixboard]] Wiki Der
#Unixboard Chat
-- Nichts ist so mysthisch als die Fähigkeit der menschlichen Einbildung. -- My friend, you would not tell with such high zest To children ardent for some desperate glory, The old Lie: Dulce et decorum est Pro patria mori. |
|
(#3) | |
BENUTZT GOOGLE - VERDAMMT
Beiträge: 702
Registriert seit: 04.04.2003 |
05.08.2003, 19:33
Hab sie mir auch mlal
durchgelesen, sie ist sehr gut geworden
und hat einen Ehrenplatz in /home/riddler/ebooks erhalten
Sein heißt in der Klemme sein-Ich habe nie erlebt was Sein bedeutet, außer in höchst unphilosophischen Momenten-Wer nicht leidet, ist kein Dagewesener, allerhöchstens ein Individuum-Gefühle, was nicht möglich ist ausgedrückt zu werden, ist es nicht wert gesagt zu werden-Nur jene denken tief, die nicht das Unglück haben, mit dem Sinn der Lächerlichkeit behaftet zu sein |
|
(#4) | |
ehem. Mod
Beiträge: 1.796
Registriert seit: 12.12.2002 |
05.08.2003, 19:57
Bis jetzt habe ich nur 2 Mal einen Kernel bei der Installation von Gentoo kompiliert. Mit der Beschreibung kann man es wagen, auch zwischendurch den Kernel zu aktuallisieren. Win2k, Ubuntu 6.10, Toorox 11.2006, Win Vista RC2 |
|
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
fehlermeldung bei nfs | barton4 | Linux OS | 4 | 04.11.2004 14:43 |
kernel meldung | mascera | Linux OS | 2 | 26.10.2004 19:41 |
ISDN-Problem | ##Tom## | Internet, lokale Netzwerke und Wireless Lan | 27 | 06.09.2004 22:21 |
ide-Streamer nutzen | BigMichi1 | Mandriva | 5 | 11.08.2003 18:12 |
What the f****???? | Marco | Debian/Ubuntu | 14 | 17.07.2002 21:29 |