neuen Kernel mit PHC-Patch einspielen

steveurkel

New member
Themenstarter
Registriert
5 Jan. 2009
Beiträge
175
Hallo!

Habe mir hier aus dem X200 Thread den Patch für PHC heruntergeladen und auf die Sourcen von Kernel.org (Das nennt sich Vanillla?) angewendet. Die .config hab ich aus dem /Boot entnommen.

make modules_install usw...

Die Sache mit den make-kpkg funktioniert nicht da yaird aufgerufen wird das mit nem Fehler abbricht :-( (wegen nem bad devicelink )Hab dann mit mkinitramfs probiert und herausgefunden das man zwingend die version angeben muss :whistling: : )
Er konnte beim booten nicht auf das DIR /lib/modules/2.6.32/ zugreifen. woher wusste er worauf zugegriffen werden soll trotz fehlender Versionsangabe? Dazu kommt, nach einer Anmeldung auf der Konsole war das Verzeichnis vorhanden.
Es ist da aber man kann nicht drauf zugreifen?

mkinitramfs meckert mit angabe der Version zwar wegen einer Firmware für e100 aber das ist erstmal relativ unwichtig. Die Meldung über fehlendem Zugriff auf /lib/modules fehlt. Dafür lande ich wieder auf "Ubuntu running in low-Graphics-mode"
(auf der Konsole erscheinen Meldungen über die Festplatten UUID) Irgendwie gibts da noch Probleme

Ich bin mir nicht sicher, entweder ist es der Nvidia-Treiber (glaub ich weniger) oder ein Fehler bei der initrd bzw Initramfs. So genau hab ich den Unterschied nicht verstanden.

PS: der PHC-Patch funktioniert, zumindestens sind die entsprechenden Files im /sys vorhanden.

System ist Mint 7, auf Ubuntu Jaunty basierend.

bin für hilfreiche Tips dankbar, falls noch infos fehlen sollten würde ich die nachtragen.
 
Kurzanleitung: Kernel 2.6.32 (Lucid) aus git mit PHC-Patch bauen

Nimm besser die Kernelquellen von Lucid, am einfachsten per git auschecken.

Code:
sudo apt-get install git-core fakeroot build-essential makedumpfile crash kexec-tools makedumpfile kernel-wedge git-core libncurses5 libncurses5-dev
sudo apt-get build-dep linux
cd arbeitsverzeichnisfuerdenkernel
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git
cd ubuntu-lucid
Nun mit
Code:
git tag | grep 'Ubuntu-2.6.32-2.\.'
die neueste Version raussuchen und auschecken:
Code:
git checkout Ubuntu-2.6.32-22.36 # ggf. durch neueste Version ersetzen!
Patch (s. Anhang) einspielen
Code:
patch -p0 < /pfad/zum/patch/linux-phc-0.3.2_2.6.32.patch.txt
EDITH: -p0
Schließlich Compile/Pakete erstellen mit
Code:
fakeroot debian/rules clean
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic binary-indep
Das erzeugte Paket installieren
Code:
cd ..
sudo dpkg -i linux-image-2.6.32-22-generic_2.6.32-22.36_....deb
Da das erzeugte Paket dieselbe Version wie das Original aus den Repos hat, muß man Ubuntu noch daran hindern, es automatisch wieder durch die Version aus den Repos zu ersetzen:
Code:
echo linux-image-2.6.32-22-generic hold | sudo dpkg --set-selections
Ausführliche Anleitung: http://wiki.ubuntuusers.de/Kernel aber verzichte besser auf eigene Varianten und Konfigurationsänderungen ...
 

Anhänge

Hi Linrunner,

vielen Dank für diese Anleitung hat bei mir sehr gut geklappt aber es haben sich noch drei Fragen ergeben.

Die Entwicklung dürfte wohl sehr rasant voranschreiten und die Version 2.6.32-8.12 ist bestimmt nicht mehr aktuell. Wie kann ich stets die neuesten Sourcen bekommen?

Außerdem habe ich mir gedacht, wenn ich den Kerne eh schon neu baue könnte ich gleich noch den HDAPS und TP-SMAPI Patch drüber ziehen. So kann ich mir das Bauen mit dem Modul-Assistenten sparen. Leider weiß ich nicht so genau wie das geht. Hättest du da einen Tipp für mich.

Und die dritte und letzte Sache ist die Konfiguration des Kernels. Im Ubuntu Wiki steht, dass das mit dem Befehl debian/rules editconfigs möglich wäre. Die Eingabe wird bei mir leider nur mit dieser Ausgabe quitiert:
Code:
dh_testdir
dh_testdir: cannot read debian/control: No such file or directory

