我怎样才能让 grub2 仅在下次启动时启动不同的选项?

我怎样才能让 grub2 仅在下次启动时启动不同的选项?

我正在设置一台双启动无头 Linux / Windows 机器。我主要希望机器始终启动到 Ubuntu,除非偶尔需要在 Windows 中测试某些东西。

我已经安装了 Windows 和 Ubuntu,目前每次启动都会进入 Ubuntu。我希望能够告诉它启动到 Windows仅在下次启动时然后当我从 Windows 重新启动时,系统返回到启动 Ubuntu。

我发现Grub Legacy - 第 4.3.1 节 - 仅启动一次但我使用的是 Ubuntu 14.04 服务器,它有较新版本的 grub。从我读到的内容来看,我需要进行一些更改,并在需要启动 Windows 时/etc/default/grub使用。sudo grub-set-default

我认为这些变化从添加以下内容开始/etc/default/grub

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=false

每当进行更改时/etc/default/grub我都知道我需要运行
sudo update-grub,结果如下:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-43-generic
Found initrd image: /boot/initrd.img-3.13.0-43-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done

由于 Windows 是该列表中的第 7 个选项,我相信我会运行sudo grub-set-default 6(基于 0 的计数) - 这是正确的吗?在系统启动后,是否有不同的方法来获取编号的启动选项列表?

此外,这些线路是否/etc/default/grub足以实现此行为,还是我需要添加额外的配置?

答案1

您需要确保您GRUB_DEFAULT=saved的 grub 配置(自动生成的,您可以通过编辑 /etc/default/grub 来更改它的这一部分)已存在,sudo update-grub以使更改生效,然后使用sudo grub-reboot $1

grep -i "menuentry '" /boot/grub/grub.cfg

将为您提供可以剪切粘贴的菜单项,价格为 1 美元。或者,正如您所注意到的,选项是从零索引的,因此可以通过将 (n-1) 传递给 grub-reboot 来获得第 n 个菜单项。

例如

由于我没有安装“Windows 7”,因此没有进行测试。

答案2

这正是 grub2-once 所做的。请尝试一下。似乎 grub2-once 仅适用于 SUSE 的 Linux 发行版。

shiraz-1:~/:[0]# grub2-once --list
     0 SLES 15-SP1
     1 Advanced options for SLES 15-SP1>SLES 15-SP1, with Linux 4.12.14-195-default
     2 Advanced options for SLES 15-SP1>SLES 15-SP1, with Linux 4.12.14-195-default (recovery mode)
     3 Advanced options for SLES 15-SP1>SLES 15-SP1, with Linux 4.12.14-95.54.1.19924.5.TEST.1167133-default
     4 Advanced options for SLES 15-SP1>SLES 15-SP1, with Linux 4.12.14-95.54.1.19924.5.TEST.1167133-default (recovery mode)

shiraz-1:~/:[0]# grub2-once 3
shiraz-1:~/:[0]# reboot

答案3

awk -F\' '/^menuentry / {print $2}' /boot/grub/grub.cfg|cat -n|awk '{print $1-1,$1="",$0}'

这将为您提供可用的 grub 启动菜单选项的编号和名称。

答案4

尝试安装grub 定制器(安装指南如下)到您的 Ubuntu 系统。此 GUI 工具将为您提供一组不错的选项,您可以使用它们配置 GRUB 设置,包括启动选项的名称和顺序、默认系统、屏幕分辨率、字体、背景等...
我不确定它是否能够直接设置您想要的内容,但至少它可以向您显示操作系统编号。我认为它们也可以通过其名称来引用。

如何安装 grub-customizer:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

(来源:启动板 - 丹尼尔·里希特

相关内容