Mein kleines Notebook hier hat mit Linux leider ein kleines Problemchen. Bei jeder noch so kleinen Belastung der CPU, dreht der Lüfter sofort hoch. Selbst das Aufrufen einer Webseite mit Firefox sorgt somit für Lärm im Raum. Die Lösung dafür war schon immer das Absenken der CPU-Spannung durch das Patchen eines Kernel-Moduls. Dadurch läuft das Gerät praktisch geräuschlos.

Nun baut Ubuntu jedoch seit Jaunty die dafür nötigen Kernel-Module fest in den Kernel ein. Dadurch ist es nicht mehr möglich nur das eine Kernel-Module zu patchen, es muss leider der gesamte Kernel neu kompiliert werden… Vor einigen Monaten habe ich bereits über eine Paketquelle mit einem „PHC-Kernel“ geschrieben, in der Hoffnung dass mit der Quelle die Kernel-Kompiliererei ein Ende hat, doch bislang war ich vom linux-phc Team etwas enttäuscht. Das PPA hat meiner Erinnerung nach, während der bisherigen Lebenszeit von Jaunty gerade mal ein Update erfahren.

Mit Ubuntu Karmic ändert sich das Vorgehen mal wieder etwas. Das PPA enthält nun einen Kernel, der die SpeedStep-Module komplett fehlen, so kann man sich die Kernelmodule selber erzeugen…

PHC-Kernel installieren

Den Anfang macht die Installation des angepassten Kernels, man kann den Kernel sowie die nötigen Bibliotheken und Tools für das Kompilieren des Kernelmoduls via…

$ sudo add-apt-repository ppa:linux-phc/ppa
$ sudo apt-get install build-essential linux-generic-phc linux-headers-generic-phc

…herunterladen und installieren. Nach der Installation startet man am besten den Rechner neu. Beim Booten steht jetzt ein zusätzlicher Kernel, der mit -phc endet, zur Verfügung. Speed-Stepping sollte mit diesem Kernel erstmal nicht funktionieren, wundert Euch also nicht wenn die CPU vorerst immer mit maximaler Taktrate läuft.

Kernelmodule erzeugen

Nun könnt Ihr euch aus dem Forum von linux-phc.org bereits gepatchte Kernelmodule herunterladen. Es gibt zwei Varianten, einmal phc-k8*.tar.gz für AMD X2, AMD Turion64 und AMD Turion X2 Prozessoren und einmal phc-intel*.tar.gz für Intel Mobile Centrino, Atom (N2xx) und Intel Core/Core2 CPUs. Ihr müsst das passende Kernelmodul wählen.

Ich habe hier ein Gerät mit einem alten Intel Centrino, daher führe ich das am Beispiel des gerade aktuellen Moduls phc-intel-0.3.2-8.tar.gz durch… Habt Ihr das Modul heruntergeladen, so müsst Ihr es entpacken und in das entstandene Verzeichnis wechseln…

$ tar -xzf phc-intel*
$ cd phc-intel*

Nun könnt ihr das Modul erzeugen, kompilieren und installieren. Dies könnt Ihr via…

$ make prepare
$ make
$ sudo make install
$ sudo modprobe phc-intel

…durchführen. Solltet ihr Schwierigkeiten dabei haben, so liefert die im Archiv enthaltene README Datei weitere Informationen. Den Erfolg könnt Ihr wieder via…

$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
16:33 14:33 12:20 10:14 8:6 6:4 

…ausprobieren. Ist das Modul erfolgreich gebaut worden und habt Ihr es via modprobe geladen, dann zeigt die Ausgabe von cat etwas an, falls die Ausgabe nichts bringt, dann hakt es irgendwo. Damit das Kernelmodul von nun an automatisch geladen wird, steckt ihr es in die Datei /etc/modules. Öffnet dazu die Datei in einen Editor mit Root-Rechten…

$ sudo gedit /etc/modules

und fügt die Zeile…

phc-intel

…ein. Speichert die Datei abschließend. Ihr seid damit noch nicht fertig… Ihr müsst noch passende Spannungswerte ermitteln und die Einstellungen permanent in Eurem System verankern. Seit Jaunty hat sich das Vorgehen nicht verändert. Informationen dazu findet Ihr im älteren Artikel PPA für Jaunty mit gepatchtem Kernel zum Undervolten.

Governor ohne PolicyKit-Abfrage ändern

Abschließend noch ein kleiner Tipp, der mit dem Thema hier nicht direkt etwas zu tun hat. In den Kommentaren zu Ubuntu Karmic Koala 9.10 aus meiner Sicht hat Christoph Wickert Hinweise gegeben, wie man auch mit PolicyKit-1 von GNOME aus Karmic die Taktrate bzw. den Governor ohne Passwortabfrage ändern kann. Ich füge dazu alle Benutzer, die den Governor ändern können sollen, in die Gruppe „users“ ein…

$ sudo adduser $USER users

(Kleiner Hinweis: Ihr müsst euch einmal aus und wieder einloggen. Erst dann werden die Gruppenzugehörigkeiten neu eingelesen) Danach könnt Ihr via…

