Die Wiederaufnahme des Ruhezustands schlägt unter Linux-Kernel 4.9.0, Debian 9, fehl

9

Ich habe kürzlich meinen Kernel von 3.16.4 (Debian Jessie) auf 4.9.0 (Debian Stretch) aktualisiert. Alles war in Ordnung, bis ich versuchte, "Ruhezustand" (auf Festplatte aussetzen).

Wenn ich die Option "Ruhezustand" in LXDE verwende, scheint der Ruhezustand zu sein. Ich kann hören, wie die Plattenspindel tickt und Daten schreibt. Die Probleme treten jedoch auf, wenn der Ruhezustand wieder aufgenommen wird. Der Kernel stellt das Image erfolgreich aus dem Swap wieder her, friert dann jedoch ein und startet neu, wobei die gesamte Arbeit verloren geht. Ich konnte nirgendwo im Internet eine Antwort finden. Die Leute lösen nur einige Fehler, indem sie /etc/initramfs-tools/conf.d/resume nicht setzen oder Kernelparameter gesetzt haben oder einen falschen Eintrag in / etc / fstab haben. Ich habe diese richtig. Korrigieren Sie die UUID in /etc/initramfs-tools/conf.d/resume, korrigieren Sie fstab und setzen Sie nicht den Kernel-Parameter für die Wiederaufnahme.

  • Ich habe die Swap-Partition außerhalb der erweiterten Partition auf die primäre Partition verschoben. Die UUID wurde gespeichert und auf den neuen Swap angewendet.

  • Das System erreicht "Image 100% wiederherstellen" und dann "Konsolen anhalten" und schaltet sich dann aus und startet normal, wobei alle Arbeit verloren geht.

  • Versucht sauber zu installieren, aber ohne Glück.

  • Passiert nur auf i386 (32-Bit x86), amd64 (64-Bit x86) leidet nicht.

Layout der Festplattenpartitionstabelle:

NAME   FSTYPE LABEL    UUID                                 MOUNTPOINT
sda                                                         
├─sda1 ext4   HDD      <ROOT-UUID> /
└─sda2 swap   HDD-SWAP <SW-UUID> [SWAP]
sr0

Der sda2 war vor dem Upgrade logisch (befindet sich im Inneren erweitert).

Fstab:

UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1
UUID=<SW-UUID> none swap sw 0 0

/etc/initramfs-tools/conf.d/resume

RESUME=UUID=<SW-UUID>

Kernel cmdline

BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet

System Information:

Computer: Compaq CQ60-120ec
Swap Size: 3.5GiB
Processor: AMD Athlon X2 64 QL-66
GPU: Nvidia Geforce 8200M G
Memory: 2G DDR2 667MHz
Desktop Environment: LXDE
Debian Version: 9 (stretch)
Kernel version: 4.9.0-3
Graphics Driver: nvidia legacy 304xxx

(Ich weiß, dass der Prozessor 64-Bit ist, aber er kam ursprünglich mit 32-Bit-Betriebssystem, also dachte ich, es wäre 32-Bit, bis ich / proc / cpuinfo untersuchte)

Enginecrafter77
quelle

Antworten:

4

Das Problem ist auf einen Konflikt zwischen Ruhezustand und kASLR auf x86-32 zurückzuführen . Dies kann gelöst werden, indem kASLR mit der Startoption nokaslr kernel deaktiviert wird . x86-64 ist nicht betroffen.

Für Grub kann dies durch Bearbeiten von / etc / default / grub und Hinzufügen von nokaslr zu den Startoptionen erfolgen , z. B.: GRUB_CMDLINE_LINUX_DEFAULT = "quiet nokaslr "

Führen Sie dann update-grub aus , um die Konfiguration zu aktualisieren, und starten Sie den Computer neu , um es zu versuchen.


Ich hatte genau das gleiche Problem und es scheint, dass nur der PAE-Kernel von diesem Problem betroffen ist. Der gleiche Kernel ohne PAE funktioniert ohne Probleme.

Die Problemumgehung bestand für mich darin, Linux-Image-686 zu installieren und Linux-Image-686-pae und Linux-Image-4.9.0-4-686-pae zu deinstallieren. Die genaue Kernelversion kann sich im Laufe der Zeit aufgrund von Upgrades ändern, aber im Grunde muss der aktuell ausgeführte PAE-Kernel durch einen Kernel ohne PAE ersetzt werden.

Es hat eigentlich nichts mit der PAE-Unterstützung der CPU zu tun, da meine CPU PAE gemäß / proc / cpuinfo unterstützt. Aber PAE ist auf alten Notebooks sowieso nicht sehr nützlich.

