我有一台运行两种不同的基于 GNU/Linux 的操作系统的笔记本电脑。每个操作系统都有其专用的根分区和主分区,但共享引导和交换分区。它们都工作得很好,除了一个问题:每当我休眠机器并启动时,比如说第二天,我忘记了我休眠了 X 操作系统,我最终弄乱了 FS 日志。现在,我意识到通过共享交换空间,这是一个可能的副作用,但是,我的印象是,一旦我休眠,GRUB 会检测到交换空间正在使用中,并启动进入休眠的操作系统。对我来说情况并非如此,因为我不得不编写一个变通解决方案:
编辑 /etc/default/grub:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Run Code Online (Sandbox Code Playgroud)
运行 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
Run Code Online (Sandbox Code Playgroud)
是否有更“本机”的方式来做到这一点,或者这是实现这一目标的最佳方式?