我对我的机器进行了双启动,并希望它默认启动到 Windows,这样,无论何时我从家里远程重启机器,它都能够回到 Windows(而不是 Ubuntu)。
问题是每次 Ubuntu 升级内核时,我都必须将 grub 的默认启动项重置回 Windows。这是因为 grub 菜单加载器使用位置 6 作为默认操作系统的启动。当 Ubuntu 安装新内核时,它会改变该顺序。
我正在寻找一种方法来配置 grub 以记住内核更新下的默认启动项。
答案1
Grub 1(Ubuntu 9.04 及更早版本)
我发现最简单的方法是将 Windows 启动项移到 Ubuntu 项上方/boot/grub/menu.lst
。默认情况下,Grub 配置文件的布局如下:
- 基本选项
- debian auto-magic 内核配置(默认包括 memtest86+ 等实用程序)
- 其他检测到的操作系统
第 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 就会启动。
祝你好运。