如何在双引导 PC 中使 GRUB 从休眠状态恢复

如何在双引导 PC 中使 GRUB 从休眠状态恢复

我有一台笔记本电脑,运行两个不同的基于 GNU/Linux 的操作系统。每个操作系统都有其专用的根分区和主分区,但共享引导分区和交换分区。它们都工作得很好,除了一个问题:每当我休眠机器并启动时,比如第二天,我忘记了我休眠了 X 操作系统,最终我弄乱了 FS 日志。现在,我意识到通过共享交换空间,这可能是一个副作用,但是,我的印象是,一旦我休眠,GRUB 就会检测到交换空间正在使用,并启动到休眠操作系统。对我来说情况并非如此,因为我必须编写一个解决方案:

编辑/etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

运行 grub-mkconfig,然后编写一个脚本,在休眠时将 /boot/grub/grub.cfg 的超时从任意值更改为 0 (/etc/pm/sleep.d/10-hibernate-script.sh):

#!/bin/sh

 case "$1" in
    hibernate)
    cat /boot/grub/grub.cfg | sed 's/timeout=10/timeout=0/g' > /boot/grub/grub.cfg~
    mv /boot/grub/grub.cfg~ /boot/grub/grub.cfg
    ;;
    thaw)
        cat /boot/grub/grub.cfg | sed 's/timeout=0/timeout=10/g' > /boot/grub/grub.cfg~
        mv /boot/grub/grub.cfg~ /boot/grub/grub.cfg
    ;;
esac

是否有更“本地”的方式来做到这一点,或者这是实现这一目标的最佳方式?

答案1

由于它们都是 Linux,也许您可​​以进行一些设置,以便任一操作系统都可以从任一操作系统保存的映像中恢复?如果休眠映像包含所有内核内存(包括代码),那么哪个内核从中恢复并不重要。我不确定这是如何运作的。

另外,也许如果您的笔记本电脑有 ACPI 休眠支持,Linux 就可以以这种方式休眠。那么希望它总是在开机时恢复,而不是引导到 GRUB?再次,不确定事情是如何运作的。

如果交换分区中有恢复映像,您可能可以将操作系统设置为不使用交换分区。如果它们都以读写方式挂载任何相同的非交换分区,这将无济于事。也许有一个挂载选项可以拒绝日志重播(这会扰乱休眠状态)。


如果这些事情都没有成功,我认为你的解决方案是你能得到的最好的解决方案。我认为 grub 不知道如何查看交换分区并确定它是否正在使用。如果可以,那么也许您可以在 grub 配置中添加一些逻辑,只允许启动 SAVEDEFAULT 条目。 (grub 确实不太可能理解哪个操作系统有一个休眠图像,没有使用 SAVEDEFAULT。)

参考:

相关内容