Kernel kompilieren: Unterschied zwischen den Versionen

Aus ThinkPad-Wiki
(Hinweis "veraltet"; Link)
 
(45 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Bild:Qsicon_inArbeit.png]]
'''<u>Hinweis:</u> diese Anleitung ist stark veraltet. Aktuelle Informationen zum Erstellen eines eigenen Kernels für Ubuntu finden sich im  [http://wiki.ubuntuusers.de/Kernel/Kompilierung Ubuntuusers-Wiki].'''


Hier gehts um Kernel kompilieren, Patches einbauen und andere systemnahe Funktionen unter Linux freischalten


== Was bringt ein selbst compilierter Kernel? ==
__TOC__


Der Sprung von 2.6.24 zu 2.6.25 lohnt sich insofern, als dass die Rescheduling und die Timer Interrupts endlich deutlich weniger sind und der Kernel dadurch bei geringer Last etwa 0,75W +-0,25W weniger Strom verbraucht. Ein T61 14,1" Wide + Nvidia Quadro 140 (mit dem neuestem Nvidia-Treiber) verbraucht etwa 11,5 W mit Wlan, bei niedrigster Helligkeit und entladenen Usb-Modulen. Da waren es vorher etwa 12,5W. (64-bit Version von Ubuntu Hardy).
Hier geht es darum, seinen eigenen Kernel zu kompilieren, Patches einzubauen und systemnahe Funktionen unter Linux freizuschalten.


Mit Kernel 2.6.26 funktioniert die WLAN LED endlich.
== Was bringt ein selbst kompilierter Kernel? ==


Ob sich die Mühe hierfür lohnt? Eher nicht, da der Nvidia-Treiber von Hand installiert und ein Softlink nachträglich angepasst werden muss (für die Intel4965 Wlan-Firmware). Da ich aber auch Hdaps nutzen wollte, hätte ich sowieso den Kernel neu backen müssen, von daher habe ich dann gleich den neuen genommen.
[[Bild:Powertop-1.10.png|thumb|Poertop 1.10 erkennt unter Kernel 2.6.26 auch C4 Deeper Sleep]]
 
* Der Sprung von Kernel 2.6.24 zu 2.6.25 lohnt sich insofern, als dass die Rescheduling- und die Timer-Interrupts endlich deutlich weniger sind und der Kernel dadurch bei geringer Last etwa 0,75W +-0,25W weniger Strom verbraucht. Ein T61 14,1" Wide + Nvidia Quadro 140 (mit dem neuestem Nvidia-Treiber) verbraucht etwa 11,5 W mit Wlan, bei niedrigster Helligkeit und entladenen Usb-Modulen. Da waren es vorher etwa 12,5W. (64-bit Version von Ubuntu Hardy).
* Mit Kernel 2.6.26 funktioniert die WLAN LED endlich.
* Man kann den Kernel "patchen" beispielsweise mit dem [[PHC-Patch]], um mit niedrigeren Spannungswerten arbeiten zu können (Undervolting) oder auch Festplattenschutz (Hdaps). Dies erfordert ein Neukompilieren.
* PowerTOP neue Version 1.10 erfordert den Kernel 2.6.25 oder neuer
* Compiliern der USB Treiber in den Kernel erreicht funktionierendes USB autosuspend und spart dadurch 1-2 Watt
 
Ob sich die Mühe hierfür lohnt muss man selber entscheiden. Der Aufwand besteht jedenfalls im Editieren der Kernel-Konfiguration (geht in einer grafischen Oberfläche und wenn man sich auskennt - oder dieser Anleitung folgt - ist das in 5 min erledig) sowie etwa eine Stunde Kompilier-Vorgang (je nach Rechnerleistung und Modulauswahl). Dann muss man die Grafikkarte (z.B. Nvidia-Treiber) von Hand installieren (dabei kann Envy oder Kernelcheck helfen). Und ein Softlink auf das Firmware-Verzeichnis muss nachträglich angepasst werden (z.B. für Intel3945 Wlan-Firmware).  
 
