我已经从官方 .iso 映像安装了新的 Fedora 32 工作站。到目前为止,除了休眠之外,一切正常。笔记本电脑进入休眠状态,没有任何错误并关闭。但是当我打开它时,它会像重新启动后一样开始,而不是恢复之前的状态。
# cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.7.6-201.fc32.x86_64 root=/dev/mapper/fedora_localhost--live-root ro resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet
# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 11198460 0 -2
# ls -la /dev/mapper/fedora_localhost--live-swap
lrwxrwxrwx. 1 root root 7 Jul 2 20:37 /dev/mapper/fedora_localhost--live-swap -> ../dm-1
就在关闭journalctl之前显示:
Jul 02 18:19:41 toczka systemd[1]: Reached target Sleep.
Jul 02 18:19:41 toczka systemd[1]: Starting Hibernate...
Jul 02 18:19:41 toczka kernel: PM: Image not found (code -22)
Jul 02 18:19:41 toczka systemd-sleep[2705]: Suspending system...
Jul 02 18:19:41 toczka kernel: PM: hibernation: hibernation entry
Jul 02 18:19:42 toczka kernel: rfkill: input handler enabled
我用新安装的 Fedora 31 测试了机器,并且休眠功能可以正常工作,然后看起来像是 Fedora 32 出现了一些问题。
答案1
我找到了解决问题的解决方案,但我不确定这是否正确。
如果
$ sudo lsinitrd -m | grep 'resume'
没有返回任何内容,则表明 initrd 中缺少恢复模块。要临时插入它,请执行以下操作:
$ sudo dracut -vf -a resume
并使用之前的命令再次检查。如果它返回“恢复”,则尝试休眠并唤醒。现在应该可以了。可以通过将新规则文件添加到 dracut 中来永久设置更改,即在名为:
/etc/dracut.conf.d/99-resume.conf
其中应包含:
add_dracutmodules+="resume"
不要忘记通过以下方式更新 initramfs 文件:
$ sudo dracut -vf
一般来说,这是 Fedora 32 安装介质的问题。该问题已在这里描述:红帽错误 1795422
答案2
我遇到过这些问题并通过以下方式解决了它们:
- 您需要一个交换分区。
- 添加GRUB_CMDLINE_LINUX =“安静的splash,resume=/dev/sdXn”
其中 sdXn 与您设置的交换分区相同/etc/fstab
。 (例如sda5)
您可以使用 uuid,而不是使用设备:resume=UUID=xxxx
其中 xxxx 是交换分区的 uuid。由于我不知道 fedora,uuid 的替代方案可能是:
resume=/dev/by/uid=xxxx
sudo update-grub
更改后不要忘记发出。然后重新启动。