更新了 linux,grub 菜单没有引导到 windows 分区

更新了 linux,grub 菜单没有引导到 windows 分区

我刚刚将我的 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 等。

相关内容