我正在设置一台双启动无头 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 个菜单项。
例如
- 如何从 Ubuntu 重新启动到 Windows?
- https://unix.stackexchange.com/questions/43196/how-can-i-tell-grub-i-want-to-reboot-into-windows-before-i-reboot
- https://superuser.com/questions/285755/boot-to-windows-once-from-grub-then-back-to-ubuntu-on-next-boot。
由于我没有安装“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
(来源:启动板 - 丹尼尔·里希特)