Nov
11
Quantal: Aktueller Kernel auf non-PAE-CPU
filed under computer, howto, kernel, linux, ubuntu_and_derivates
Kernel-Updates auf non-PAE-CPUs unter bzw. auf Ubuntu 12.10 schlagen fehl, da Canonical keine non-PAE-Kernels mehr baut und eine entsprechende Abfrage einfuegt. Daraus resultiert das besondere Problem, dass bis auf linux-image-[current version]-generic die anderen Kernel-Pakete installiert werden und somit ein inkonsistenter Zustand entsteht, der fortan sowohl Updates insgesamt als auch das Zurueckspielen der bisherigen Versionen der Kernel-Pakete linux-generic, linux-headers-generic und linux-image-generic verhindert.
Diese 3 Pakete kann man zwar deinstallieren, um sie manuell durch 3.6.0-17 (Version im Image) zu ersetzen und diese zu pinnen, aber nur solange Canonical diese Pakete noch anbietet, was erfahrungsgemaess mit dem naechsten Minor-Kernel-Update vorbei sein duerfte. Zudem wuerde man so auf veralteten und irgendwann auch unsicheren Versionen kleben bleiben.
Durch Entfernen der PAE-Abfrage ist jedoch eine Installation des Kernel-Images moeglich:
1. Download des Paketes
1 | apt-get download linux-image-[current version]-generic:i386 |
z.B.:
1 | apt-get download linux-image-3.5.0-18-generic:i386 |
1.1 Alternativer Download im Verzeichnis “http://archive.ubuntu.com/ubuntu/pool/main/l/linux/”
2. Entpacken
1 2 | dpkg -x linux-image-*.deb common dpkg --control linux-image-*.deb |
3. Editieren mit dem Editor der Wahl
1 | leafpad DEBIAN/preinst |
3.1 Auskommentieren des Abfrageblocks/der Zeilen 93 – 100
#$arch = `uname -i`; #if ($arch =~ m/86/) { # system ("grep -q ' pae ' /proc/cpuinfo"); # if ($?) { # print STDERR "This kernel does not support a non-PAE CPU.\n"; # exit 1; # } #} |
4. Repacken
1 2 | cp -a DEBIAN/ common/ dpkg -b common linux-image-[version]-generic_i386-non-pae.deb |
z.B.:
1 | dpkg -b common linux-image-3.5.0-18-generic_3.5.0-18.29_i386-non-pae.deb |
5. Aufraeumen
1 | rm -rf common DEBIAN |
6. Installation auf dem Pentium-M-Zielrechner
1 | sudo dpkg --force-all -i linux-image-*-non-pae.deb |
7. Sollten genannte 3 generic-Pakete noch gepinnt sein, setzt man sie nun auf unhold und aktualisiert diese normal ueber apt-get.
8. Um nicht von einem naechsten Update ueberrascht zu werden, sollten diese 3 Pakete danach wieder gepinnt werden. Gibt es wieder ein Update, sind die Schritte entsprechend zu wiederholen.
Ueber diesen einfachen Weg gibt es weder Probleme mit der Paketverwaltung durch Teilaktualisierungen, noch muss ein Kernel selbst kompiliert werden, was auf einem Pentium M ohnehin keine Freude aufkommen lassen wuerde.
Da die Frage gestellt worden ist, ob Ubuntu 13.04 auf non-PAE-Systemen installierbar sein wird…ich kenne auch keine Canonical-Interna, grin, aber vom jetzigen Zeitpunkt aus gesehen waere es vorstellbar. Der momentane Quantal-Kernel 3.7.0-0 – PAE, wohlgemerkt – laeuft wie obig beschrieben jedenfalls auch unter Lubuntu 12.10.
comments
34 responses to “Quantal: Aktueller Kernel auf non-PAE-CPU”
leave a reply

