休眠恢复在Linux内核4.9.0,Debian 9上失败


9

我最近将内核从3.16.4(Debian jessie)升级到4.9.0(Debian Stretch)。一切都很好,直到我尝试“休眠”(挂到磁盘)。

当我在LXDE中使用休眠选项时,它似乎处于休眠状态。我可以听到磁盘主轴的滴答声和写入数据。但是从休眠状态恢复时出现问题。内核成功地从交换中恢复了映像,但随后冻结并重新启动,所有工作都丢失了。我在互联网上的任何地方都找不到答案。人们只是在解决一些错误,包括不设置/etc/initramfs-tools/conf.d/resume或设置内核参数,或在/ etc / fstab中输入错误。我说的对。在/etc/initramfs-tools/conf.d/resume中更正UUID,更正fstab且未设置恢复内核参数。

  • 我将交换分区从扩展分区的外部移到了主分区。UUID已保存并应用于新的交换。

  • 系统到达“还原映像100%”,然后到达“挂起的控制台”,然后关闭电源并正常启动,而所有工作都将丢失。

  • 尝试全新安装,但没有运气。

  • 仅在i386(32位x86)上发生,而amd64(64位x86)不受影响。

磁盘分区表布局:

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

升级之前,sda2是逻辑的(在内部扩展)。

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>

内核cmdline

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

系统信息:

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

(我知道处理器是64位的,但它最初是32位操作系统附带的,因此在我检查/ proc / cpuinfo之前,我认为它是32位的)

Answers:


4

问题是由于x86-32上的休眠和kASLR之间存在冲突。这可以通过使用nokaslr内核引导选项禁用kASLR来解决。x86-64不受影响。

对于Grub,可以通过编辑/ etc / default / grub并将nokaslr添加到引导选项中来完成,例如:GRUB_CMDLINE_LINUX_DEFAULT =“ quiet nokaslr

然后运行update-grub来更新配置并重新启动以尝试一下。


我遇到了完全相同的问题,似乎只有PAE内核受该问题影响。没有PAE的相同内核可以正常工作。

我的解决方法是安装linux-image-686并卸载linux-image-686-pae和linux-image-4.9.0-4-686-pae。由于升级的原因,确切的内核版本可能会随时间变化,但是基本上,当前运行的PAE内核需要替换为不带PAE的内核。

实际上,它与CPU的PAE支持无关,因为根据/ proc / cpuinfo,我的CPU支持PAE。但是无论如何,PAE在旧笔记本电脑上用处不大。

它也与内核4.9 PAE无关,因为来自Debian backports的内核4.13 PAE也会发生相同的问题。


这个极好的答案应该得到更多的收获,但是我只能给出一个。
peterh-恢复莫妮卡

是的,谢谢,我认为这个网站的专家不足。(Un)幸运的是,我发现amd64版本可以正常运行,所以我认为他们停止维护686版本,但是我不知道有没有PAE的686版本。我希望Debian可以解决它,否则人们会抱怨。
Enginecrafter77 '17

3

可能/etc/uswsusp.conf需要更改“恢复设备”的条目,如果未使用该条目,myabe只需尝试在所有文件中复制旧的UUID,/etc以查找需要更改的位置。还有一个update-initramfs是必要的,我会说。


这些都没有帮助尝试安装uswsusp并检查文件是否正确,但是没有运气。而且/ etc中没有任何配置文件包含我的旧UUID。
Enginecrafter77

2

我遇到了同样的错误。使用最新的netinst iso重新安装,即debian-9.1.0-amd64-netinst.iso对其进行了整理。错误似乎已得到修复(至少对于该体系结构而言)。


是的,我同意,它已在amd64(即x64)中修复,但该错误仍在i386(别名686或x86)中存在
Enginecrafter77

1

我删除了uswsusp,休眠状态再次变得像个魅力。顺便说一句,我认为在使用Nvidia驱动程序时,在Jessie之前已经是这种情况了,我使用uswsusp进行了测试,必须将其删除才能使其进入休眠状态。


我没有在测试32位计算机上安装uswsusp,但是休眠仍然不起作用。
Enginecrafter77'9