$ sudo gedit /var/lib/polkit-1/localauthority/50-local.d/gnome-cpufreq.pkla

…die nötige Konfigurationsdatei erstellen. Als Inhalt fügt Ihr…

[Allow users to set the CPU frequency]
Identity=unix-group:users
Action=org.gnome.cpufreqselector
ResultAny=no
ResultInactive=no
ResultActive=yes

…ein. Danach könnt Ihr die Taktrate ohne die Eingabe eines Passwortes ändern.

33 Kommentare

  1. Vielen Dank für den PHC-Beitrag/Artikel (wie sagt man jetzt eigentlich?) – werde ich auf meinem Samsung NC10 ausprobieren – unter Arch Linux hat das zwar nicht wirklich etwas gebracht, aber wer weiss…
    Auf einem alten 1,5Ghz Centgrino (FSC Amilo 1425 meiner Frau) kann ich seit Jahren damit den Lärmpegel deutlich reduzieren 🙂

  2. @cywhale
    Bitte berichte über den Erfolg, hab auch ein NC10, aber mir is das doch etwas zu heikel für den Falls das es nix bringt. war mit dem Lüftergedrehe noch nie zufrieden, neben einem systemweiten EQ übrigens meine einzigen Kritikpunkte an Ubuntu(Karmic).
    Schöner Artikel btw

  3. jgesel, so aufwändig und „gehährlich“ ist die Aktion nicht. Ich hab die Werte so bestimmt dass ich die Spannung erstmal recht niedrig gesetzt habe und dann das System gestresst habe. Blieb die Kiste stabil, dann war die optimale Spannung gefunden. So kann man sich an die idealen Spannungen herantasten.

  4. So – „Erfolg“ auf dem NC10 nur teilweise, intel-phc läuft wie hier beschrieben soweit problemlos, ebenso die Installation an sich. Leider nur ändert sich das Lüfterverhalten nicht merklich (phc_control von 32/?/?/15 runter auf 20/15/15/15, 15 ist Minimum) – kann man mit PHC bei einem ATOM überhaupt noch etwas rausholen?

  5. Hi Christoph,

    nachdem ich schon unter Jaunty dank Deiner exzellenten Anleitung meine CPU runtertakten konnte, will ich nun dasselbe unter Karmic tun. Im von Dir verlinkten Thema im lphc-Forum steht allerdings nun an erster Stelle:

    „phc-intel-0.3.2-9 offtree — Using this package you can build a patched module outside the kernel tree. (You do not need to patch your Kernel anymore)“

    Ich nehme an, für diesen Patch ist Deine Anleitung nicht mehr gültig, oder?

  6. Ich konnte meine Frage inzwischen selbst beantworten. Christophs Anleitung ist auch für das aktuelle
    phc-intel-0.3.2-9 offtree package zusammen mit dem 2.6.31-17-generic-phc Kernel unverändert anwendbar.

  7. Eigentlich nein, aber du musst schauen welchen Kernel du bootest. Der PHC Kernel hinkt deutlich hinterher. D.h. wenn du die „normalen“ Kernel nicht deinstallierst und es kommt ein Kernel-Update, dann ist dieses aktueller und steht beim Booten oben in der Liste. Somit wird ein „nicht“ PHC-Kernel automatisch geladen. D.h. entweder bearbeitest du Grub, oder du deinstalliert die normalen Kernel oder du frierst die normalen Kernel ein…

  8. Bei mir gab es nach dem Kernel-Upgrade die Datei „phc_vids“ nicht mehr, obwohl es wieder um den PHC-Kernel gehandelt hat. Werde bei dem nächsten Upgrade die Sache genau untersuchen.

  9. Wenn man den 04-prerelease nimmt, geht

    $ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls

    nicht, stattdessen sollte

    $ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_rawcontrols
    den gewünschten Erfolg bringen!

    Außerdem muß man (zumindest ich mit Karmic Koala frisch) vor dem modprobe den Rechner neu starten, sonst schreibt er eine „Gerät beschäftigt“-Meldung!

  10. hallo,
    gibt es irgendwo AMD-K7 patches dazu? im forum sind keine.
    ich habe undervolting mit dem K7 und dem 2.6.33 kernel mit patch zum laufen bekommen, der kernel hat jedoch seine nachteile, da sich weder nvidia treiber noch lirc compilieren lassen.

  11. Hallo,
    habe veruscht deine Anleitung zu folgen. Leider stosse ich nach der installation und erfolgreichem bootens des neuen phc-kernels beim kompilieren des intel-phc paketes auf folgendes problem und kann es nciht beheben:

    odysse@MSI:/usr/src/phc-intel-0.3.2-10$ sudo make prepare
    FOUND AVAILABLE PATCHSET. PREPARING.
    patching file phc-intel.c
    odysse@MSI:/usr/src/phc-intel-0.3.2-10$ sudo make
    make -C /lib/modules/`uname -r`/build SUBDIRS= modules
    make[1]: Betrete Verzeichnis '/usr/src/linux-headers-2.6.31-20-generic-phc'
      CHK     include/linux/version.h
      CHK     include/linux/utsrelease.h
      SYMLINK include/asm -> include/asm-x86
    make[2]: *** Keine Regel vorhanden, um das Target »kernel/bounds.c«, 
      benötigt von »kernel/bounds.s«, zu erstellen.  Schluss.
    make[1]: *** [prepare0] Fehler 2
    make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-2.6.31-20-generic-phc'
    make: *** [phc-intel.ko] Fehler 2
    

    Leider weiss ich hier nicht weiter…habe die headers installiert…habe einen intel core 2 duo t3200…
    Ist das vll das problem? Kann es aber dneke mal nicht sein da ich ja noch beim compilieren bin.
    Bin für jede Hilfe dankbar.

  12. Hat sich erledigt.
    Das Problem lag darin dass ich es mit sudo compilieren wollte.
    HAb es nun im user home verzeichnis entpackt und mit normalen rechten compiliert, was tadellos funktionierte. So jetz kanns weiter gehn 😀

  13. Hallo Odysse! Ja, zum Compilieren brauchst du keine Root-Rechte, wie du merkst sind sie manchmal sogar problematisch 😉 Nur zum Installieren, des Zeugs was du compiliert hast, brauchst du wieder Root-Rechte.

  14. Hallo, ich hab mir gedacht, ich sollte mal was machen gegen den nervigen Fan/Lüfter. Ich glaube auch, dass der meinem Akku ganz schön geschadet hat – na ja, wer weiß?

    Leider bekomme ich eine Fehlermeldung:
    ~/Temp/phc-intel-0.3.2-10$ sudo modprobe phc-intel
    FATAL: Error inserting phc_intel (/lib/modules/2.6.31-20-generic/extra/phc-intel.ko): Device or resource busy
    Was läuft da falsch? Ich habe es auch extra bei CPU 2% Last probiert.

    Wie schau ich mir denn nochmals die Prozessor-Daten an? Ich weiß nicht genau, was bei mir verbaut ist – gerade noch, dass es ein Intel ist.

  15. Hallo Jungs,

    gestern gabs von Ubuntu ein Kernel-Update auf 2.6.32-22-generic.
    Leider kam seiten PHC noch kein Update, oder ist es nur bei mir so?

    sudo apt-get install linux-generic-phc linux-headers-generic-phc

    linux-generic-phc is already the newest version.
    linux-headers-generic-phc is already the newest version.

    Grüße
    Eduard

  16. Hi Christoph,

    ja genau aus dieser Quelle 🙂
    OK, dann trinken wir mal etwas Tee 🙂

    Noch eine Frage habe, und zwar:
    wenn im Ubuntu-Update ein neuer offizieller Kernel angeboten wird, sollte man den dann einfach nur rausnehmen und nur die restlichen Programme updaten?

    Und einen Kernel-Update nur machen, wenn dieser von PHC angeboten wird?

    Grüße
    Eduard

    • Tja, das ist eine Frage, die du für dich selber entscheiden musst. Wenn dir das phc-Feature SO wichtig ist, dann solltest du beim PHC-Kernel bleiben, egal was über die normalen Quellen reinkommt. Du könntest Grub anpassen, so dass automatisch der PHC-Kernel gestartet wird, du könntest den „normalen“ Ubuntu-Kernel deinstallieren oder du kannst das Update ignorieren lassen. Alles ist möglich 😉

  17. @nobi: Man muss vor dem Laden von phc-intel mit „sudo rmmod acpi-cpufreq“ selbiges Modul entladen da phc-intel acpi-cpufreq ersetzt.

    @all: Keine Ahnung seit wann aber der 2.6.32.23 ist im PHC-PPA und die Anleitung funktioniert weiterhin einwandfrei, danke 🙂

  18. Was passiert nach erfolgter phc-Installation, wenn ich den „normalen“ Ubuntu-Kernel starte?
    Modul „phc-intel“ wird nicht mitgeladen, „acpi-cpufreq“ ist mit rmmod entfernt. Trotzdem scheint die Prozessortaktung zu funktionieren.
    lg

  19. Wie sieht es eigentlich mit PHC unter Ubuntu 10.10 aus? Ich habe versucht es zu installieren, doch leider kommt es bei dem 2.6.35er Kernel zu einer Fehlermeldung :-/

  20. Hallo, habe heute PHC installiert und es hat auch geklappt, aber wenn ich mir die Werte ausgeben lasse:

    cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls

    dann sieht es so aus:

    12:19 10:21 8:23 0:30

    Ist das in Ordnung?! Weil wie ich das verstehe, dass bei niedrigster Taktung die CPU mit höherer Spannung versorgt wird… Ich habe auch bisschen experimentiert und wenn ich die Zahl nach Doppelpunkt höher setze dann wird die Temperatur niedriger und umgekehrt, die Temperatur wird höher wenn die Zahl kleiner gesetzt wird.

    Habe ich was falsch gemacht?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein