我有一台 Alienware M17x,可以双启动到 Ubuntu 11.04 和 Windows 7 Home Premium。目前,计算机从 GRUB 加载程序启动并启动到 Ubuntu,但如果我尝试启动到 Windows,我会立即看到黑屏,左上角有一个闪烁的光标。
的输出fdisk -l
是
Device Boot Start End Blocks Id System
/dev/dm-0p1 1 5 40131 de Dell Utility
Partition 1 does not start on physical sector boundary.
/dev/dm-0p2 6 1918 15360000 7 HPFS/NTFS
Partition 2 does not start on physical sector boundary.
/dev/dm-0p3 * 1918 64772 504878877+ 7 HPFS/NTFS
Partition 3 does not start on physical sector boundary.
/dev/dm-0p4 64772 77827 104858625 5 Extended
Partition 4 does not start on physical sector boundary.
/dev/dm-0p5 64772 67204 19531008 83 Linux
/dev/dm-0p6 67204 74498 58593536 83 Linux
/dev/dm-0p7 74498 77577 24731648 83 Linux
/dev/dm-0p8 77578 77827 2000128 82 Linux swap / Solaris
我使用了 Windows 救援 CD,并运行自动错误修复程序,直到它没有发现错误。我chkdsk /R
在主 Windows 7 ( /dev/dm-0p3
) 分区和恢复分区 ( /dev/dm-0p2
) 上运行了该程序。我将主 Windows 7 分区设置为活动分区。我还尝试在恢复控制台中运行命令
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
这些都没有帮助,最后一组命令删除了 grub,然后我必须从 Ubuntu 重新安装它。
我记得在出现此问题之前我在 Windows 上做的最后一件事是为我的显卡安装最新的 ATI 驱动程序。这会建议使用系统还原,而我之前(问题出现后)实际上有一个还原点,但无论我做了什么,该还原点都不再出现在恢复磁盘的列表中,因此我无法进行系统还原。
我还能尝试什么方法来让 Windows 再次正常启动吗?
编辑:运行建议的命令
bootsect /nt60 c:
bcdboot c:\windows /s c:
也是无效的。
答案1
您可以尝试在命令提示符下手动修复 Windows 7。
- 启动恢复 CD(或安装 DVD)并转到恢复,命令提示符。
- 不要修复 MBR!让它基于 GRUB。
- 迭代 c:、d:、e:...找到您的 Windows 7 驱动器号。
- 类型bootsect /nt60 驱动器号(适用于 Windows7)- 这将写入 Windows PBR(分区引导记录)。
- 类型bcdboot c:\windows /sc: - 用 drive_letter_for_Windows7 替换驱动器号 c: - 这将修复 Windows bootmgr 和 BCD 存储。
重新启动并从 GRUB2 菜单中选择 Windows 7 - 这应该链式加载分区引导记录 (PBR) 和 Windows 启动管理器。
如果仍然无法加载 Windows 7 启动管理器,请在 Ubuntu 中再次运行“grub-install”以更新 GRUB 菜单条目,然后重试。
您需要“告诉” GRUB 的就是它应该为“Windows7 菜单项”链接加载 Windows 7 分区
答案2
使用此设置,Windows 7 的就地升级应该可以恢复它。它会在现有 Win7 之上安装新的 Win7 操作系统,保留所有用户设置和应用程序安装。这将再次通过 grub 加载 Windows 引导加载程序。您可以恢复 grub,而无需重新安装 linux。搜索“恢复 grub2”以查找您最喜欢的作者博客。
答案3
我最近在创建一些新分区后遇到了同样的问题,导致 Windows 7 从sda1到sda2。
事实证明,Windows 是一款真正的黑人文化同质性智力测试。一想到我浪费了这么多时间,我就怒不可遏。
我执行了所有我想要的操作,但是当我最终删除 Windows 分区之前的分区,以便重新排列分区时,Windows 再次启动。
您还可以使用一个非常危险的过程来解决这个问题,即使用 fdisk 手动交换分区表中的分区,这样它们的列出顺序与它们在磁盘上的实际物理顺序不同。
Windows 实际上是故意这样做的,目的是惩罚您摆弄正在运行的 Windows 安装。