make[1]: *** [editconfigs] Fehler 1
make: *** [editconfigs] Fehler 2

Gruß

Stefan
 
Moin Stefan,

zu 1.: Zuerst das Repo aktualisieren mit
Code:
git fetch
Danach kannst Du die vorhandenen Tags auflisten mit
Code:
git tag | grep "Ubuntu-2.6.32"
Die -301.x sind irgendwelche Sondersachen, aktuell im Moment -10.14.
Zuletzt auf den gewünschten Stand bringen mit
Code:
git rebase Ubuntu-2.6.32-10.14

zu 2.: Hab ich noch nicht gemacht. Berichte mal wenn Du es hinbekommen hast. :)

zu 3.: Hab ich auch länger nicht mehr gemacht. Hast Du mal vorher ein
Code:
fakeroot debian/rules clean
eingeben? Dadurch wird neuerdings der ./debian-Zweig erst gefüllt. Kernel ist nicht mehr ganz aktuell.

Lesestoff
https://wiki.ubuntu.com/KernelTeam/KernelGitGuide
http://kernel.ubuntu.com/git/
http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

Diese hier sind sehr anschaulich:
http://blog.avirtualhome.com/2009/11/03/how-to-compile-a-kernel-for-ubuntu-karmic/
http://blog.avirtualhome.com/2009/1...ntu-karmic-kernel-after-a-new-kernel-release/
 
Hi linrunner,

ich bin ein Stück weiter gekommen. Jetzt weiß ich wie man einen Kernel mit tp-smapi und hdaps patcht. Und zwar holt man sich erst mal die Sourcen von http://sourceforge.net/projects/tpctl/files/tp_smapi . Den Patch erstellt man mit diesem Befehl:
Code:
make patch KVER=2.6.32 KSRC=/usr/src/ubuntu-lucid/ KBUILD=/usr/src/ubuntu-lucid/ HDAPS=1
Falls man ein T400 oder T500 hat, glaube ich braucht man noch die Option FORCE_IO=1. Lässt man die Option HDAPS=1 weg stehen laut Readme erweiterte Informationen zum Akku zur Verfügung. Allerdings funkt dann der Bewegungssensor nicht mehr.
Jetzt sollte man den man den Kernel wie gewohnt patchen können
Code:
patch -p1 -d /usr/src/ubuntu-lucid/ < tp_smapi-0.40-for-2.6.32.patch

Ich scheitere jetzt aber an einem ganz banalen Problem. Ich würde gerne die Kernel-Sourcen auf den neuesten Stand bringen.
Code:
git rebase Ubuntu-2.6.32-11.15
Allerdings hab ich den Quellcode schon etwas verändert und darum bekomme ich die Fehlermeldung:
Code:
debian.master/config/amd64/config.common.amd64: needs update
debian.master/config/i386/config.flavour.386: needs update
drivers/hwmon/Kconfig: needs update
drivers/hwmon/hdaps.c: needs update
drivers/misc/Kconfig: needs update
drivers/misc/Makefile: needs update
cannot rebase: you have unstaged changes
Darum ist jetzt meine Frage wie ich die Kernel-Sourcen zurücksetze?

Gruß

Stefan
 
Hi,

die Meldung kommt, weil deine Änderungen nicht committed sind. Vor dem Commit mußt Du aber noch aufräumen, um nur die eigentlichen Änderungen (und neue Dateien) zu sehen. Ich hab auch nicht so die Übung mit git (ich dilettiere noch ... :rolleyes: ), aber probier erstmal zum Aufräumen:
Code:
fakeroot debian/rules clean
Danach schaust Du mit
Code:
git status
was sich geändert hat und fügst Änderungen und Neuerungen mit
Code:
git add <dateien>
hinzu. Dabei aber alles in debian/ weglassen. Danach ein freundliches
Code:
git commit
und schon müßte das rebase funktionieren ... :D :D

EDITH: und wenn Du schon dabei bist, wirf vorher noch diesen Patch für den Trackpoint-Bug/Regression rein. :)

LESESTOFF zu git:
http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
 
Habe HIER ein recht aktuelles Howto zu Ubuntu 10.04 und undervolting gefunden.

Evtl. hilft das jemanden.

Gruß
Jetronic
 
Hallo Leute,

endlich hatte ich die Zeit ein paar Vergleichsmessungen der Leistungsaufnahme bei abgesenkter Prozessorspannung zu machen.
Die Messungen habe ich auf einem ThinkPad T60 2007WX1 mit einer Intel CoreDuo T2400 CPU durchgeführt. Als Betriebssystem kam Ubuntu Lucid Lynx 10.04 mit dem PHC Kernel aus dem linux-phc PPA zum Einsatz.

