强制 GRUB 引导到特定的内核/操作系统?

Naf*_*Kay 5 grub

我同时使用蓝牙鼠标和键盘,坦率地说,为了启动到另一个内核版本或另一个分区上的 Windows,不得不去拿一个物理键盘真的很烦人。有没有办法告诉 GRUB 在它重新启动时直接启动到特定的内核或 Windows?

是否有我可以运行的命令grub-reboot "Windows 7"会导致我的机器重新启动并在启动时启动到指定的操作系统或内核?

Mic*_*zek 7

(我正在改编来自https://unix.stackexchange.com/a/11431/73 的这个答案,因为即使问题不同,它的工作方式也相同)

首先,您需要在/boot/grub/grub.conf. 更改defaultsaved。在每个 OS 块中,添加savedefault 0,其中 0 是您希望它默认使用的内核的索引,除非另有说明。将值写入0文件/boot/grub/default,以便 GRUB 知道下次重新启动时使用哪个默认值(在savedefault执行任何这些指令之前)。

现在,在重新启动之前的任何时间,您都可以更改中的值/boot/grub/default以更改下次启动时的默认值。如果将其设置为1,则 GRUB 列表中的第二个条目将是默认值。一旦开始引导,GRUB 将执行savedefault 0指令并将默认值改回0,因此在随后的引导中您将切换回默认值 0。

要更改默认值,您可以使用grub-set-default,它获取索引号并将其写入该文件。因此,制作一个别名/脚本,它可以:

grub-set-default 1
shutdown -hr now
Run Code Online (Sandbox Code Playgroud)

当您运行它时,GRUB 将重新启动到列表中的第二个条目。下次重新启动时,它将切换回第一个(或您指定的任何一个)

  • 在我使用的操作系统中(Debian/Ubuntu-like)`/boot/grub/` 被在 `/etc/grub` 和 `/etc/default/grub` 中的用户配置文件上运行的 Grub 脚本覆盖。这通常在更新时触发,并且会使更改非持久性。 (4认同)