如何让grub2仅在下次启动时启动其他选项?


19

我正在设置双引导无头Linux / Windows计算机。除了需要偶尔在Windows中进行测试之外,我通常希望计算机始终启动到Ubuntu。

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

我发现了Grub Legacy-第4.3.1节-仅引导一次,但是我使用的Ubuntu 14.04服务器具有更新的grub版本。从我所读的内容中,我需要进行一些更改/etc/default/grubsudo grub-set-default在要引导到Windows时使用。

我认为这些更改始于将其添加到/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足以实现此行为,还是我需要添加其他配置?

Answers:


19

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

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

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

见例如

未经我的测试,因为我没有安装Windows 7。


谢谢,我认为这是我所需要的(还有我在help.ubuntu.com/community/Grub2上找到的其他详细信息)
cwd

如果您碰巧尝试了此操作而没有将行更改为GRUB_DEFAULT=saved,则必须稍后手动进行此操作,如第二段中针对Grub2所述,然后grub-set-default 0; grub-reboot 0
rubo77 '16

1
一个显示条目号的命令:grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g"|nl -v 0
rubo77 '16

1
根据askubuntu.com/questions/838704/grub-reboot-to-specific-kernel,必须将in中的menuentrys 传递给as 。因此,例如,使用一些类似于@ rubo77的bash-fu,我想启动7,但是该条目位于a下,这是顶层菜单中的第二个条目,因此我需要通过传递(单引号以避免)外壳解释>)。submenu/boot/grub/grub.cfggrub-rebootSUBMENU>MENUENTRYmenuentrysubmenu'1>6'
特伦特·尼尔森

1
警告:如果您从BTRFS分区启动,则此操作无效。Grub在启动Windows时需要能够写入grubenv,而不能写入BTRFS。该文件通常存储在/ boot / grub中,并且可以使用grub-editenv查看。我通过在/中安装BTRFS,在/ boot中安装EXT4分区,然后在/ boot / efi中安装EFI分区来修复系统。

-2

尝试将grub-customizer(下面的安装指南)安装到Ubuntu系统。该GUI工具将为您提供一组不错的选项,您可以配置GRUB设置,包括启动选项的名称和顺序,默认系统,屏幕分辨率,字体,背景等。
我不确定它是否具有可以直接设置所需的功能,但至少它可以向您显示操作系统编号。我认为,它们的名称也可以引用它们。

如何安装grub-customizer:

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

(来源:Launchpad-丹尼尔·里希特


我看到了该工具,但是我正在使用Ubuntu 14.04服务器(没有GUI),所以我很想拥有一个命令行解决方案。
cwd

哦,不知道这一点。我使用14.10标准版(Unity),我个人更喜欢GUI来完成这些工作。你知道这个网站吗?它描述了您在问题中写的内容,但是如果它与您的第一个来源有所不同,也许在那里您可以找到真正需要的东西。
字节指挥官

-1-我不赞成您的回答,因为我想知道您是否完全读过这个问题。我可以理解,您可能在其中错过了“ ubuntu服务器”,但您刚刚在上次评论中张贴了与我的问题相同的链接……
cwd 2015年

哎呀。但是您认为每次我写新评论或回答时,我都会重新阅读整个问题和以前的帖子,检查每个链接!此外,您还可以在服务器发行版上安装DE!我承认我还不是专家,但至少我会尽力帮助别人,即使答案并非总是100%正确或有用。您应该很高兴有人可以帮助您解决这个问题,但是如果您想惹恼我,您就成功了。最后一件事:您谈论了GRUB_SAVEDEFAULT=false,但是我在我们的链接上找不到此内容。而且您忘记了那里提到的其他台词!
字节指挥官
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.