[gelöst] Wie Kernel-Patches (Ubuntu Lucid) für den X201 anwenden?

samba

Member
Themenstarter
Registriert
11 Dez. 2005
Beiträge
275
EDIT: Die ganze Prozedur ist mittlerweile überflüssig, siehe: X201 und Maverik-Backport-Kernel für Lucid

Hallo,

es gibt ja nun einige Patches für den Ubuntu Lucid-Kernel:

Patch für den Bug "Blank screen with KMS on Thinkpad X201"
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554569/comments/47 (veraltet)
Neuer Patch:
http://lists.freedesktop.org/archives/intel-gfx/2010-July/007328.html

Patch für den Bug "qualcomm gobi (2000) mobile broadband module not working
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554099/comments/14

Patch für den Bug "No USB after resume"
https://bugs.launchpad.net/ubuntu/lucid/+source/linux/+bug/566149/comments/18
Nicht mehr notwendig mit Lucid 2.6.32_2.6.32-24.38

Patch für "Lenovo Thinkpads with Core i5 and i7 suspend/resume (with kernel oops) once then fail horribly on next suspend"
https://bugs.launchpad.net/ubuntu/lucid/+source/linux/+bug/532374/comments/87
Nicht mehr notwendig mit Lucid 2.6.32_2.6.32-24.38


Leider scheint die Ubuntu-Bürokratie einige Zeit zu brauchen, bis die Patches den Weg in die Repositories finden. Daher würde ich gerne die Patches selber anwenden. Leider gibt es nur für den Qualcomm-Bug eine Beschreibung, wie man das macht. Dort ist beschrieben, wie man nur die betroffenen Module neu baut. Ich habe versucht, dass um die anderen Patches zu erweitern, aber leider bin ich irgendwie gescheitert. Für den Blank Screen Bug gibt es leider nur 64-Bit-Pakete, ich habe aber auf eine 32-Bit-Version gesetzt.

Nun die Frage, ob hier jemand so kundig ist, eine Anleitung zu geben, wie man den Kernel bzw. die einzelne Module richtig patcht und einsetzt?

Samba
 
Kernel Quellcode besorgen und mit patch die Änderungen einpflegen, neu übersetzen/installieren und fertig.
 
