使 grub 在内核更新下保持其默认启动

使 grub 在内核更新下保持其默认启动

我对我的机器进行了双启动,并希望它默认启动到 Windows,这样,无论何时我从家里远程重启机器,它都能够回到 Windows(而不是 Ubuntu)。

问题是每次 Ubuntu 升级内核时,我都必须将 grub 的默认启动项重置回 Windows。这是因为 grub 菜单加载器使用位置 6 作为默认操作系统的启动。当 Ubuntu 安装新内核时,它会改变该顺序。

我正在寻找一种方法来配置 grub 以记住内核更新下的默认启动项。

答案1

Grub 1(Ubuntu 9.04 及更早版本)

我发现最简单的方法是将 Windows 启动项移到 Ubuntu 项上方/boot/grub/menu.lst。默认情况下,Grub 配置文件的布局如下:

  1. 基本选项
  2. debian auto-magic 内核配置(默认包括 memtest86+ 等实用程序)
  3. 其他检测到的操作系统

第 2 部分由配置文件中的以下几行划分:

### BEGIN AUTOMAGIC KERNELS LIST
(lots of stuff here)
### END DEBIAN AUTOMAGIC KERNELS LIST

自动检测操作系统(例如 Windows)的条目位于此部分之后。当您安装新内核时,第 2 部分是唯一发生变化的部分。因此将自动检测的操作系统移动到某个地方BEGIN行会将其放置在安装新内核时条目号不会改变的位置。


Grub 2(Ubuntu 9.10 及更高版本)

update-grub使用 Grub2,每次运行时都会重新创建整个配置文件,因此编辑/boot/grub/grub.cfg不会是永久修复。该文件的生成方式由/etc/default/grub中的文件和脚本处理/etc/grub.d/*。因此,我们通过修改控制配置文件各个部分的文件来修改配置,然后再次运行update-grub

我的/etc/grub.d包含以下文件:

  • 00_标题
  • 05_debian_主题
  • 10_hurd
  • 10_linux
  • 20_memtest86+
  • 21_memtest86
  • 30_os-探测器
  • 40_自定义

这些是运行的 shell 脚本为了生成配置文件。Windows 启动项由 生成30_os-prober,运行Linux 启动项是在 中生成的10_linux。因此,只需将30_os-prober其重命名为小于 10 的名称,然后重新运行update-grub

mv /etc/grub.d/30_os-prober /etc/grub.d/09_os-prober
update-grub

现在您的 Windows 条目应该是第一个条目,并且您可以在 中将其设置为默认启动条目 ( GRUB_DEFAULT=) /etc/default/grub

答案2

按照我的博客上的说明进行操作这里使用干净的 Windows 引导加载程序来完成您的工作。我现在使用它,当我启动 PC 时,我有两个选择:

Windows Vista Ubuntu 10.04

没有其他杂乱。您也可以为其设置许多不同的选项。如果我 5 秒钟内不按任何键,Windows 就会启动。

祝你好运。

相关内容