Es hat auch nichts mit Kernel 4.9 PAE zu tun, da das gleiche Problem mit Kernel 4.13 PAE aus Debian-Backports auftritt.

Und ich
quelle
Diese ausgezeichnete Antwort würde viel mehr Verbesserungen verdienen, aber ich kann nur eine geben.
Peter - Wiedereinstellung Monica
Ja, danke, ich dachte, diese Seite hat keine Experten mehr. (Un) Glücklicherweise habe ich herausgefunden, dass die amd64-Version ohne Probleme läuft, also dachte ich, dass sie die 686-Version nicht mehr warten, aber ich wusste nicht, dass es eine 686-Version ohne PAE gibt. Ich hoffe, Debian wird es reparieren, sonst werden sich die Leute beschweren.
Enginecrafter77
3

/etc/uswsusp.confMöchte wahrscheinlich einen geänderten Eintrag für das 'Gerät wieder aufnehmen'. Wenn dies nicht verwendet wird, versucht myabe einfach, Ihre alte UUID in allen Dateien /etczu durchsuchen, um einen Ort zu finden, an dem Änderungen erforderlich sind. Auch ein update-initramfswäre notwendig, würde ich sagen.

Jaleks
quelle
Nichts davon half beim Versuch, uswsusp zu installieren und zu überprüfen, ob die Datei korrekt war, aber kein Glück. Und keine Konfigurationsdateien in / etc enthalten meine alte UUID.
Enginecrafter77
2

Ich habe den gleichen Fehler bekommen. Die Neuinstallation mit der neuesten netinst iso, dh debian-9.1.0-amd64-netinst.iso, hat das Problem behoben. Der Fehler scheint behoben worden zu sein (zumindest für diese Architektur).

vcc
quelle
Ja, ich stimme zu, es ist in amd64 (dh x64) behoben, aber der Fehler ist immer noch in i386 (Alias ​​686 oder x86) vorhanden
Enginecrafter77
1

Ich habe uswsusp entfernt und der Winterschlaf funktioniert wieder wie ein Zauber. Übrigens denke ich, dass es bereits vor Jessie der Fall war, als ich den NVIDIA-Treiber verwendete. Ich habe ihn mit uswsusp getestet und musste ihn entfernen, damit der Ruhezustand funktioniert.

Alain
quelle
Ich habe uswsusp nicht auf dem Test eines 32-Bit-Computers installiert, aber der Ruhezustand funktioniert immer noch nicht.
Enginecrafter77
Schade. Haben Sie versucht, den NVIDIA-Treiber zu entfernen und den Nouveau zu verwenden?
Alain
Ja, ich habe versucht, die Debian 9-Installation (32 Bit) vollständig zu bereinigen, aber das Problem ist immer noch vorhanden. Es passiert auch auf Computern mit Intel-Grafik, daher hat es meiner Meinung nach nichts mit der GPU zu tun.
Enginecrafter77
1

Wenn Sie eine Swap-Partition (mit der richtigen Größe) haben und "/etc/initramfs-tools/conf.d/resume" mit dem Ergebnis "#blkid" bearbeiten und i386 nicht korrekt in den Ruhezustand versetzt wird, ist dies ein Fehler in Debians i386 4.9 Kernel! Aktualisieren Sie den Kernel auf eine Version größer als 4.9 oder führen Sie ein Rollback auf den 3.16-Kernel durch.

Lopi Dani
quelle
0

Bitte entschuldigen Sie den generischen Charakter dieser Antwort. Ich habe im ganzen Web ähnliche Fragen gesehen und beschlossen, eine Antwort für alle zu schreiben. Ich habe das gleiche Problem festgestellt, als Sie Debian-Jessie auf einem Hp2510 aktualisiert haben. Ich bin zu Ubuntu-Desktop gewechselt und habe es auch dort gefunden. Anschließend habe ich meine Tests unter Ubuntu und dem Hp2510 durchgeführt, sodass dies möglicherweise nicht vollständig auf Ihre Situation zutrifft.