Nachteile erkauft man sich u.U. damit, dass die "bleeding edge" Kernel auch unausgereifter sind. Hier sollte man sich also vorab informieren, welche Probleme mit einem Kernel auftreten können und welche Bugs noch ungelöst sind.
 
== Manuell oder skriptgesteuert kompilieren? ==
 
Grundsätzlich gibt es zwei Wege zum neuen Kernel: Manuelles Kompilieren oder automatisiert per Skript, etwa mit Kernelcheck. Das Ergebnis ist das selbe. Einige Experten bevorzugen die manuelle Variante, weil sie da genauer sehen was passiert. Kernelcheck verrichtet aber seine Arbeit zuverlässig und spart Tipparbeit. Und für Neulinge wird damit das Kernel Kompilieren deutlich einfacher.


== Kernel Config ==
== Kernel Config ==


Die Optionen in der Config kann man beibehalten, in erster Linie verlängern sie nur erheblich den Kompilierprozess (bei mir etwa 40min statt 1:20h) und machen das Kernel-deb-Paket etwas größer.
Die größte Hürde ist das Konfigurieren des neuen Kernels. Weit über 100 Optionen erschlagen einen. Aber man muss hier nicht alle durchgehen, sondern kann die bisherige Konfiguration für den neuen Kernel übernehmen. Dies geht per Auto-Anpassung mit dem Befehl make oldconfig bzw. Kernelcheck macht dies automatisch. Ohne weitere manuelle Bearbeitung werden allerdings Wlan und Soundtreiber nicht aktiviert. Man musste diese Optionen also in der Config manuell anwählen, siehe Sreenshots.
Einziges Manko, bei den ersten Configs waren nach der Auto-Anpassung die Wlan und Soundtreiber nicht mehr aktiviert (linux-image-2.6.24-16). Man musste die also in der Config manuell anwählen. Wie das im Moment ist, weiß ich nicht, da ich seitdem meine angepasste Config "mitschleppe". Daher würde ich raten alles per Default mitzunehmen wie es ist und lieber überflüssige Module per rc.local zu entladen. Unter "Networking-> Wireless" darauf achten das der mac80211 aktiv ist. Unter "Device Drivers-> Network Device Support -> Wireless LAN" darauf achten, evtl Deine Treiber als Modul zu aktivieren (ja nach Wlan-Karte halt). Und unter "Device Drivers -> Sound" sollte ebenfalls das meiste angewählt sein.


== Kernel manuell compilieren ==
== Kernel manuell kompilieren ==


Der Ablauf in Kürze für den 2.6.25.7:
Der Ablauf in Kürze am Beispiel Kernel 2.6.25.7:
  sudo apt-get install  build-essential kernel-package xmlto libqt3-mt-dev #notwendige Pakete installieren
  sudo apt-get install  build-essential kernel-package xmlto libqt3-mt-dev #notwendige Pakete installieren
Zeile 37: Zeile 49:
  exit
  exit


== Kernel mit Kernelcheck compilieren ==
== Kernel mit Kernelcheck kompilieren ==


[[Bild:Bildschirmfoto-KernelCheck_HopeStar.png|thumb|Kernelcheck erlaub die komfortable Prüfung des Kernelstatus und automatisiert den Kompilier-Prozess]]
[[Bild:KernelConfig_ac97.png|thumb|Grafische Konfiguration des Kernels]]
[[Bild:KernelConfig_ac97.png|thumb|Grafische Konfiguration des Kernels]]
[[Bild:Intel_hda.png|thumb|Kernel Config-Einstellungen für Intel Sound]]


[[Bild:KernelcheckPatchTerminal.png|thumb|Kernelcheck bietet die Option, Patches in einem Terminal durchzuführen und damit individuelle Anassungen am Kernel vorzunehmen. Alles andere ist per Script automatisiert]]
[[Bild:KernelcheckPatchTerminal.png|thumb|Kernelcheck bietet die Option, Patches in einem Terminal durchzuführen und damit individuelle Anpassungen am Kernel vorzunehmen. Alles andere ist per Script automatisiert]]


