设置 grub2 在工作日启动至 Ubuntu,周末启动至 Windows

ign*_*kih 4 grub2 dual-boot windows schedule

使用此线程中的出色答案,我已经能够安排在一天的不同时间启动不同的操作系统。

不过,我想获得社区关于如何在工作日启动 Ubuntu 和在周末启动 Windows 的建议,而无需在一台变砖的笔记本电脑上进行反复试验。

我现有的/boot/grub/custom.cfg看起来像这样:

insmod datehook

if [ $MINUTE -lt 10 ]; then PADDING="0"; else PADDING=""; fi
TIME=$HOUR$PADDING$MINUTE

if [ $TIME -ge 0 -a $TIME -lt 559 ]; then
  set default="Windows Boot Manager (on /dev/nvme0n1p2)"
fi

if [ $TIME -ge 1000 -a $TIME -lt 1659 ]; then
  set default="Ubuntu"
fi

if [ $TIME -ge 1700 -a $TIME -lt 2359 ]; then
  set default="Windows Boot Manager (on /dev/nvme0n1p2)"
fi
Run Code Online (Sandbox Code Playgroud)

即使有人知道沙盒模式,它可以让我通过反复试验来获得很好的答案,但我也很欣赏社区提供的一些最佳实践输入。

谢谢你!

Max*_*Max 5

如果您想尝试使用 grub,可以使用 grub 命令行(c在 grub 菜单中点击)。您应该看到 grub 提示符:

grub>
Run Code Online (Sandbox Code Playgroud)

如果您想安全地进行实验,我建议使用虚拟机(例如VirtualBox)

进入 grub 命令行界面后,您可以像在/boot/grub/custom.cfg.

grub> insmod datehook
grub> date
Run Code Online (Sandbox Code Playgroud)

我还没有找到 datehook 模块文档;但是,datehook的源代码显示$WEEKDAY有一个变量可用。

grub> echo $WEEKDAY
Run Code Online (Sandbox Code Playgroud)

所以,你可以做

grub> if [ $WEEKDAY = "saturday" -o $WEEKDAY = "sunday"  ]; then
 echo "Setting Windows as default"
 set default="Windows Boot Manager (on /dev/nvme0n1p2)"
else
 echo "Setting Ubuntu as default"
 set default="Ubuntu"
fi

Run Code Online (Sandbox Code Playgroud)

请注意,$WEEKDAY 可能已本地化,因此请在使用此代码之前进行测试。

如果您不使用 QWERTY 键盘,请按照以下说明在 grub 中设置键盘映射:如何更改 grub 命令行 (grub shell) 键盘布局?