Bei einigen älteren Computern, die mit neuen Linux-Systemen aktualisiert wurden, treten Startprobleme auf. Sie starten möglicherweise überhaupt nicht oder es kann bis zu drei Minuten dauern, bis sie gestartet sind. Zufälligerweise können sie entweder nicht in den Ruhezustand versetzt werden oder es dauert so lange, bis sie in den Ruhezustand versetzt und in den Ruhezustand versetzt werden, dass die Funktion unbrauchbar ist. Dies liegt häufig nicht daran, dass alte Computer einfach nur langsam sind, sondern an einer Änderung im 4.8-Linux-Kernel, die ein Problem mit einem sehr verbreiteten Intel-Chipsatz verursacht, der eine Videoausgabe enthält. Beginnend mit diesem Kernel treten bei jedem Computer mit diesem Chipsatz Startprobleme auf, es sei denn, das Linux-Befehlszeilenargument"video=SVIDEO-1:d"ist in GRUB_CMDLINE_LINUX enthalten. Dies verkürzt sowohl die 64-Bit- als auch die 32-Bit-Startzeiten erheblich, behebt jedoch Probleme im Ruhezustand nur für 64-Bit. Kein 32-Bit-System unterstützt nach diesem Zeitpunkt den Ruhezustand. Außerdem sind die Startzeiten für alle Kernelversionen 4.8 und 4.9 schlecht (außer 4.8.rc1-7). Dies wird schließlich in 4.10 behoben. Die Kernel 4.8 und 4.9 sollten einfach vermieden werden (sie sind sowieso veraltet).

Wenn Sie die schnellsten Startzeiten wünschen, verwenden Sie einen Kernel vor 4.8. Ich würde Ubuntu-Desktop 15.04 mit einem auf 4.7.10 aktualisierten Kernel verwenden. Dies ist der einzige Weg, um in einem 32-System den Ruhezustand zu erreichen. Das 64-Bit-System startet 7% langsamer als das 32-Bit-System, ist aber immer noch schneller als jede spätere Version. Wenn Sie ein derzeit unterstütztes 32-Bit-System möchten und auf den Ruhezustand verzichten möchten, verwenden Sie ein System, das entweder freigegeben oder auf einen Kernel mit 4.10 oder höher aktualisiert wurde. Jede 64-Bit-Version funktioniert nach 4.8 mit dem Video-Fix, aber für eine optimale Leistung vermeiden Sie 4.8 und 4.9.

Um das Video-Fix hinzuzufügen, tun Sie sudo nano /etc/default/grub. Nach dem Schließen von Nano tun sudo update-grub. Sofern GRUB_CMDLINE_LINUX_DEFAULT, das nach GRUB_CMDLINE_LINUX eingefügt "video=SVIDEO-1:d"wird, nicht leer ist, ist dies nicht das letzte Linux-Befehlszeilenargument, das einige Leute für notwendig halten. Es kann tatsächlich überall sein.

Sie können den Ruhezustand jederzeit mit dem Befehl pm-hibernate in einem Terminal (oder tty) aufrufen. Um jedoch eine verfügbare GUI-Option zu haben, müssen Sie /etc/polkit-1/localauthority/50-local.d/ com.ubuntu.enable-hibernate.pkladen folgenden Text erstellen oder zur Richtliniendatei hinzufügen (offensichtlich distro-spezifisch):

[Re-enable hibernate by default for login1]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate
    ResultActive=yes
[Re-enable hibernate for multiple users by default in logind]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate-multiple-sessions
    ResultActive=yes
David McCracken
quelle
0

Manchmal liegt das Problem nicht in der Grub oder UUID. Dies passiert auch, wenn Sie nicht mehr über genügend Speicherplatz verfügen. Es ist kein Schreibplatz mehr vorhanden, sodass die Wiederaufnahme des Ruhezustands einfriert.

Wenn Sie zu diesem Fehler kommen, können Sie auf alt+ f2/f3/f7oder klicken ctrl+alt+ f2/f3/f7, um das Terminal zu öffnen. Melden Sie sich mit dem Terminal bei Ihrem Konto oder Root an.

Führen Sie dann den Befehl aus sudo df -h, um den Speicherplatz zu überprüfen. In meinem Fall hatte ich keinen Speicherplatz auf meinem /dev/sda1Laufwerk. Überprüfen Sie daher den freien Speicherplatz auf den Laufwerken in der Liste.

Wenn Sie nicht genügend Speicherplatz haben, löschen Sie bitte einige Dateien, um ausreichend Speicherplatz zu erhalten.

Danach können Sie auf alt+f1oder klicken ctrl+alt+f1und warten, bis die Anmelde-Benutzeroberfläche angezeigt oder eingegeben wirdreboot in the terminal to reboot

David Kariuki
quelle
Vielen Dank für Ihren Versuch, aber dieses Problem wurde bereits behoben. Das Problem ist mit 4.9.0 i386 + PAE Kernel. Später stellte ich fest, dass auf meinem PC 64-Bit-Software ausgeführt werden konnte (obwohl auf dem PC ab dem Tag, an dem ich sie erhielt, immer 32-Bit ausgeführt wurde), und der 64-Bit-Kernel löste das Problem.
Enginecrafter77
Ok, du bist willkommen.
David Kariuki