太糟糕了。您是否尝试过删除nvidia驱动程序并使用nouveau?
阿兰2017年

是的,我尝试了完全干净的Debian 9安装(32位),但问题仍然存在。它也发生在具有英特尔图形处理器的计算机上,因此我认为它与GPU无关。
Enginecrafter77'9

1

如果您具有交换分区(具有正确的大小),并且使用“ #blkid”结果编辑“ /etc/initramfs-tools/conf.d/resume”,则i386不会休眠,因为这是Debians i386 4.9上的错误核心 !将内核更新到大于4.9的版本或回滚到3.16内核。


0

请原谅此回复的一般性质。我在网上看到了类似的问题,因此决定为所有问题写一个答案。我在Hp2510上升级Debian-Jessie时遇到了相同的问题。我切换到Ubuntu桌面,也在那里找到了它。随后,我在Ubuntu和Hp2510上进行了测试,因此它可能并不完全适合您的情况。

一些使用新Linux系统更新的旧计算机会遇到启动问题。它们可能根本无法启动,或者可能需要长达三分钟的时间才能启动。巧合的是,它们要么无法休眠,要么花费很长时间休眠和解除休眠,以致该功能无用。通常,这不是因为旧计算机速度很慢,而是因为4.8 Linux内核中引入了一项更改,导致非常常见的Intel芯片组出现问题,其中包括svideo输出。从此内核开始,具有此芯片组的任何计算机都将遇到引导问题,除非Linux命令行参数"video=SVIDEO-1:d"包含在GRUB_CMDLINE_LINUX中。这将显着缩短64位和32位引导时间,但仅修复了64位的休眠问题。此后,没有32位系统支持休眠。此外,所有4.8和4.9内核版本的启动时间都不好(4.8.rc1-7除外)。最终在4.10中解决。仅应避免使用内核4.8和4.9(无论如何它们都已过时)。

如果您想要最快的启动时间,请使用4.8之前的内核。我将使用Ubuntu-desktop 15.04,内核更新为4.7.10。这是在32系统中进入休眠状态的唯一方法。64位系统的启动速度比32位系统慢7%,但仍比任何更高版本都快。如果要使用当前受支持的32位系统并且愿意放弃休眠方式,请使用已发布或更新为4.10或更高版本的内核。任何64位版本都可以在4.8之后使用视频修复程序,但为获得最佳性能,请避免使用4.8和4.9。

要添加视频修复程序,请执行sudo nano /etc/default/grub。封闭后做纳米sudo update-grub。除非GRUB_CMDLINE_LINUX之后插入的GRUB_CMDLINE_LINUX_DEFAULT为空,"video=SVIDEO-1:d"否则它将不是Linux命令行的最后一个参数,有人说这是必需的。它实际上可以在任何地方。

您始终可以在终端(或tty)中使用pm-hibernate命令调用hibernate,但是要使其具有可用的GUI选项,则需要创建/etc/polkit-1/localauthority/50-local.d/ com.ubuntu.enable-hibernate.pkla以下文本或将其添加到策略文件中(显然是特定于发行版的):

[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

0

有时问题不在grub或UUID中。当您的存储空间不足时,也会发生这种情况。将没有写空间,因此从休眠状态恢复将冻结。

当您遇到该错误时,可以单击alt+ f2/f3/f7ctrl+alt+ f2/f3/f7打开终端。使用终端登录到您的帐户或root。

然后运行命令sudo df -h以检查存储空间。就我而言,我没有空间,/dev/sda1因此请检查列表中驱动器上的可用空间。

如果空间不足,请尝试删除一些文件以获得相当大的空间。

之后,您可以单击alt+f1ctrl+alt+f1等待登录gui出现或键入reboot in the terminal to reboot


好,谢谢您的尝试,但此问题已解决。问题出在4.9.0 i386 + PAE内核上。后来,我发现我的PC能够运行64位软件(尽管从我获得PC的那一天起,它始终运行32位),并且64位内核解决了该问题。
Enginecrafter77

好的,不客气。
大卫·卡里基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.