我在使用 Grub 2 时遇到了问题。当我在 Grub 启动屏幕上点击 Windows 7(加载器)选项时,Windows 无法启动。我看到一个黑屏,上面有一个白色光标闪烁......
这是我的启动选项的日志。我只想删除所有其他我不知道它们是如何创建的分区,只保留 Ubuntu ext4 分区、交换分区和 Windows 7 分区。有人能帮我解决我的问题吗?
以下是日志: http://paste.ubuntu.com/1014619/
ps:我只能使用 Hiren 的启动 CD 以第一个选项启动 Windows,即从第一个硬盘启动(win7、xp、vista)。
答案1
更新对 6 月 3 日评论的回应(引述如下)
- 我重命名了 burg 文件夹,并在重启电脑后尝试删除它。但还是没有任何效果。它说该文件夹不是空的。我该如何删除它?
你有没有尝试过sudo rm -r
?
笔记: 是非常使用此命令时要小心。如果您没有提供精确的您想要删除的目录的名称可能会损坏您的安装!
- 我创建了另一个BootInfo 摘要。它说我已经在
sdb
磁盘上安装了 Winodws XP。但我有不是在磁盘上安装了 WIndows XP 或任何操作系统sdb
。
如果您指的是其他内容,请纠正我,但我相信您正在谈论以下来自 BootInfo 摘要的摘录。
sdb1: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows XP: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files:
这确实不是表示已安装 Windows XP。如果是这种情况,您将看到以下信息Operating System:
和/或Boot files:
。以上描述了分区Windows XP: NTFS
的内容。Boot sector
/dev/sdb1
除了位于硬盘 0 扇区中的引导加载程序(即主引导记录),每个分区通常也包含引导加载程序代码。根据谈论它的人的不同,这可以称为Volume Boot Record
(VBR、Microsoft 或 IBM)或Partition Boot Record
(PBR、GRUB)。
VBR/PBR 本质上是分区开头保留区域中的“原始”二进制代码。它不是文件系统的一部分,无法从 Windows 或 Ubuntu 中(轻松)访问。
您看到的内容可能是在首次创建分区时放置在那里的,此后一直没有被触及。我的建议是忽略它。
更新对 5 月 31 日评论的回应(引述如下)
- 我只需要使用 Windows 7 DVD 进行自动启动修复,现在就可以同时启动 Windows 7 和 Ubuntu,没有任何问题。
我很高兴它又能正常工作了。我没想到使用 GRUBntldr
加载时你只会得到一个稍微更有用的错误消息bootmgr
,但事后看来这有点道理。也许这在将来可能是一种有用的问题隔离技术?
- sda2 分区是什么?为什么我无法删除它?
您的 BootInfo 摘要显示您的 500 GB 硬盘有以下分区,/dev/sda
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 * 63 927,941,469 927,941,407 7 NTFS / exFAT / HPFS
/dev/sda2 927,942,654 976,769,023 48,826,370 5 Extended
/dev/sda5 927,942,656 968,957,951 41,015,296 83 Linux
/dev/sda6 968,960,000 976,769,023 7,809,024 82 Linux swap / Solaris
查看右侧最后一列,您会看到的内容sda2
描述为Extended
。这表明sda2
是扩展分区而不是主分区。
由于历史原因,使用主引导记录 (MBR)分区表在 MBR(扇区 0)中只有四个“槽位”用于分区。主分区只是在硬盘驱动器的扇区 0 中四个分区条目之一中定义的分区。
这种限制的结果是,硬盘只能分区使用四个或更少的主分区。如果您需要的分区多于四个,而这些分区又可以放入 MBR,那么可以使用“技巧”。磁盘被划分为三个主分区加上特别的主分区这被称为扩展分区。
想想扩展分区分区为(主)分区,其中分区中的空间被细分为其他分区,而不是全部用于单个文件系统(例如ext4
或NTFS
)。扩展分区(即sda5
和sda6
)被称为逻辑分区。
的存在扩展分区在 MBR 中的一个“插槽”中,全部的逻辑分区标记为“正在使用“因此不可用。这就是您无法删除的原因sda2
。
如果你可以从 0 扇区的 MBR 分区表中删除它,那么硬盘驱动器使用的那部分sda5
将sda6
被视为“未分配“。数据在逻辑分区可能会被覆盖,从而删除您的文件。
在删除之前,sda2
你必须先清空它,删除所有的逻辑分区它包含。也就是说,你必须删除sda5
和sda6
里面的扩展分区 sda2
. 因为那会删除你的 Ubuntu 安装,所以你显然不是想这么做。
- 为什么当我尝试安装 Windows 时,Windows 7 安装 DVD 会显示一个标有“OSselector”的 15MB 分区,但在安装 Windows 或 Ubuntu 后我都看不到它?
您看不到该分区,因为它被标记为“隐藏”分区。这是来自/dev/sdb
BootInfo 摘要的分区表。操作系统选择器是(隐藏的)FAT16逻辑分区 sdb5
位于扩展分区 sdb2
。
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sdb1 * 63 1,953,487,934 1,953,487,872 7 NTFS / exFAT / HPFS
/dev/sdb2 1,953,487,935 1,953,520,064 32,130 5 Extended
/dev/sdb5 1,953,487,998 1,953,520,064 32,067 14 Hidden FAT16 < 32M
我认为您可以使用 来“查看”此分区gparted
。您还可以清除“隐藏”标志,这样就可以在 Ubuntu 和 Windows 中看到并安装它。然后您就可以看到此分区中有哪些文件。
笔记:虽然gparted
Live CD 或 USB 中包含它,但安装 Ubuntu 时不包含它。要使用gparted
安装在驱动器上的 Ubuntu,您需要先使用此命令安装它:(
sudo apt-get install gparted
您可能还可以使用 Ubuntu 软件中心 GUI 来安装它。)
- 在 BootInfo 摘要中,我看到 GRUB 使用 GRUB 和 BURG 配置文件来启动操作系统。我如何才能完全删除 BURG?
我其实对 BURG 一无所知,所以我可能不是这方面的最佳建议。但从我在 BootInfo 摘要中看到的情况来看,BURG 目前没有用于任何事情。
它的文件仍然存在/boot/burg
,这是 BootInfo 摘要检测到的。但是,MBR 中的 GRUB 引导记录会加载 GRUB,core.img
而 GRUB 又会从 加载 GRUB /boot/grub
。
我认为您可以直接删除目录/boot/burg
。不过,最好先将目录重命名为其他名称以进行测试。如果重命名后没有遇到任何问题/boot/burg
,/boot/hidden-burg
那么我认为删除该目录是安全的。
原始帖子
我没有发现 GRUB 配置存在问题。(当然,它可能仍然存在,只是我没有发现。)
问题可能出在你的 Windows 启动配置上。你可以尝试安装(免费用于非商业用途)Windows 实用程序简易BCD并验证 Windows BCD 文件的内容是否正确。(滚动到页面底部并选择按钮Register。您不是需要提供姓名或电子邮件才能下载 EasyBCD。
通过 GRUB 启动 Windows 时出现此问题的时间是什么时候?您还记得您做了哪些可能导致此问题的更改吗?
您还可以尝试以下操作,以验证您使用的是正确的grub.cfg
文件,并且 Windows 分区(又名卷)引导记录(PBR/VBR)没有损坏。
- 启动到 GRUB 菜单。
- 选择 GRUB 菜单项
Windows 7 (loader) (on /dev/sda1)
按e编辑条目的 GRUB 命令。您应该会看到以下命令。
insmod part_msdos insmod ntfs set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set=root 6060682360680260 chainloader +1
如下所示编辑命令以使用 GRUB
ntldr
代替chainloader
命令。 笔记:通过这种方式对 GRUB 启动菜单所做的更改是不是持久性。它们仅适用于下一次启动。是grub.cfg
不是已改变。insmod part_msdos insmod ntfs insmod ntldr set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set=root 6060682360680260 ntldr ($root)/bootmgr
对 (3) 和 (4) 中的命令做了两处修改。
insmod ntldr
添加了新命令。
该命令chainloader +1
被替换为ntldr ($root)/bootmgr
在仍然查看编辑的命令列表时,按Ctrl+X或F10使用这些编辑的命令进行启动,看看是否会发生任何变化。