Die T2400 CPU lässt sich mit 1GHz, 1.33GHz und 1,83GHz betreiben. Zwei mal drei Messungen mit je 120 Sekunden habe ich durchgeführt. Zwischen den Messungen ließ ich dem System ca. zwei Minuten Zeit um sich einzupenden. Die Messungen erfolgten bei fixierter Taktfrequenz einmal mit default Corespannung 44:29:19 und einmal mit abgesenkter Corepannung 27:19:19.

Zur Durchführung der Messungen bin ich wie folgt vorgegangen:
- Die Scaling Governors sind auf userspace gestellt
- Die Taktung beider Cores fix auf den gewünschten Wert eingestellt
- Mit burnMMX beide Cores voll belastet
- Aus /proc/acpi/battery/BAT0/state 60 mal alle 2 Sekunden die Leistungsaufnahme gemessen

Folgende Mittelwerte haben sich ergeben:
Code:
p_mean	44:29:19	27:19:19	DP
1.00	25,1+-0,1	25,1+-0,1	0,0+-0,0
1.33	29,6+-0,2	26,6+-0,2	3,1+-0,2
1.83	38,6+-1,2	32,2+-0,2	6,4+-0,7

Wobei der Wert bei 1,83GHz und default Corespannung leider nicht Aussagekräftig ist. Vermutlich wurde es der CPU zu warm und darum hat sie die Rechenleistung selbst reduziert. Nach wenigen Augenblicken unter Vollast schoss die Temperatur auf mehr als 70°C und der Prozessor arbeitete nur noch zu 70% der Zeit mit 1,83GHz.

Hier sind sind die Ergebnisse noch mal in grafischer Form:
Anhang anzeigen 29617
 

Anhänge

  • power.png
    power.png
    5,8 KB · Aufrufe: 53
Es sind beim nachvollziehen noch ein paar Fragen aufgetaucht:

- kann man das ganze auch auf anderen Rechner vorbereitend rechnen (.deb erstellen) lassen? zb. jetzt auf nem x60 erstellen laufen solls später auf einem x201
- wie lautet der Eintrag in die Sources.lst für "sudo apt-get build-dep linux" (ich nutze Mint, apt greif sich linux-meta als Paket stattdessen)
- ich bekomme aus dem git nur 2.6.32.. angeboten. Wenn eine neue Version rauskommt, (z.b. 2.6.34) wie komme ich über diesen Weg dahin?

Danke!
 
