在我的 Windows 7 PC 上,我从 USB 启动了浏览器 Linux,运行 GParted 来创建一个新分区以安装 Linux。GRUB 也已安装并提供:
- Windows 7 的 /dev/sda1
- 浏览器 Linux /dev/sda2
Linux 可以启动,但 Win7 无法启动。
The boot selection failed because a required device is inacessible (0xc0000225)
我读到的所有内容都建议使用 Win7 CD 进行修复 -> 目前不是一种选择。当然,有一种方法可以从 Linux 内部修复分区表。由于这是浏览器 Linux(Puppy Linux - 不是 Ubuntu),我没有安装 apt-get 和一些宝贵的工具。
跑步ntfsfix /dev/sda2
并没有任何帮助。
以下 fdisk 输出表明存在错误 - 显然“没有在柱面结束”是没有意义的:
#fdisk -l
Disk /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14539 116779288+ 7 HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sda2 14540 15566 8249377+ 83 Linux
我该如何修复它以便 Win7 再次启动?我对手动重建表格持谨慎态度。
答案1
在编辑分区之后但在将 GRUB 安装到 MBR 之前,您需要使用dd
以下命令对 MBR 进行快照:
dd if=/dev/sda bs=512 count=1 of=/boot/win7.mbr
然后为 Windows 7 创建一个 Grub 菜单项,将其作为引导扇区映像加载。Windows 7 在 Win7 MBR 中包含一些代码,Win7 会查找这些代码的结果,这可能是您遇到问题的根源。
编辑:我还注意到,您的 Linux 安装被列为 /dev/sda2,这对于 Windows 7 安装来说似乎不正确。Windows 7 默认设置启动分区 /dev/sda1 和系统分区 /dev/sda2。您需要将 Linux 设置为 /dev/sda3,以避免重新排序分区表,并导致 Windows 7 在分区 2 上查找自身但找不到时崩溃。此外,您似乎正在使用fdisk
柱面磁头扇区兼容模式,这对于 Vista/7 来说是大忌。使用u
fdisk 中的命令切换到扇区单位而不是柱面单位。
当您使用 ntfsresize 缩小分区 2 时,您需要确保替换分区表条目从驱动器的完全相同的扇区开始,否则 Windows 将无法启动。
答案2
尝试使用 dd 创建 Windows 恢复光盘(pendrive)。
启动恢复光盘。选择“修复我的电脑”。然后选择自动启动修复。
如果失败,打开命令提示符并输入:
bootrec /fixmbr
bootrec /fixboot
bootrec/重建bcd
答案3
使用 Windows 7 恢复盘解决了这个问题。对于普通人来说,尝试从 Linux 制作 Windows 7 启动盘是不可能的。