[quote='darktrym',index.php?page=Thread&postID=862276#post862276]Kernel Quellcode besorgen und mit patch die Änderungen einpflegen, neu übersetzen/installieren und fertig.[/quote]
Wenn ich wüßte, wie das im Detail geht, dann würde ich hier nicht fragen. Ich habe einiges rumgegoogelt und an Anleitungen ausprobiert,
z.B. das https://wiki.ubuntu.com/KernelCustomBuild hier. oder versucht die Anleitung vom Gobi-Patch zu erweitern, aber es hat nicht funktioniert. Die Anleitungen zum Kernel kompilieren, die ich gefunden habe beziehen sich auf die ungepatchten Mainline Kernels, ohne die spezifischen Ubuntu-Änderungen, nicht aber auf den aktuellen Lucid 2.6.32 Kernel. Wenn Du mir verraten kannst, wie das geht oder einen Link auf gute Anleitung schicken kannst, dann wäre mir geholfen.

Samba
 
[quote='xchrissix95',index.php?page=Thread&postID=862355#post862355]erst mal kernel-headers installieren. dann patch in den Kernel einfügen. siehe http://wiki.ubuntuusers.de/Kernel/Kompilierung[/quote]

Ich habe es versucht, leider scheitert es hier schon am patchen
/usr/src/linux-headers-2.6.32-22-generic-pae/drivers/pci# sudo patch -p1 <~/pci-re-enable-devices-on-resume.patch
patching file pci.c
Hunk #1 FAILED at 601.
Hunk #2 FAILED at 638.
2 out of 2 hunks FAILED -- saving rejects to file pci.c.rej
Irgendwie scheine ich den Patch auf der falschen Ebene einsetzen zu wollen, weil Verzeichnisse + Dateien auf der falschen Ebene angelegt werden. Ich versucht jeweils in einer anderen Ebene der Ordnerstruktur zu sein, aber das Ergebnis hat sich nur verschoben. Das richtige habe ich nicht getroffen.

Samba
 
[quote='xchrissix95',index.php?page=Thread&postID=862386#post862386]richtige kernelversion ?[/quote]
Ja, ziemlich sicher. Als ich nach der Anleitung:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554099/comments/14 die Patches auf ein separates Verzeichnis und nicht unter /usr/src angewendet habe, gab es keine Fehlermeldungen beim Patch-Befehl. Es sei den es ist ein Problem, dass ich den PAE-Kernel verwende, wobei ich dachte, dass dies nur ein Kompilierungsschalter und kein anderer Quellcode ist.

Samba
 
[quote='samba',index.php?page=Thread&postID=862432#post862432][quote='xchrissix95',index.php?page=Thread&postID=862386#post862386]richtige kernelversion ?[/quote]
Ja, ziemlich sicher. Als ich nach der Anleitung:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554099/comments/14 die Patches auf ein separates Verzeichnis und nicht unter /usr/src angewendet habe, gab es keine Fehlermeldungen beim Patch-Befehl. Es sei den es ist ein Problem, dass ich den PAE-Kernel verwende, wobei ich dachte, dass dies nur ein Kompilierungsschalter und kein anderer Quellcode ist.

Samba[/quote]
Mal sehen wenn linrunner oder buddabrod das nächste mal online sind ...
 
@xchrissix95: bist Du sicher, daß Du die kernel-headers meintest? Die eignen sich nur wenn man einzelne Module übersetzen will.

@samba: schau Dir mal meine Anleitung für einen kompletten Kernel hier an [Linux] neuen Kernel mit PHC-Patch einspielen . Da ist auch das Patchen beschrieben. Wenn Du nach dieser Beschreibung beim Patchen FAILED bekommst, dann paßt der betreffende Patch nicht zum Kernel. In diesem Fall helfen nur C-Kenntnisse und Handarbeit ...
 
Hi Linrunner,

neuen Kernel mit PHC-Patch einspielen[/url] . Da ist auch das Patchen beschrieben. Wenn Du nach dieser Beschreibung beim Patchen FAILED bekommst, dann paßt der betreffende Patch nicht zum Kernel. In diesem Fall helfen nur C-Kenntnisse und Handarbeit ...
Super, das war genau das wonach ich gesucht habe. Das mit den Patches hat funktioniert. Jetzt baut der was, mal sehen, ob das hinterher funktioniert :-) Eine Frage dazu: Der Kernel, den ich jetzt nutze hat PAE-Support (Mehr als 3GB auf einem 32bit System nutzen). Wird so etwas automatisch vom laufenden Kernel übernommen? Gibt es weitere Optimierungen, die man ohne großen Aufwand/ Kenntnisse machen kann?

EDIT:

Fast hätte es geklappt. Irgendwann wurde die Kompilierung abgebrochen durch:

Makefile:431: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]. Stop.
make[1]: Leaving directory `/home/samba/kernelarbeitsverzeichnis/ubuntu-lucid/debian/build/tools/tools/perf'
make: *** [install-tools] Fehler 2

Samba
 
Die Lösung steht doch in der Fehlermeldung. Einfach die angegebenen -dev Pakete installieren, ggf. mußt Du per Synaptic oder [font='Courier New, Courier, mono']apt-cache search[/font] nach dem exakten Paketnamen suchen. Einzelheiten zur Konfiguration findest Du hier http://wiki.ubuntuusers.de/Kernel/Kompilierung . Meine Anleitung verwendet die Standard-Konfiguration für -generic. Wenn Du -generic-pae möchtest, mußt du ein anderes Target angeben, dazu hilft dir der Wiki-Artikel.
 
Hallo,

wollte mal den Stand der Dinge berichten (ist ja vielleicht auch für andere X201-Besitzer interessant):

Es ist mir unter Benutzung der Anleitung von Linrunner gelungen den Kernel mit folgenden Befehlen zu patchen:

patch -p0 < ../../linux-phc-0.3.2_2.6.32.patch.txt (Jemand hat mir geschrieben, dass undervolting mit dem X201 nicht geht)
patch -p1 < ../../pci-re-enable-devices-on-resume.patch (überflüssig, s.o.)
patch -p1 < ../../lucid.patch (überflüssig, s.o.)
patch -p0 < ../../thinkpadx201.diff stattdessen: patch -p0 < ../../newintel.patch
patch -p1 < ../../usb-wwan-2.6.32.diff

Die Patches habe ich mal mit angehängt (Achtung, ich musste, damit die hier hochgeladen werden dürfen überall txt als Endung hinzufügen). Allerdings ist es mir noch nicht gelungen mit dem erzeugten Kernel erfolgreich zu booten, da der XServer nicht started:

(II) LoadModule: "vesa"
(II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
(II) Module vesa: vendor="X.Org Foundation"
compiled for 1.7.6, module version = 2.3.0
Module class: X.Org Video Driver
ABI class: X.Org Video Driver, version 6.0
(II) VESA: driver for VESA chipsets: vesa
(II) Primary Device is: PCI 00@00:02:0
(EE) VESA: Kernel modesetting driver in use, refusing to load
(WW) Falling back to old probe method for vesa
(EE) No devices detected.

Fatal server error:
no screens found
Ich vermute mal, dass ich noch irgendwelche Einstellungen setzen müsste, damit der richtige Grafiktreiber ausgewählt wird. Hoffe, dass ich in den nächsten Tagen Zeit finden, mich damit zu beschäftigen. Wenn ich es gelöst kriege, poste ich es hier. Ansonsten bleibt wohl nichts anderes als auf die neuen Ubuntu-Pakete zu warten.

Samba
 

Anhänge

RE: Wie Kernel-Patches (Ubuntu Lucid) für den X201 anwenden?

Hallo zusammen,

leider komme ich nicht viel weiter. Ich führe mal auf, was ich mache:

Code:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git
cd ubuntu-lucid
git tag | grep 'Ubuntu-2.6.32-2.\.'
patch -p0 < ../../linux-phc-0.3.2_2.6.32.patch.txt
patch -p1 < ../../pci-re-enable-devices-on-resume.patch
patch -p1 < ../../lucid.patch
patch -p0 < ../../thinkpadx201.diff
patch -p1 < ../../usb-wwan-2.6.32.diff
sudo make oldconfig
mv .config debian.master/config/i386/config.flavour.generic-pae
fakeroot debian/rules clean
Die Probleme fangen dann hier an:

Code:
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic-pae binary-indep
Using /home/samba/neuerkernel2/ubuntu-lucid as source for kernel
  /home/samba/neuerkernel2/ubuntu-lucid is not clean, please run 'make mrproper'
  in the '/home/samba/neuerkernel2/ubuntu-lucid' directory.
make[4]: *** [prepare3] Error 1
make[3]: *** [sub-make] Error 2
make[2]: *** [prepare] Error 2
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/samba/neuerkernel2/ubuntu-lucid'
make: *** [/home/samba/neuerkernel2/ubuntu-lucid/debian/stamps/stamp-prepare-tree-generic-pae] Fehler 2
Leider bringt das Durchführen von
Code:
make mrproper
  CLEAN   scripts/basic
  CLEAN   scripts/kconfig
  CLEAN   /home/samba/neuerkernel2/ubuntu-lucid/debian/
  CLEAN   include/config
nix. Nun gibt es bei
Code:
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic-pae binary-indep
/usr/bin/fakeroot: Zeile 176: debian/rules: No such file or directory
Ich weiß nicht genau, was ich falsch mache. Grund dafür dürfte sein, dass die Anleitungen auf diversen Wikiseiten sehr kryptisch für mich sind. Ich weiß also nicht wirklich genau, was ich da mache. Wahrscheinlich würde ich ich mich auch gar nicht damit befassen, wenn es nicht diverse fixenswerte Probleme gäbe. Ziel wäre es einen 32-Bit-PAE-Kernel mit den o.g. Patches unter Übernahme der vorhandenen Kernelconfiguration sein.
Ich gehe mal davon aus, dass irgendwas bei
Code:
fakeroot debian/rules clean
AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic binary-indep
nicht richtig mitgedacht ist oder ich irgendwas vergessen habe.

Über hilfreiche Hinweise bin ich dankbar.

Samba
 
Hast du es denn mal herkömmlich versucht?
patch -Np1 ...
make menuconfig
make && make modules_install

Danach muss man nurnoch das Kernel-Image kopieren (arch/x86/bzImage -> /boot/initrd.img).
 
In deinem ersten Codeblock in Zeile 9-10 änderst Du die Kernel-Konfiguration. Wozu überhaupt? Mach am besten meine Anleitung nochmal komplett von vorne nur mit den Patches und ohne an der Kernel-Config zu basteln. Einzige Änderung sollte sein binary-generic durch binary-generic-pae zu ersetzen.
 
[quote='linrunner',index.php?page=Thread&postID=866294#post866294]In deinem ersten Codeblock in Zeile 9-10 änderst Du die Kernel-Konfiguration. Wozu überhaupt? Mach am besten meine Anleitung nochmal komplett von vorne nur mit den Patches und ohne an der Kernel-Config zu basteln. Einzige Änderung sollte sein binary-generic durch binary-generic-pae zu ersetzen.[/quote]

super, das hat es gebracht. Ich hatte gedacht, dass es irgendwie Probleme gab di Konfiguration zu übernehmen, weil nach dem Installieren der XServer nicht starten wollte. Aber ich bin persönlicher Nachriht darauf gebracht worden einfach die Xorg.conf zu löschen und das hat funktioniert.

Super, danke allen, die mit Hinweisen geholfen haben.

Samba
 
Hi,

hab jetzt auch mein X201 mit Ubuntu 10.04 eingerichtet. Im Prinzip läuft alles (mal von der Gobi abgesehen, die ignoriere ich vorerst mangels Nutzen erstmal ;) ). Allerdings hat der XServer das Problem, dass der externe Bildschirm nach einem Wechsel von intern auf extern erstmal kein gescheites Bild zeigt sondern nur einen Streifen buntes Flimmern am linken Rand. Gleiches macht der interne Bildschirm beim Wechsel in die andre Richtung, nur dass dort der Bildschirm komplett weiß ist. Wenn ich nach einem Wechsel kurz auf eine Konsole wechsel und dann wieder zurück zu X ist alles in Ordnung.

Was ich bisher gemacht hab:
Kernel 2.6.35 von kernel.org geladen, Ubuntu's 2.6.35er Config drauf angewendet (mit dem Kernel aus dem Kernel-PPA), den Graphik-Patch aus dem ersten Post angewendet.
Desweiteren hab ich Xorg mit den Paketen aus dem xorg-edgers-PPA aktualisiert. Aber ohne dieses Update war das gleiche Phänomen zu beobachten.

Sonst nichts besondres, aber es will halt nicht wie ich will ;)
Jemand eine Idee?

Grüße,
Chris
 
haben der externe wie interne Bildschirm die selbe Auflösung? wie wechselst du die Bildschirme, hast du den externen über VGA oder Displayport angeschlossen?
 
Hi,

der interne Bildschirm hat 1280x800, extern 1280x1024. Wechsel über die Gnome-Bildschirmeinstellungen. Externer Monitor ist über DisplayPort->DVI angeschlossen.
Wie gesagt, nach Wechsel auf Konsole klappts, und auch die Konsolen an sich, die ja automatisch mit der hohen Auflösung laufen, werden auf beiden Bildschirmen korrekt angezeigt.

Grüße,
Chris
 
Hi,

das hört sich zwar stark nach Kernel- oder X-Problem an, aber zeig doch mal bitte mit (angeschlossenem aber nicht aktivem ext. Monitor)
Code:
xrandr
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben