可以配置 Grub 以记住您最后启动的操作系统吗?

可以配置 Grub 以记住您最后启动的操作系统吗?

我的启动菜单中通常有 2-3 个操作系统:

  • Ubuntu 10.04
  • Windows 7的
  • [有时,第三个选项,例如 Ubuntu 10.04 Netbook]

如果我使用的不是默认选择的操作系统(本例中为 Windows 7),并且我重新启动,Grub 会启动到 Ubuntu 10.04。这不应该发生——当我在 Windows 7 中重新启动时,我想停留在 Windows 7。有没有办法配置 Grub 以记住我的上一次选择并启动到该选择?

或者,如果 Grub仅有的在我重新启动时(而不是在第一次打开计算机时)执行了此操作。我意识到这可能是不可能的,所以我对简单的最后选择记忆功能很满意。

答案1

在原始的 Grub 中,您可以通过设置来执行此操作,/boot/grub/菜单.lst, 这默认关键字“保存”然后使用保存默认每个启动菜单项中的关键字。


更新
Grub2 稍微复杂一些。它还在不断发展,因此尽管 Ubuntu 9.10 和 10.04 都使用 Grub2,但在打包和配置方面仍存在很多差异,这让事情变得有趣起来。

以下是如何做到的保存默认两者都有技巧:

  • Ubuntu 10.04:
    9.10 的指示是个小技巧;Lucid 要简单得多。参见Ubuntu 的帮助了解更多细节。您需要进行以下两项更改/etc/默认/grub

    1. GRUB_DEFAULT=0将以下内容改为GRUB_DEFAULT=saved

    2. 添加一行GRUB_SAVEDEFAULT=true

    就是这样。其实也没那么糟,不是吗?别忘了运行sudo update-grub

  • Ubuntu 9.10:
    Ubuntu 论坛上有几个方法可以实现这一点;显然保存默认关键字在 Grub v1.97 中存在错误。 Ubuntu 论坛上的这篇文章提供一种方法。 另一篇文章建议一个稍微简单一点的方法:

    1. GRUB_DEFAULT=已保存/etc/默认/grub

    2. 将这两行放入/etc/grub.d/40_custom(靠近底部,在“执行尾部”线):

      saved_entry=${chosen}
      save_env saved_entry
      

    我已经在 Ubuntu 9.10 中测试了此方法,并且有效;下次启动时将自动突出显示最后选择的条目。结合超时,这将自动启动到您启动的最后一个操作系统。

sudo update-grub完成更改后,不要忘记运行。这很重要,但令人尴尬的是很容易忘记……


Grub 无法区分重启来自冷启动,因此 Grub 无法在重启时自行执行此操作。但是,如果您已启动到 Linux,则可以使用sudo grub-set-default N(其中 N 是启动菜单条目的编号,从 0 开始)将条目 N 设置为在下次启动时选择(而不是保存的任何条目)。

理论上,你可以将一些东西组合在一起,挂入关机程序(一个Upstart 脚本,也许)跑了grub 设置默认值当您命令 Linux 关闭时(但当您命令它重新启动时则不会),您将无法获得相同的功能。但是,关闭 Windows 时,您将无法获得相同的功能。

我确实听说过 Grub4DOS 或 Grub1 技术,需要将 Grub 安装到 FAT32 或 NTFS/启动分区——这样你还可以运行grub 设置默认值来自 Windows,因此您可以从 Windows 注销脚本调用它。上次我看到有关此内容时,这在 Grub2 上是不可能的。现在情况可能已经改变。

答案2

这个帖子可能对您有用,因为它非常容易理解。请注意,10.04 和 9.10 使用相同的 GRUB 版本,因此对您来说应该完全相同。

相关内容