Linux 内核 4.9.0、Debian 9 上的休眠恢复失败

Linux 内核 4.9.0、Debian 9 上的休眠恢复失败

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

当我在 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 是逻辑的(驻留在内部扩展)。

稳定表:

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>

内核命令行

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 位操作系统,所以我认为它是 32 位,直到我检查 /proc/cpuinfo)

答案1

该问题是由于 hibernate 和 hibernate 之间的冲突造成的kASLRx86-32。这可以通过禁用 kASLR 来解决诺卡斯尔内核启动选项。x86-64不受影响。

对于 Grub,可以通过编辑 /etc/default/grub 并添加诺卡斯尔到启动选项,例如: GRUB_CMDLINE_LINUX_DEFAULT="quiet诺卡斯尔

然后运行更新grub更新配置并重启尝试一下。


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

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

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

它也与内核 4.9 PAE 无关,因为同样的问题也发生在 Debian 向后移植的内核 4.13 PAE 上。

答案2

可能/etc/uswsusp.conf需要更改“恢复设备”的条目,如果不使用此条目,myabe 只是尝试在所有文件中 grep 旧的 UUID 来/etc查找需要更改的位置。update-initramfs我想说,这也是必要的。

答案3

我遇到了同样的错误。使用最新的 netinst iso 重新安装,即 debian-9.1.0-amd64-netinst.iso 解决了这个问题。错误似乎已得到修复(至少对于此架构而言)。

答案4

如果您有一个交换分区(大小正确)并且您使用“#blkid”结果编辑“/etc/initramfs-tools/conf.d/resume”,并且 i386 将无法正确休眠,那么这是 Debian i386 4.9 上的一个错误核心 !将内核更新到 4.9 以上的版本或回滚到 3.16 内核。

相关内容