etwas einfacher geht das mit [http://kcheck.sourceforge.net/ Kernelcheck]. Notwendige Schritte:
etwas einfacher geht das mit [http://kcheck.sourceforge.net/ Kernelcheck]. Notwendige Schritte:


* Kernelcheck .deb runterladen und starten
* Kernelcheck .deb per runterladen, installieren und starten
* Kernelversion abfragen und ggf. bestimmte auswählen (normalerweise ist hier keine Änderung nötig)
* Kernelversion abfragen lassen ("get Kernel Information") und ggf. bestimmte auswählen (normalerweise ist hier keine Änderung nötig)
* "Build new Kernel" anwählen
* bei den Patch Optionen "Custom Patch" wählen, wenn man manuell Patches hinzufügen will (empfohlen)
* es wird ein Terminal angeboten, in dem man die Patches selber hinzufügt (siehe unten
* "Build new Kernel" anwählen (über Menü)
* es wird eine Kernel Konfiguration aus der alten generiert und dann grafisch angezeigt (s. Abb.). Hier muss man die gewünschten Änderungen wählen.
* es wird ein Terminal angeboten, in dem man die Patches selber hinzufügt (siehe Patches unten)
* einzubinden sind: Sound (ALSA und AC97) sowie WLAN (z.B. iwl3945)
* es wird eine Kernel-Konfiguration aus der alten generiert und dann grafisch angezeigt (s. Abb.). Hier muss man die gewünschten Änderungen wählen:
* durchlaufen lassen und renooten (Kernelcheck kompiliert und macht die Boot-Einträge alles automatisch)
** einzubinden sind: Sound (ALSA, Intel HD und AC97) sowie WLAN (z.B. iwl3945), siehe Abbildungen
* Konfiguration speichern und Fenster schließen. Den Kompilier-Prozess durchlaufen lassen (dauert circa 1h auf 1,6 Ghz Core Duo) und danach neustarten (Kernelcheck kompiliert und macht die Boot-Einträge, alles automatisch)


== Nachbearbeitung ==
=== Nachbearbeitung ===


Firware Verzeichnis eines früheren Kernels symbolisch verlinken
Firmware Verzeichnis eines früheren Kernels symbolisch verlinken:


== Kernel Patches / Module ==
sudo ln -s /lib/firmware/2.6.24-19-generic/ /lib/firmware/2.6.26.1-ultimate


* APS-Patch funktioniert nicht, da er die Datei block/ll_rw_blk.c patchen will, die nirgendwo im 2.6.26er-Baum liegt. Der letzte APS-patch ist denn ja auch für 2.6.18.3 erschienen.
== Kernel Patches ==
:* Update: Der APS Patch geht: http://www.thinkwiki.org/wiki/HDAPS aber nicht vergessen, vorher den libata Patch zu integrieren, sonst bleibt evtl das System hängen
* Thinkpad-acpi
* Undervolting: PHC-Patch (2.6.26, nach [http://howflow.com/tricks/undervolt_your_cpu_with_linux_phc_and_kernel_2_6_26dieser Anleitung])
* tp_smapi;
* APS: How to protect the harddisk through APS Siehe auch Problem with APS harddisk parking
* WLAN-LED im iwlwifi-Treiber soll ja nun oob funktionieren. Naja, mal schauen, was wir zusammenstellen können.


noch integrieren:
* Festplattenschutz: HDAPS Patch für Kernel 2.6.26 nach [http://www.thinkwiki.org/wiki/HDAPS thinkwiki Anleitung] anwenden. Dabei nicht vergessen, vorher den libata Patch zu integrieren, sonst bleibt evtl das System hängen
* Undervolting: [[PHC-Patch]] anwenden nach [http://phc.athousandnights.de/viewtopic.php?f=8&t=8 dieser Anleitung]
* später kann man dann Core-Spannungen reduzieren nach [http://wiki.ubuntuusers.de/Prozessorspannung_absenken dieser Anleitung]
* direkter Link zum PHCTool - GUI für den linux-phc patch. [http://phc.athousandnights.de/viewtopic.php?f=14&t=17 Link]


daniel: "Zu tp_smapi: Worin besteht für Euch der Sinn einer Kernelintegration? Sinnvoller ist es doch den Treiber als Modul laden zu lassen, zumal dies auch eine separate Aktualisierung erlaubt.
== Powertop 1.10 ==
Zu thinkpad_acpi: Dieser Treiber ist bereits im Kernel integriert. Warum die manuelle Integration? Denn im Moment ist auch die kernelintegrierte Verion aktuell.
Und tuxonice ist auch nur nötog, wenn der Ruhezustand nicht richtig funktioniert :)


Von daher bleib ich bei zwei Dingen, nämlich APS und PHC ^^
new in this release:
PHC wird übrigens wieder weiterentwickelt: PHC"
* USB suspend statistics
* support for iwl4965 power saving
* Powertop now reports which C-states are supported by CPU/BIOS (requires 2.6.25 or newer kernel).
* Updated translations: ja, pt_BR, hu, id, zh
 
* Website: As of release 1.9, the [http://www.lesswatts.org/projects/powertop/ PowerTOP website] is part of the higher level lesswatts.org website.
 
Für diese Verison gibt es noch keine Pakete im Repository. Man muss Powertop also selber aus den Quellen kompilieren. Dies geht mit folgenden 5 Befehlen (entpacken, ins richtige Verzeichnis wechseln, kompilieren, installieren, starten):
 
tar -zxf powertop-1.9.tar.gz
cd powertop-1.9
make
make install
powertop
 
== User-Erfahrungen mit den Kernelversionen ==
 
* '''Kernel 2.6.26-Ultimate'''@x61t: Läuft stabil. Stromverbrauch geringfügig niedriger als bei 2.6.24. USB autosusbend klappt endlich. Ebenso WLAN LED. Und Powertop 1.10. Allerdings funktioniert Resume nach Suspend to RAM nicht - Status: ungeklärt --[[Benutzer:Pibach|pibach]] 15:15, 20. Jul. 2008 (CEST)
* '''Kernel 2.6.26.1-Ultimate'''@x61t: Läuft stabil, endlich auch mit Suspend to RAM. --[[Benutzer:Pibach|pibach]] 20:55, 8. Aug. 2008 (CEST)
 
== Alte Kernel-Versionen entsorgen ==
 
Nicht mehr benötigte Kernel-Versionen kann man komfortabel einfach mit dem Paket-Manager (z.B. Synaptic) entfernen.


== Links ==
== Links ==


siehe auch [http://www.thinkpad-forum.de/thinkpad-software/linux/p393136-ubuntu-hardy-und-kernel-2-6-25/ diesen Thread] und [http://www.thinkpad-forum.de/thinkpad-software/linux/45654-2-6-26-welche-treiber-patches-einbauen/ diesen] im ThinkPad-Forum
siehe auch [http://www.thinkpad-forum.de/thinkpad-software/linux/p393136-ubuntu-hardy-und-kernel-2-6-25/ diesen Thread] und [http://www.thinkpad-forum.de/thinkpad-software/linux/45654-2-6-26-welche-treiber-patches-einbauen/ diesen] im ThinkPad-Forum
[[Kategorie:Linux]]
[[Kategorie:Kandidat Lesenswerter Artikel]]

Aktuelle Version vom 8. Januar 2012, 15:51 Uhr

Hinweis: diese Anleitung ist stark veraltet. Aktuelle Informationen zum Erstellen eines eigenen Kernels für Ubuntu finden sich im Ubuntuusers-Wiki.


Hier geht es darum, seinen eigenen Kernel zu kompilieren, Patches einzubauen und systemnahe Funktionen unter Linux freizuschalten.

Was bringt ein selbst kompilierter Kernel?

Poertop 1.10 erkennt unter Kernel 2.6.26 auch C4 Deeper Sleep
  • Der Sprung von Kernel 2.6.24 zu 2.6.25 lohnt sich insofern, als dass die Rescheduling- und die Timer-Interrupts endlich deutlich weniger sind und der Kernel dadurch bei geringer Last etwa 0,75W +-0,25W weniger Strom verbraucht. Ein T61 14,1" Wide + Nvidia Quadro 140 (mit dem neuestem Nvidia-Treiber) verbraucht etwa 11,5 W mit Wlan, bei niedrigster Helligkeit und entladenen Usb-Modulen. Da waren es vorher etwa 12,5W. (64-bit Version von Ubuntu Hardy).
  • Mit Kernel 2.6.26 funktioniert die WLAN LED endlich.
  • Man kann den Kernel "patchen" beispielsweise mit dem PHC-Patch, um mit niedrigeren Spannungswerten arbeiten zu können (Undervolting) oder auch Festplattenschutz (Hdaps). Dies erfordert ein Neukompilieren.
  • PowerTOP neue Version 1.10 erfordert den Kernel 2.6.25 oder neuer
  • Compiliern der USB Treiber in den Kernel erreicht funktionierendes USB autosuspend und spart dadurch 1-2 Watt

Ob sich die Mühe hierfür lohnt muss man selber entscheiden. Der Aufwand besteht jedenfalls im Editieren der Kernel-Konfiguration (geht in einer grafischen Oberfläche und wenn man sich auskennt - oder dieser Anleitung folgt - ist das in 5 min erledig) sowie etwa eine Stunde Kompilier-Vorgang (je nach Rechnerleistung und Modulauswahl). Dann muss man die Grafikkarte (z.B. Nvidia-Treiber) von Hand installieren (dabei kann Envy oder Kernelcheck helfen). Und ein Softlink auf das Firmware-Verzeichnis muss nachträglich angepasst werden (z.B. für Intel3945 Wlan-Firmware).

Nachteile erkauft man sich u.U. damit, dass die "bleeding edge" Kernel auch unausgereifter sind. Hier sollte man sich also vorab informieren, welche Probleme mit einem Kernel auftreten können und welche Bugs noch ungelöst sind.

Manuell oder skriptgesteuert kompilieren?

Grundsätzlich gibt es zwei Wege zum neuen Kernel: Manuelles Kompilieren oder automatisiert per Skript, etwa mit Kernelcheck. Das Ergebnis ist das selbe. Einige Experten bevorzugen die manuelle Variante, weil sie da genauer sehen was passiert. Kernelcheck verrichtet aber seine Arbeit zuverlässig und spart Tipparbeit. Und für Neulinge wird damit das Kernel Kompilieren deutlich einfacher.

Kernel Config

Die größte Hürde ist das Konfigurieren des neuen Kernels. Weit über 100 Optionen erschlagen einen. Aber man muss hier nicht alle durchgehen, sondern kann die bisherige Konfiguration für den neuen Kernel übernehmen. Dies geht per Auto-Anpassung mit dem Befehl make oldconfig bzw. Kernelcheck macht dies automatisch. Ohne weitere manuelle Bearbeitung werden allerdings Wlan und Soundtreiber nicht aktiviert. Man musste diese Optionen also in der Config manuell anwählen, siehe Sreenshots.

Kernel manuell kompilieren

Der Ablauf in Kürze am Beispiel Kernel 2.6.25.7:

sudo apt-get install  build-essential kernel-package xmlto libqt3-mt-dev #notwendige Pakete installieren
cd /usr/src   #ins Verzeichnis der Kernelsourcen wechseln
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.7.tar.bz2   #Herunterladen des neuen Kernels
sudo -s   #nicht der Königsweg, mich würden aber die 12 mal  "sudo" die jetzt notwendig sind, nerven
tar xjf linux-2.6.25.7.tar.bz2   #entpacken
rm linux   #evtl vorhandenes Verzeichnis löschen
ln -s linux-2.6.25.7 linux   #Softlink erstellen
cd linu x   #Verzeichnis wechseln
cp /boot/config_$(uname -r) .config   #aktuelle Kernelconfig zum neuen Kernel kopieren
#patch -p1 -l < /Speicherort/des/Patches   #evtl patchen, z.B. libata und hdaps
make oldconfig   #alte Config an neuen Kernel anpassen
make xconfig   #Config editieren
make-kpkg clean   #aufräumen
make-kpkg --initrd --revision=meineeigeneVersion binary   #Kaffee oder Tee trinken gehen 
#ln -s /lib/firmware/2.6.24-19-generic /lib/firmware/2.6.25.7   #evtl noch fehlenden Softlink setzen
exit

Kernel mit Kernelcheck kompilieren

Kernelcheck erlaub die komfortable Prüfung des Kernelstatus und automatisiert den Kompilier-Prozess
Grafische Konfiguration des Kernels
Kernel Config-Einstellungen für Intel Sound
Kernelcheck bietet die Option, Patches in einem Terminal durchzuführen und damit individuelle Anpassungen am Kernel vorzunehmen. Alles andere ist per Script automatisiert

etwas einfacher geht das mit Kernelcheck. Notwendige Schritte:

  • Kernelcheck .deb per runterladen, installieren und starten
  • Kernelversion abfragen lassen ("get Kernel Information") und ggf. bestimmte auswählen (normalerweise ist hier keine Änderung nötig)
  • bei den Patch Optionen "Custom Patch" wählen, wenn man manuell Patches hinzufügen will (empfohlen)
  • "Build new Kernel" anwählen (über Menü)
  • es wird ein Terminal angeboten, in dem man die Patches selber hinzufügt (siehe Patches unten)
  • es wird eine Kernel-Konfiguration aus der alten generiert und dann grafisch angezeigt (s. Abb.). Hier muss man die gewünschten Änderungen wählen:
    • einzubinden sind: Sound (ALSA, Intel HD und AC97) sowie WLAN (z.B. iwl3945), siehe Abbildungen
  • Konfiguration speichern und Fenster schließen. Den Kompilier-Prozess durchlaufen lassen (dauert circa 1h auf 1,6 Ghz Core Duo) und danach neustarten (Kernelcheck kompiliert und macht die Boot-Einträge, alles automatisch)

Nachbearbeitung

Firmware Verzeichnis eines früheren Kernels symbolisch verlinken:

sudo ln -s /lib/firmware/2.6.24-19-generic/ /lib/firmware/2.6.26.1-ultimate

Kernel Patches

  • Festplattenschutz: HDAPS Patch für Kernel 2.6.26 nach thinkwiki Anleitung anwenden. Dabei nicht vergessen, vorher den libata Patch zu integrieren, sonst bleibt evtl das System hängen
  • Undervolting: PHC-Patch anwenden nach dieser Anleitung
  • später kann man dann Core-Spannungen reduzieren nach dieser Anleitung
  • direkter Link zum PHCTool - GUI für den linux-phc patch. Link

Powertop 1.10

new in this release:

  • USB suspend statistics
  • support for iwl4965 power saving
  • Powertop now reports which C-states are supported by CPU/BIOS (requires 2.6.25 or newer kernel).
  • Updated translations: ja, pt_BR, hu, id, zh
  • Website: As of release 1.9, the PowerTOP website is part of the higher level lesswatts.org website.

Für diese Verison gibt es noch keine Pakete im Repository. Man muss Powertop also selber aus den Quellen kompilieren. Dies geht mit folgenden 5 Befehlen (entpacken, ins richtige Verzeichnis wechseln, kompilieren, installieren, starten):

tar -zxf powertop-1.9.tar.gz
cd powertop-1.9
make
make install
powertop

User-Erfahrungen mit den Kernelversionen

  • Kernel 2.6.26-Ultimate@x61t: Läuft stabil. Stromverbrauch geringfügig niedriger als bei 2.6.24. USB autosusbend klappt endlich. Ebenso WLAN LED. Und Powertop 1.10. Allerdings funktioniert Resume nach Suspend to RAM nicht - Status: ungeklärt --pibach 15:15, 20. Jul. 2008 (CEST)
  • Kernel 2.6.26.1-Ultimate@x61t: Läuft stabil, endlich auch mit Suspend to RAM. --pibach 20:55, 8. Aug. 2008 (CEST)

Alte Kernel-Versionen entsorgen

Nicht mehr benötigte Kernel-Versionen kann man komfortabel einfach mit dem Paket-Manager (z.B. Synaptic) entfernen.

Links

siehe auch diesen Thread und diesen im ThinkPad-Forum