kernel update /perspektiven:
zunächst nochmals zu 12.04:
geht Folgendes?
- aktuellen 3.5 PAE Kernel (noch unter 12.04) runterladen,
- PAE- Block, w.o. beschrieben, auskommentieren,
- den so erhaltenen 3.5 non-PAE Kernel installieren,
Upgrade von 12.04 -> 12.10 unter dem 3.5 non-PAE – Kernel machen.
Wenn das so gehen würde, könnte man bei 12.10 -> 13.04 vermutlich entsprechend vorgehen.
12.10 (13.04) mit kernel 3.8 auf non-pae cpu:
bei mir läuft jetzt 12.10 unter kernel 3.8 auf Pentium-M. Mit Deiner Anleitung v. 1.11. geht alles glatt, soweit Auskommentieren des PAE-Blocks und Kernel (3.8) Installation betroffen sind (unter kernel 3.5 vorgenommen).
Dann gibts doch noch Probleme (die gabs aber auch schon bei Installation von 3.5!): Nach der Installation lt Rezept habe ich noch zusätzliche Pakete installiert:„linux-extra-…” und die Headers zu 3.8. Der 3.8 Kernel erscheint aber beim Boot nicht im Grub-Menu, obwohl er in Synaptic und bei update-grub angezeigt wird; jedoch können die früher installierten Kernel booten → nach Einsatz der Boot Repair .iso erscheint das Grub-Menu mit dem Eintrag des neu – installierten 3.8 Kernels; jedoch kann nicht gebootet werden → nochmals Anwendung der Boot Repair .iso, dieses Mal mit Advanced Options → ATA Support löst das Problem endlich! → mit 3.8 kann gebootet werden.
Jetzt will ich die Repos auf raring umstellen und dann über die Software-Aktualisierung manuell upgraden. Oder gibts einen einfachen saubereren Weg?
raring mit kernel 3.8 auf pentium-M:
raring/developer branch ist jetzt auf meinem Pentium-M installiert, wie cat /etc/*-release zeigt. Und läuft bisher stabil unter 3.8.
Ich habe die Umstellung auf raring dann doch automatisch, im Anschluss an apt pinning (siehe 1.11.) und Umstellung der Repos auf raring, gemacht.
Wieder konnte ich aber erst rebooten, nachdem ich den Grub repariert hatte; dies muss mit der HD zu tun haben, da ich wieder die ATA-Option brauchte.
Kernel 3.7 final verwenden, OK, gestern in Raring erschienenen Kernel 3.8rc3 testen, schön und gut – aber was willst Du zum gegenwärtigen Zeitpunkt mit Raring insgesamt?
Egal, welche Pakete ich abfrage, ich habe das Gefühl, es ist in der Hälfte der Zeit bis 13.04 noch so gut wie gar nichts passiert (anders als vor Quantal). Jedenfalls nichts, was Raring jetzt schon interessant erscheinen lassen könnte. Im Gegenteil sind in Raring sogar teils Pakete älter (!) als in aktualisiertem Quantal.
Und als Produktivsystem…das ist immer noch alpha.
raring + kernel 3.8 auf Pentium-M:
Bin in allen Punkten derselben Meinung. Sogar konservativer und verwende meist die LTS Versionen. Aber was soll ich beim Pentium-M machen? Es gibt keine passende LTS. Und viel Unterstützung zu >12.04 auf non-PAE gibts auch nicht. Also muss ich selbst was tun, dachte ich. Kann schon sein, dass es viel zu früh ist.
Den 3.8-Kernel habe ich zunächst in einer VM getestet und den Upgrade auf raring auch erst bei der VM gemacht. Weil alles so stabil lief, habe ich gleich auf dem Pentium-M umgestellt.
Der 3.8-generic-Kernel ist schon in den Daily Builds.
Kernel 3.8.0-0 in den Repos seit 2013-01-11 innerhalb 17 h gleich 2x als .2 und .3. ;)
Es gibt noch eine brauchbare LTS für non-PAE, nämlich Xubuntu 12.04.1 und ab 2013-01-31 .2 (von der aktuellen Pointrelease-Praxis ausgehend). Support-Zeitraum 3 Jahre (statt 5 Jahre). Also wer nun gar nicht mit dem hier Geschriebenem klar kommen sollte, könnte diese bis 2015-04 verwenden – mit allen Nachteilen, die eine ständig alternde LTS eben so mit sich bringt. Nicht mein Ding.
Bodhi als LTS – Ersatz:
eventuell gute Lösung, solange dort ein non-PAE Kernel angeboten wird und die Pakete auf dem neuesten Stand gehalten werden können.Um welchen non-PAE – Kernel es sich dabei handelt, spielt für mich dann kaum eine Rolle.
Spiele deswegen mit Bodhi 2.2 als VM in Virtualbox auf non-PAE CPU herum; Host ist Ubuntu 12.04…
Ich schreibe diese Zeilen gerade auf meinem ThinkPad T40, Ubuntu Precise mit offiziellem Quantal-pae-Kernel, soeben installiert :-)
Achtung, Hack:
(Anm.: Code entfernt)
Führ das obige Script aus als root (für reibungslosen Update-Verlauf bei zukünftigen Updates am besten gleich in die rc.local mit reinpacken damits in Zukunft nicht vergessen wird)
Danach sieht das bei mir so aus:
(Anm.: Ausgabe entfernt)
dann steht den Kernel-Updates nichts mehr im Wege, ich hab gleich mal per apt-get den Quantal-Kernel installiert (der ist im Precise repository erreichbar), keine Fehlermeldungen bezüglich fehlendem pae, keine broken packages, Neustart, bootet ohne Fehler und siehe da:
(Anm.: Ausgabe entfernt)
:-)
hier nochmal ohne zerhauene Formatierung:
http://paste.ubuntu.com/1622104/
Nun, WordPress ist nicht Ikhaya – leider – was die Formatierungsmöglichkeiten angeht. Wesentlicher Grund, weshalb ich mehr auf uu-de schreibe als im Blog.
Ich habe Code und Ausgaben entfernt, da der pastebin-Link genutzt werden kann. Im Übrigen bin ich nicht erfreut über irgendwelche (c)-Angaben (auch, wenn es die GPL ist) für 4 einfache Shell-Befehlszeilen.
Zum Script selbst: Ich würde nicht direkt auf root herumschreiben, sprich nicht auf oberster Ebene, sondern fakecpuinfo beispielsweise nach /tmp.
fake pae flag:
geht das also einfach so (mein 1. shell script…)?
-kopier den Text aus dem pastebin – Link in z.B die Datei fakecpuinfo.sh,
-mach das Skript ausführbar mit
chmod u+x ./fakecpuinfo.sh.
-führ das Skript mit ./fakecpuinfo.sh aus,jedes Mal, wenn ein Kernel – Update ansteht (bei mir 3.8.0-x für mein Lubuntu auf Pentium-M),
-anschließend den PAE – Kernel aus Synaptic installieren.
Naja, es war ja nur als eine Inspiration gedacht wie man das Problem umgehen kann ohne die Kernelpakete jedesmal auspacken und patchen zu müssen. Stoß Dich bitte nicht an dem (c), natürlich will ich da nicht ernsthaft ein Copyright durchsetzen, von mir aus kanns jeder verwenden, abwandeln, Teile davon in eigene Scripte einbauen und von mir aus auch das (c) weglassen.
Ich fands halt nur überaus erstaunlich daß obwohl die ganze Problematik jetzt schon monatelang viele tausend Leute quält es tatsächlich mal zur Abwechslung so war daß ausgerechnet ich erste war der diese pragmatische Idee hatte. In meiner überschwenglichen 5-minütigen Freude über diesen seltenen Umtand ist mir dann halt das (c) aus der Hand gerutscht um diesen Umtand zu feiern.
Hiermit erkläre ich es nachträglich zu public-domain, möge die Idee jedem behilflich sein eigene bessere und ausefeiltere scripte zu erstellen.
Vielleicht baut jemand sogar mal ein simples .deb-Paket mit POSTINST und PRERM das bei Installation schon mountet (und ebenso bei jedem boot) und bei Deinstallation sofort umountet und vielleicht auch vorher prüft ob das flag überhaupt fehlt (um nicht versehentlich 2 mal zu mounten) und vielleicht auch mit sed das Flag genau bei den anderen flags einfügt und nicht am Ende anhängt und möglicherweise auch vorher prüft ob auch wirklich “36 bits physical” drinsteht damit das überhaupt funktionieren kann und ansonsten eine deutliche Warnung ausgibt (aber keinen Fehler), und so weiter und so fort.
Volker, ändere “/fakecpuinfo” jeweils in “/tmp/fakecpuinfo/”!
Willst Du es vor einem Kernel-Update manuell ausführen, dann mit root-Rechten.
Ich habe die Befehlszeilen einzeln ausgeführt und 3.5.0-23 proposed über apt-get sowie 3.8.0-5 über dpkg installiert. Funktioniert.
Ich trau’ dem Frieden aber nicht und hab’ die Images trotzdessen danach gepatcht und neu installiert. ;)
Btw., Bernd, das mit dem Freuen ist mir schon klar gewesen, grin.
fake pae flag:
@axt:
danke, melde mich,nachdem ich es beim Update auf 3.8.0-6 ausprobiert habe (3.8.0-5 habe ich noch gepatcht in lubuntu 13.04 auf pentium-M installiert).
Ich habs mal verfeinert und ein bisschen erklärenden Text hinzugefügt. Es gibt jetzt auch auf der Konsole aus was es getan hat und wo (so muss man nicht 5 jahre später nachdem man vergessen hat was man irgendwann mal alles in irgendwelche Startscripte gepackt hat grübeln wo denn der komische mount nochmal herkommt)
http://paste.ubuntu.com/1629628/
fake pae flag / test auf dell d505 (pentium-m) unter lubuntu 13.04:
anlass: update 3.8.0-5 auf -6.
verfeinerte version des shell skripts verwendet -> pae flag erfolgreich zugefügt.
Kernel – Update, inkl. Headers, anschliessend über Synaptic gemacht.
Zunächst wird neuer Kernel beim Re – booten im Grub noch nicht angezeigt (problem tritt aber bereits beim Patchen der PAE – kernels lt.methode v. 11.11. auf) -> BootRepairDisc, mit Advanced Options eingesetzt: “ATA support” aktiviert
anschliessend wird neuer Kernel im Grub angezeigt.
Nochmals danke!
Hab jetzt mal ein ppa gemacht:
https://launchpad.net/~prof7bit/+archive/fake-pae
einfach das Paket fake-pae von dort installieren und ab dann passiert das bei jedem boot automatisch. Es installiert und startet einen upstart-job mit namen “fake-pae”. Siehe auch dieser Thread im Ubuntu-Forum: http://ubuntuforums.org/showthread.php?p=12498964
ppa für fake-flag:
unter lubuntu 13.04 klappt das Update beim folgenden Vorgehen zur Installation von fake-pae.deb nicht:
sudo apt-add-repository ppa:prof7bit/fake-pae
sudo apt-get update
sudo apt-get install fake-pae
Läuft fake-pae denn?
$ top | grep fake-pae
Es muss nicht laufen, es ist kein Prozess. Es hat nur ein start script das den mount einrichtet (und sich dann beendet) und ein stop-script das ihn wieder entfernt.
Wenn es funktioniert hat sollte in /proc/cpuinfo das “pae” flag ganz als erstes bei den flags stehen und ausserdem sollte mit cat /etc/mtab der mount ersichtlich sein.
Ich hab leider nocht nicht mit 13.04 getestet
oh, warte…
apt-get install (unter 13.04) kann (noch) nicht gehen weil ich bis jetzt nur packages für precise und quantal gebaut habe. apt-get wird kein .deb für 13.04 in dem ppa finden weil noch keins drin ist für 13.04
Ich werd das mal korrigieren, kann aber ne weile dauern bis das durchgelaufen ist auf launchpad.
> weil ich bis jetzt nur packages für precise und quantal gebaut habe
Man muß ja nicht das PPA einbinden, sondern kann per dpkg installieren (was ich, wenn, ohnehin nur so machen würde).
Auch habe ich Volker so verstanden gehabt, daß das Update des Kernel-Images nicht funktioniert, nicht des Pakets fake-pae.
Ja, manuelle installation des .deb funktiniert immer, ebenso wie manuelles Eintragen des Quantal repositories in die sources.list von Raring. Nichtsdesto trotz hab ich jetzt noch Raring ebenfalls hinzugefügt.
Ich habs so verstanden daß die 3 zitierten Zeilen direkt einen Fehler hervorgerufen haben und das hätten sie auch bis vor 5 Minuten noch wenn sie auf Raring ausgeführt worden wären.
@Volker: Wenns immer noch nicht klappt wäre mal interessant zu wissen wie sich der Fehler genau äußert und wenn das package installiert ist was dann in /etc/mtab und in /proc/cpuinfo zu lesen ist und/oder was das kernel update für einen Fehler wirft. Leider kann ich im Moment noch nicht selber mit 13.04 experimentieren.
@bernd
@axt
keine hektik angesagt: ich war wohl etwas kurz; also:
manuelle installation des .deb hat unter 13.04 sofort funktioniert,
cat /proc/cpuinfo zeigt die pae flag ganz vorne,
top | grep fake-pae brachte nichts zurueck,
nach installation des fake-pae.deb konnte ich einen kernel update noch nicht testen; sollte wohl gehen, da die pae flag ja gesetzt ist.
Eigentlich wollte ich nur darauf hinweisen, dass fuer 13.04 noch was gemacht werden sollte, was nun wohl schon erfolgt ist.
Habe im moment keinen Zugang zur 13.04 Maschine. Bis morgen….
fake-pae / test unter 13.04 auf pentium-M / installation über ppa:
zuerst das bereits manuell installierte .deb entfernt -> pae nicht mehr in~/cpuinfo aufgeführt; dann:
sudo apt-add-repository ppa:prof7bit/fake-pae
sudo apt-get update
sudo apt-get install fake-pae
läuft einwandfrei durch -> cat /proc/cpuinfo: pae ist wieder gesetzt.
fake-pae / test auf pentium-M unter lubuntu 13.04 / kernel update von 3.8.0-6 auf -7:
start pc unter 13.04 (fake-pae.deb schon vorher installiert über ppa) -> installation der kernel – dateien via synaptic (keine fehler) -> sudo update-grub zeigt neuen kernel 3.8.0-7 an -> restart -> grub zeigt 3.8.0-7 (noch) nicht an -> BootRepairDisc -> ATA – option aktiviert -> grub wird repariert -> restart -> grub zeigt 3.8.0-7 an -> boot anschließend problemlos.
@volker. Daß Du Grub hast reparieren müssen, halte ich in der dev-Version von Raring für ursächlich. Ich würde das also nicht überbewerten.
Du hast am 2013-02-21 morgens oder davor 3.8.0-7.14 installiert, Spätabend ist 3.8.0-7.15 erschienen – also gleich nochmal. ;)
@axt
Grub – Reparatur nach Kernel – Update / Pentium-M
bei Änderungen allein der letzten Ziffer (nach dem Punkt also), z.B. von 7.14 -> 7.15 musste ich Grub nicht reparieren (habe ich jetzt schon mindestens 2mal festgestellt). Bei Änderung von .0-5 ->.0-6 -> .0-7 etc. musste ich Grub jeweils reparieren.
Hallo,
was mache ich denn, wenn ich kein Update, sondern eine Neu-Installation machen will? Die wird bei mir mit der gleichen non-pae-Meldung abgebrochen.
Danke, Leu
Einfach mal im Blog umsehen, beispielsweise [axebase.net] Quantal ohne PAE.
fake-pae / 13.04 auf pentium-M / installation von kernel 3.9rc3 (17.03.):
13.04 läuft unter 3.9 auf Pentium-M, wie immer nach Grub – Reparatur (mit BootRepairDisc), soweit einwandfrei.
@axt @bernd
fake-pae / upgrade 13.04 -> 13.10 / pentium-M
obwohl es sicher noch zu früh ist, auf 13.10 umzustellen, doch schon mal die Frage:
würde “fake-pae” den Upgrade überleben? Könnte ich also den Upgrade so machen, dass ich den 3.9 Kernel in 13.04 installiere (funktioniert sowieso) und dann lediglich noch alle Quellen von “raring” auf “saucy” umstelle?
Kernel 3.9 brauchst Du vorher nicht installieren (aber das haben wir ja sowieso, grin), einfach nur fake-pae ausführen und Distupgrade starten: