![Vista 启动修复导致 HD 无法启动](https://linux22.com/image/1218904/Vista%20%E5%90%AF%E5%8A%A8%E4%BF%AE%E5%A4%8D%E5%AF%BC%E8%87%B4%20HD%20%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8.png)
在尝试在双启动(GRUB、Windows Vista 32 位和 Linux OpenSUSE 11.1 x64)上应用 Vista SP2 后,我遇到了一些麻烦。以下是历史记录:
- SP2 在最后阶段(重新启动后)安装失败,通过搜索我认为这是由于双启动造成的,因为许多其他人在相同条件下报告了相同的错误消息。
- 在等待 MS 支持时,我尝试了 DVD“修复您的计算机”控制台中的几项操作:
bootrec /fixmbr
, 没有效果;bootrec /fixboot
,出现“未找到元素”错误;bootrec /rebuildbcd
,出现“未找到元素”错误;bootrec /scanos
,在 C: 上找到 Windows Vista 操作系统,再次尝试上述命令,但没有结果。
- Microsoft 支持人员建议尝试使用 DVD 进行启动修复:“修复计算机”、“启动修复”,这应该会在 MBR 中重新安装 Windows 启动。从那一刻起,HD 就无法启动了。
- 从 DVD 修复/控制台,我再次尝试了上述命令:
bootrec /fixmbr
, 没有效果;bootrec /fixboot
,不再出现错误,没有影响;bootrec /rebuildbcd
,不再出现错误,没有影响;bootrec /scanos
,没有找到任何操作系统。
然后我尝试从 OpenSUSE 11.1 安装盘开始,
- 恢复引导扇区,将 Windows 的链式加载器添加到已经自动找到的 Linux 条目中;
- 成功重启后出现了 GRUB 菜单,我可以从中启动 Windows Vista(或 Linux)。
麻烦的问题是,现在我每次都必须这样做。如果我关闭计算机,无论是从 Windows Vista 还是 OpenSUSE 关闭,下次它无法直接从硬盘启动时,我必须从 DVD 启动,重新安装 GRUB,然后重新启动。然后,当它热重启时,它成功使用恢复的引导加载程序。
这可能是硬盘故障,BIOS 在热重启时读取缓存的 MBR,这可以解释这些症状。但我很难相信 grub-install 不会正确检查 MBR。此外,当我使用 Vista 修复选项时,MBR 集群突然崩溃(并且不会被检测到),这非常可疑。
以下是来自 TestDisk 的分区列表(fdisk 同意这一点):当前分区结构:
1 * HPFS - NTFS 0 32 33 16709 117 48 268435456 [OS]
2 P HPFS - NTFS 16709 117 49 50128 33 17 536870912 [Projects]
3 E extended LBA 50129 0 1 60800 254 63 171445680
5 L Linux Swap 50129 1 1 50390 254 63 4208967
X extended 50391 0 1 53001 254 63 41945715
6 L Linux 50391 1 1 53001 254 63 41945652
X extended 53002 0 1 55612 254 63 41945715
7 L Linux 53002 1 1 55612 254 63 41945652
Vista 使用 1 和 2,OpenSUSE 使用 3(使用 5、6 和 7 作为扩展分区)。没什么特别的。
我还没有尝试过 Windows Drive:\boot\Bootsect.exe –NT60 All
,因为我不知道它会做什么。可能还有其他解决方案,但我想知道是否有人已经遇到过同样的问题并找到了好的解决方案?(微软支持似乎没有任何线索,并建议重新安装所有内容,我甚至不确定这是否有效)。
编辑:刚刚看到,从 重新启动时,GRUB 引导加载程序在 Windows 会话后仍能工作shutdown /t 0 /r
,因此看来唯一失败的启动是从 BIOS 冷启动。它彻底使缓存理论失效。
编辑2:
注意到 grub-install 实际上在 OpenSUSE 11.1 中被禁用了,它忽略了参数并使用标准配置文件。尝试手动安装给出了一些提示:
我收到“错误 17:无法挂载选定的分区”。
这意味着 GRUB 无法识别分区类型,而我可以通过指定它的 NTFS 正常挂载它。fdisk -l
也能识别它:
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x9913fa82
Device Boot Start End Blocks Id System
/dev/sda1 * 1 16710 134217728 7 HPFS/NTFS
/dev/sda2 16710 50129 268435456 7 HPFS/NTFS
/dev/sda3 * 50130 60801 85722840 f W95 Ext'd (LBA)
/dev/sda5 50130 50391 2104483+ 82 Linux swap / Solaris
/dev/sda6 50392 53002 20972826 83 Linux
/dev/sda7 53003 55613 20972826 83 Linux
我猜想 Vista 的“修复”不知怎么弄乱了与第一个分区相关的信息。这能给任何人一个想法吗?
答案1
事实证明,问题在于两个分区被标记为可引导,正如您在第二次编辑中看到的那样,这是使用 Vista DVD 恢复 MBR 的副作用。显然它弄乱了扩展分区,给了它引导...(您可能会说这是 Microsoft 的正常做法)。
解决方案是使用 gparted 并清除启动标志。
我仍然需要修复 MBR 并更新到 SP2,对此,有两个链接,供感兴趣的人参考。尚未测试!
可以找到有关 MBR、Vista 变化等的一些详细说明这里。
谢谢您的帮助!
答案2
这听起来像是 BIOS 或控制器的问题。看来驱动器配置正确,并且第一个分区标记为活动分区,所以这不是问题(从它在热启动/重启时正常工作可以看出)。
我曾见过主板上的控制器芯片出现故障而导致冷启动问题。我还见过 BIOS 在硬盘完成启动程序之前尝试启动时出现这些症状,因此当 BIOS 尝试从硬盘启动时,硬盘尚未准备好。启动问题也可能是由系统功率不足引起的;驱动器启动比正常运行消耗更多的电量。它们也可能是由驱动器控制器故障引起的(硬盘本身的电子设备,而不是主板 IDE/SATA 控制器)。
我会尝试以下操作:
- 将驱动器放在另一个接口上(将其插入主板上的不同插槽)。
- 将驱动器放在另一个控制器上(使用附加控制卡而不是内置主板控制器)。
- 将驱动器放入另一台计算机(如果它启动到 Grub,则不是驱动器问题)。
- 检查所有 BIOS 设置是否合理;您甚至可以记录当前设置并执行“恢复默认值”。
- 尝试断开任何其他驱动器和不必要的设备 - 如果有必要,将系统精简为基本设备(主板,CPU,RAM,硬盘 - 如果可用,请使用板载显卡)。
- 尝试使用另一个驱动器作为系统驱动器。
- 尝试另一个(更强大的)PSU。