[quote='steveurkel',index.php?page=Thread&postID=878362#post878362]- kann man das ganze auch auf anderen Rechner vorbereitend rechnen (.deb erstellen) lassen? zb. jetzt auf nem x60 erstellen laufen solls später auf einem x201[/quote]Die Architektur i386/amd64 muß gleich sein, Crosscompile weiß ich noch nicht wie. Schneller geht es außerdem wenn Du auf dem X201 baust 8) .[quote='steveurkel',index.php?page=Thread&postID=878362#post878362]- wie lautet der Eintrag in die Sources.lst für "sudo apt-get build-dep linux" (ich nutze Mint, apt greif sich linux-meta als Paket stattdessen)
[/quote]Ich hab keine Ahnung von Mint. Der Befehl installiert aber nicht das Paket linux, sondern seine Build-Abhängigkeiten. Kann schon sein, daß da linux-meta dabei ist. Kann es hier aber nicht probieren, weil ich es schon drauf hab. Kommt denn ein Fehler?[quote='steveurkel',index.php?page=Thread&postID=878362#post878362]- ich bekomme aus dem git nur 2.6.32.. angeboten. Wenn eine neue Version rauskommt, (z.b. 2.6.34) wie komme ich über diesen Weg dahin?
[/quote]Schau beim
Code:
git tag
nochmal genau hin bzw. hol dir vorher alle Updates mit
Code:
git fetch
Da gibt es Ubuntu-lts-2.6.35-x.y-Kernel (der 2.6.35 ist aber Upstream natürlich noch lange nicht fertig). Sieht so aus, als ob der 2.6.35 mal für Lucid kommen soll. 2.6.34 bekommst Du imho nur als Mainline. Alle Ubuntu-GIT-Repos findest Du hier: http://kernel.ubuntu.com/git , die offiziellen heißen ubuntu/ubuntu-lucid.git, ubuntu/ubuntu-maverick.git.
 
Wie ich heute erfahren habe wird mich morgen das X201 höchstwahrscheinlich erreichen. :thumbsup: Dann kann ich das auch da laufen lassen, stimmt. *gespannt bin wie lange das kompilieren dann dauert*

Ich hab keine Ahnung von Mint. Der Befehl installiert aber nicht das Paket linux, sondern seine Build-Abhängigkeiten. Kann schon sein, daß da linux-meta dabei ist. Kann es hier aber nicht probieren, weil ich es schon drauf hab. Kommt denn ein Fehler?
ich bekomme beim aufruf von sudo apt-get build-dep linux ein "Sie müssen einige »source«-URIs für Quellpakete in die sources.list-Datei eintragen." zurück.
Daraufhin hab ich mir mal die sources.lst vorgenommen:

Für "deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse" hab ich einen weiteren Eintrag vorgenommen (Kopie als deb-src)
Ebenso für "deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse"
Weitere src-Quellen gibt es nicht in der Datei. Vorher gab es nicht eine.

nach einem apt-get update und erneutem aufruf bekomme ich jetz folgendes: "Picking 'linux-meta' as source package instead of 'linux' "

Das "as source.." irritietiert mich etwas..


Und der Tip mit dem git fetch war natürlich auch richtig. Jetzt bekomme ich auch die .35 angeboten. Ich hatte am Wochenende probiert und bin davon ausgegangen das alle Kernelversionen mit dabei sind, am .35 ist man doch schon ein paar Tage länger am werkeln ?(
 
Die "Picking..." Meldung kommt bei mir auch, es wird nichts installiert. Wahrscheinlich ziehen die vorhergehenden installs schon alles nötige. Hab jetzt grad keine Lust das auszuprobieren.

In dem Git-Repo für den Ubuntu Lucid Kernel sind logischerweise nur Kernel für Ubuntu Lucid enthalten (2.6.32) 8) . Daß da ein 2.6.35er herumgeistert läßt Raum für Spekulationen ... :D
 
Das gute Stück ist jetz da und ich habe wie im Thread "[gelöst] Wie Kernel-Patches (Ubuntu Lucid) für den X201 anwenden?" das ganze mal nachvollzogen. Er hat auch ne ganze weile gerechnet und der neue Kernel liess sich auch installieren und booten. Der VMware Player war gleich der erste der bemängelt hat das die Headers für den neuen Kernel nicht installiert sind. Es wurde auch ein Deb Paket (739kb) erstellt, das lässt sich leider nicht installieren weil eine Abhängigkeit nicht auflösbar ist.. ?(

Momentan ist 2.6.32.23-generic-pae #37 gebootet und beim versuch das Paket mit den Headern zu installieren wir ein linux-headers-2.6.32.23 vermisst

irgendwas habe ich falsch gemacht, nur was? Ausserdem wurde ich beim anwenden der Patches fürs X201 darauf hingewiesen das ein "reversed patch" erkannt bzw dieser schon angewendet wurde, ich hab trotzdem mit y geantwortet..
 
Wenn Du beim Kernelbacken das Target binary-indep angibst wie in meiner Anleitung
Code:
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic binary-indep
dann wird ein zweites headers-Paket erzeugt. Du mußt beide installieren.

ps. kannst das Target auch einzeln angeben, binary-generic-pae hast Du ja schon gebaut.
 
Du meinst beide sind eine Verzeichnisebene höher als das git-Verzeichnis? Ich hab tatsächlich 3 Paket rausbekommen. Einmal linux-headers, einmal das kernel-image und ein linuximage-2.6.32.-23-virtual-2.6.2.32-23.37.i386.deb. Das will aber auch nicht und wirds auch nicht sein :-( Ne bestimmte Reihenfolge gibts da nicht, oder?

Ich lass es nochmal ohne Patche durchlaufen, streng nach Anleitung. Einzige Änderung ist das ich statt generic generic-pae eingegeben habe.
 
Die Patche stören nicht. Wenn der Build durchläuft ist es gut. Der Befehl muß heißen
Code:
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic-pae binary-indep
Die Debs werden immer eine Verzeichnisebene höher ausgeworfen.

ps. das hier kommt bei mir raus (64bit):
Code:
linux-headers-2.6.32-23_2.6.32-23.37_all.deb
linux-headers-2.6.32-23-generic_2.6.32-23.37_amd64.deb
linux-image-2.6.32-23-generic_2.6.32-23.37_amd64.deb
 
So hab ichs gemacht:


..
git fetch
git checkout Ubuntu-2.6.32-23.37
fakeroot debian/rules clean
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic-pae binary-indep

als Ergebnis bekomme ich folgende Pakete:
linux-headers-2.6.32-23-generic-pae_2.6.32-23.37_i386.deb
linux-image-2.6.32-23-virtual_2.6.32-23.37_i386.deb
linux-image-2.6.32-23-generic-pae_2.6.32-23.37_i386.deb

?(
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben