我刚刚将我的 Ubuntu Linux 更新到 Ubuntu 10.4,但我的 grub 菜单不允许我启动到 Windows 分区。
问题似乎出在 grubs 的新更新中,从使用可编辑的 menu.lst 文件到使用不可编辑的 grub.cfg 文件。我看到的所有地方都显示“请勿编辑 GRUB.CGF 文件”。我不知道该怎么办。我认为新配置搞砸了 Windows 启动文件。有人对如何修复此问题有任何建议吗?我不确定这是 Windows 问题还是 Grub 启动菜单问题。任何帮助都非常感谢。谢谢
-克里斯·弗林
答案1
我只能提供部分帮助。我不使用 Ubuntu,但我运行 Debian“Squeeze”,它有相同的更新版 Grub。新的 Grub 系统从一系列可以编辑的文件中创建其配置文件。在我的 Debian 系统上,它们位于“/etc/grub.d/”。您应该注意到这些文件的名称与 grub.cfg 文件中的各个标题部分相对应。标题部分以单词“#BEGIN”开头,后跟其中一个文件的路径。您应该能够找到处理启动 Windows 分区的文件,并在其中进行所需的任何更改。完成此操作后,您需要运行 grub-mkconfig 命令来创建新的/更新的 grub.cfg 文件。
我没有运行 Windows,因此我无法帮助双重启动该操作系统。如果这只是一半的答案,请见谅。
答案2
grub 的 menu.lst 文件中是否列出了 Windows 操作系统?menu.lst 文件中是否有可供人类使用的超时值?检查 grub 目录中的文件 menu.lst(不知道 Ubuntu 中的文件是什么:/boot/grub/menu.lst?)
保持冷静,Ubuntu 安装程序/更新程序不太可能干扰您的其他分区。
答案3
在正常情况下,Grub 不会损坏分区。最坏的情况下,您只需要重写主 MBR。grub 的行为与 bios 非常相似,它会在您要求其引导的分区中搜索常规引导文件。当您为 windows 指定 chainloader +1 时,它会在您指定的分区中搜索 ntldr 或 msdos.sys 等 windows 引导文件。当您要求它引导 nix 系统时,您会告诉它内核位于 /boot/... 因此它会加载该文件。我在许多机器上安装了数千次 linux、bsd、solaris...。我从未见过它破坏任何东西,也没有听说过它这样做。总是存在侥幸的可能性,但更有可能的是驱动器故障,而不是 grub 破坏东西。
/etc/grub.d/ 也是 ubuntu 放置文件的地方。我怀疑 grub 需要该位置。
/etc/grub.d# ls
00_header 10_linux 20_memtest86+ 40_custom README
05_debian_theme 20_linux_xen 30_os-prober 41_custom
上面是我的 grub.d/ 的列表,其中 40 和 41 适用于 Windows 分区等
操作系统探测器找到了我的主要 win 分区并将其添加到您的 40_custom 中,需要与下面类似,您需要使用 blkid 找到您的 win 分区的 uuid 来修复搜索行并让您正确更改设置根行
menuentry "Microsoft Windows XP Professional (on /dev/sdb1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(/dev/sdb,msdos1)'
search --no-floppy --fs-uuid --set=root D8C0FF3EC0FF2204
drivemap -s (hd0) ${root}
chainloader +1
以上是它自动放入我的 grub.cfg 中的内容。另外,如果您只需要恢复 win,稍后使用 bartPE 或其他类似磁盘进入 linux,请参考。运行 mbr 修复实用程序将其设置回 win mbr。从那里,您可以使用带有 grub 的启动 cd/usb 驱动器启动到 linux 分区。确保复制 grub.cfg 中有关该 linux 分区的信息。实时 usb 驱动器非常方便。它们通常附带安装的 grub,因此您通常只需将创建 linux“紧急启动”菜单选项所需的行添加到它们的 grub.cfg 中即可。只需确保使用 uuid 来设置 root 等。