我有一个使用 GRUB2 双启动 Gentoo Linux 和 Windows 7 的系统。计算机有四个驱动器,Windows 安装在驱动器 #2 的第三个(最后一个)分区上。驱动器布局如下所示:
|boot|-----------------home-----------------|-------------windows-------------|
(boot
并且home
是 Linux 分区)这是一个奇怪的设置,但它总是有效,直到我决定使用 Gparted 缩小 Windows 分区。新的布局是:
|boot|-----------------------home-----------------------|-------windows-------|
进行这些分区更改后,当我在 GRUB2 中选择 Windows 选项并且它将控制权交给 Windows 引导加载程序时,我收到错误消息:
Windows 启动管理器
Windows 无法启动。最近的硬件或软件更改可能是原因。 修复此问题: 1. 插入 Windows 安装光盘并重新启动计算机。 2. 选择您的语言设置,然后单击“下一步”。 3.单击“修复您的计算机”。 如果您没有此光盘,请联系您的系统管理员或计算机 制造商寻求帮助。 状态:0xc0000225 信息:由于无法访问所需设备,因此启动选择失败。
我对这种情况的发生并不特别惊讶,但我想知道是否可以在不重新安装 Windows 的情况下解决这个问题。
我尝试使用 Windows 安装 DVD(特别是 Windows 7 升级 DVD)启动计算机。选择语言和键盘并单击“修复此计算机”后,系统恢复选项屏幕没有检测到我的 Windows 分区无论如何我都可以点击“下一步”,然后使用启动修复,它未能解决问题,或者尝试命令行工具,即bootrec
(几个网站建议的),sfc
和chkdsk
。它们都没有什么作用;我仍然收到相同的错误消息。(有关详细输出,请参阅下文。)
另外,正如类似问题所建议的那样,我尝试使用“重建 BS”(重建引导扇区)功能测试磁盘,在 Linux 下运行,作用于 Windows 分区。这也没有改变我得到的错误。
我没有看到任何分区上出现数据损坏的迹象,驱动器也没有遭受任何物理损坏,因此可以肯定分区布局的变化是导致此错误的原因。我想 Windows 一定将起始扇区和/或分区大小存储在其文件系统的某个地方(注册表?),这表明它应该原则可以通过在某个文件中调整几个字节来修复此问题。但是哪个文件?或者有更复杂的东西?
如果有帮助的话,这里是对应于 Windows 的 GRUB2 配置部分:
menuentry 'Windows 7 (loader) (on /dev/sdb3)' --class windows --class os $menuentry_id_option 'osprober-chain-1F9948EB30A986A0' {
insmod part_msdos
insmod ntfs
set root='hd1,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos3 --hint-efi=hd1,msdos3 --hint-baremetal=ahci1,msdos3 1F9948EB30A986A0
else
search --no-floppy --fs-uuid --set=root 1F9948EB30A986A0
fi
chainloader +1
}
再次强调,我所寻找的理想方法是无需重新安装 Windows 即可修复此问题。如果这不可能,那么重新安装是一个可接受的 B 计划,但我可以自己处理。
以下是使用 Windows 7 安装 DVD 启动到修复环境时命令提示符会话的记录。我删除了一些空白行以便于阅读。以下是所有其他驱动器的记录断开连接:
>bootrec /fixmbr
The operation completed successfully,
>bootrec /fixboot
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.
>bootrec /scanos
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1] C:\Windows
The operation completed successfully.
>bootrec /rebuildbcd
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1] C:\Windows
Add installation to boot list? Yes(Y)/No(N)/All(A):y
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.
>sfc /verifyonly /offwindir=C:\Windows /offbootdir=C:\
Beginning system scan. This process will take some time.
Windows Resource Protection did not find any integrity violations.
>chkdsk C: /F
The type of the file system is NTFS.
Volume label is windows.
CHKDSK is verifying files (stage 1 of 3)...
313344 file records processed.
File verification completed.
1684 large file records processed.
0 bad file records processed.
2 EA records processed.
158 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
416370 index entries processed.
Index verification completed.
0 unindexed files scanned.
0 unindexed files recovered.
CHKDSK is verifying security descriptors (stage 3 of 3)...
313344 file SDs/SIDs processed.
Security descriptor verification completed.
51514 data files processed.
CHKDSK is verifying Usn journal...
35406088 USN bytes processed.
Usn Journal verification completed.
Windows has checked the file system and found no problems.
207510871 KB total disk space.
104134880 KB in 251224 files.
137304 KB in 51514 indexes.
0 KB in bad sectors.
423075 KB in use by the system.
65536 KB occupied by the log file.
102815612 KB available on disk.
4096 bytes in each allocation unit.
51877717 total allocation units on disk.
25703903 allocation units available on disk.
Failed to transfer logged messages to the event log with status 50.
>diskpart
Microsoft DiskPart version 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: MININT-P92LVUL
DISKPART>list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 596 GB 0 B
DISKPART>select disk 0
Disk 0 is now the selected disk.
DISKPART>list part
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 Primary 62 MB 31 KB
Partition 2 Primary 398 GB 62 MB
Partition 3 Primary 197 GB 398 GB
当我运行连接所有驱动器的相同命令时,输出是相同的,只是diskpart
正确显示了所有驱动器,并且所讨论的 Windows 分区的驱动器号是D
而不是C
(因为我在驱动器#1 上有一个 NTFS 数据分区)。
我要指出的是,这bootrec /fixmbr
会覆盖驱动器 #2 的 MBR,替换 GRUB2 放置在那里的 MBR。当我尝试从该磁盘启动时,我只收到消息“缺少操作系统”,而不是 0xc0000225 错误。然后我可以启动 Linux 并使用它grub-install
放回 GRUB2 MBR,然后在 GRUB2 中选择 Windows 选项会再次出现 0xc0000225。
答案1
根据所使用的方法,某些事情可能会在进展过程中发生变化:
分区详细信息: 使用active
在 diskpart使分区再次激活。
引导扇区: 这引导分区工具可用于恢复引导扇区。(例如bootsect /nt60 C:
)
分区 UUID:通过更改分区位置和/或大小,UUID 会发生变化;因此,BCD 中存储的不可访问 UUID 与您分区的 UUID 不匹配。要解决此问题,消除并像这样重建BCD:
bcdedit /export C:\boot\bcd.backup
ren C:\boot\bcd C:\boot\bcd.old
bootrec /rebuildbcd
答案2
您可能因过度减少 Windows 分区而导致了此问题。
Windows 有一些不可移动的文件,第三方产品可能会决定移动这些文件。以后您应该使用 Windows 磁盘管理器调整其分区大小,因为它不会损坏磁盘。最好先关闭并清空回收站,禁用页面文件以及休眠模式,以尽量减少特殊 Windows 文件的数量,并运行碎片整理程序,将所有文件压缩到磁盘的开头。
也就是说,你可以这样做修复安装以修复 Windows 7。这种温和的安装形式将修复您当前安装的 Windows 7 并保留您的用户帐户、数据、程序和系统驱动程序。链接的文章通过屏幕截图详细描述了该过程。您可能随后必须处理 GRUB2 引导扇区的某些损坏。
如果修复安装不起作用,则 Gparted 已破坏您的 Windows 分区。我希望您在这种情况下有备份,否则您可能不得不求助于 数据恢复实用程序。
答案3
当我尝试升级到 Windows 10 时,我的电脑也遇到了类似的问题(相同的错误代码 0xc0000225)
问题出在我的一个驱动器上仍然有一个空的 EFI 分区。在启动时,计算机找到 2 个 EFI 分区:一个来自我的主操作系统,另一个对应于我几个月前卸载的旧操作系统(我从我的第一个硬盘驱动器移至 SSD 并格式化了所有内容)
也许这也是你的问题。我有两个解决方案,希望有效:
- 在控制面板上,管理您的计算机,找到无用的EFI分区,然后将其删除
- 使用 Windows 安装支持运行您的计算机(您可以通过在 Microsoft 网站上下载向导来制作一个),运行安装程序、高级设置,当它向您显示所有卷时,找到 EFI 分区并将其删除
我也重新安装了 Windows,但如果你删除坏的 EFI 分区就足够了
从那时起,启动时就不再出现问题,我的电脑可以安装 W10 等等......
抱歉,如果我没有给你提供你需要点击的内容的确切名称,我的操作系统是法语的 ^^
答案4
您需要一个标准的 Win10 安装介质来进行修复。使用它启动系统,然后从安装介质中选择手动修复/命令提示符。从 diskpart 开始,手动选择系统启动分区并为其分配驱动器号,然后在所选卷上重建 bcdboot,也许 fixmbr 也有帮助,仅此而已。
请按照以下步骤操作:
将媒体(DVD/USB)插入您的电脑并重新启动。
从媒体启动
选择修复您的计算机
选择疑难解答
从菜单中选择命令提示符
输入命令:
C:\> Diskpart
DISKPART> list disk
DISKPART> sel disk 0
DISKPART> list volume
此时您必须手动选择~110MB 大小的 FAT32 win10 系统启动分区,在此示例中,此部分的编号为:99 请谨慎选择,因为我们将覆盖此卷的内容。启动分区是一个约 110MB 大小的分区,并使用 FAT32 文件系统格式化。
DISKPART> sel volume 99
DISKPART> assign letter=b:
DISKPART> exit
格式化选定的分区(格式化之前,您可以重新检查该分区的内容,它应该只包含根目录中名为 EFI 的目录。)
C:\> format B: /FS:FAT32
在格式化的分区上重建引导系统
C:\> bcdboot C:\windows /s B: /f UEFI
修复引导记录(大多数情况下没有必要,但如果你这样做也不会出错)
C:\> bootrec /fixmbr
C:\> exit
完毕。
重启系统,瞧