我的主 SSD 的引导扇区已被擦除,因此计算机无法识别所有分区。我无法在其上启动操作系统,并且我目前正在使用有坏扇区的备用 HDD,而我当前使用的操作系统无法识别这些分区。
但是分区在那里,驱动器没有格式化,我可以使用十六进制编辑器正常查看分区,并且磁盘精灵已经很容易地识别了这些分区,但问题是我无法保存分区表,该功能被锁定在 DiskGenius 付费墙后面,并且需要注册,这需要花费很多钱。
我遇到这种情况是因为删除或者cipher /w:C:
,此时我不知道是什么原因造成的,但我很确定这是SDelete
因为我运行SDelete
时没有使用参数,然后我运行了SDelete /p 1 -z D:
,我猜第二个命令格式不正确,因为它首先尝试将“物理磁盘 1”写入零,这会导致访问被拒绝,然后它尝试将零写入D::
(请注意有两个冒号),但未找到并引发相同的访问被拒绝错误。
事实证明我不应该添加冒号:
,参数应该只是字母,命令应该是SDelete /p 1 -z D
。我原本想用零覆盖活动磁盘分区上所有已删除的文件,我打算将 NTFS 主文件表中标记为未使用的所有文件记录全部写入零,以便磁盘碎片整理软件忽略已删除的文件并重新使用已删除文件使用的空间。我想让使用过的文件完好无损。
我从这篇维基百科文章中学到了一切NTFS然后文档写一个完全可以工作的NTFS MFT 解析器用 Python 写的话,效率已经是我能做到的最好了,但如果用 C++ 写的话,效率会更高,可惜我的 C++ 技能还没达到那个水平。等分区恢复后,我想我得试着用 C++ 重写这个程序了。
请告诉我如何重建引导扇区以便可以读取分区。主文件表和所有标记为 InUse 的文件均未损坏。
更新:我已修复分区表,现在其他磁盘上的操作系统可以找到并访问分区。但磁盘仍然无法直接启动。
我使用以下方法修复了分区表测试磁盘,按照指南,我选择了驱动器,然后选择了第一个分区表类型选项([Intel]),然后我运行搜索,它搜索了超过 50% 的磁盘,但根本没有找到分区。
我尝试搜索了几次,没有找到分区。奇怪的是,DiskGenius 分区恢复几乎立即就找到了分区。
因此我选择了第二种分区表类型([EFI GPT]),然后继续分析磁盘,立即找到了分区,但是不知何故,testdisk 在最后一个柱面后没有停止扫描,扫描的柱面索引立即跳转到 121601,但最后一个柱面索引是 121601。
程序变得无响应并卡在 99%。我无法停止扫描。
我不知道按了多少次停止按钮Enter才终于知道要停下来。
于是我将分区表写入磁盘并重新启动。现在分区又回来了。我可以访问该分区,但不知何故仍然无法直接从该分区启动。
当我直接启动 SSD 时,出现“Bootmgr 缺少按Ctrl+ Alt+Del重新启动”错误。bcdboot 无法解决问题。mbrfix64 无法解决问题。
但有趣的是,如果我在另一个磁盘上使用 Windows 启动管理器并将该 bootmgr 中的条目用于 SSD 上的操作系统,我就可以在该磁盘上启动操作系统。
使用此方法,操作系统可以成功启动,没有任何问题。我现在正在使用主操作系统。它没有任何问题,但我无法直接启动它,因为缺少 bootmgr。
我读到我可以使用以下命令来解决这个问题:
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
但自然bootrec.exe
无法下载。我bootsect.exe
在我的 Windows 10 安装 iso 上找到了。
我使用了以下命令但显然它不起作用:
PS C:\Windows\System32> H:\boot\bootsect.exe /nt60 C: /force /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
C: (\\?\Volume{a9e2494b-f9aa-11ee-a1d8-806e6f6e6963})
Updated NTFS filesystem bootcode. The update may be unreliable since the
volume could not be dismounted during the update:
Access is denied.
\??\PhysicalDrive1
Bootcode is only updated on MBR partitioned disks. A different
partitioning scheme is used on this disk.
Bootcode was successfully updated on all targeted volumes.
现在我该怎么做?
答案1
我已经解决了第二个问题。事实证明解决方案非常简单。
我做了以下操作来解决启动问题。我首先使用 DiskGenius 将分区表类型转换为 MBR,然后将系统分区标记为活动分区。
由于某种原因,操作系统使用 GPT 分区表安装,并且有一个几百兆字节大小的隐藏系统分区,那是 EFI 启动分区,我无法恢复它。
通过将分区表转换为 MBR,BOOTMGR 已被识别。如前所述,出现错误“BOOTMGR 丢失”。
也许 BOOTMGR 已通过我之前运行的命令修复(bootsect /nt60 E: /force /mbr
我在备用操作系统上运行了它),但只有当我将分区表更改为 MBR 时,效果才有效。
无论如何,BOOTMGR 都会出现,但我现在无法启动安装在我的 SSD 上的 Windows,它显示一个蓝屏,上面写着
C:\Windows\system32\winload.exe 0xc000000e
。
我尝试自己修复该问题,我已经安装了易BCD,因此我打开它并单击“BCD 部署”,然后选择 SSD 分区并单击“安装 BCD”,然后单击“写入 MBR”,然后将 SSD 上的操作系统添加到启动菜单,最后我在“BCD 备份/修复”部分执行“重新创建/修复启动文件”操作。
并且成功了。这使得磁盘可以自行启动。BOOTMGR 现在已安装在 SSD 上。
答案2
我的主 SSD 的引导扇区已被擦除,因此计算机无法识别所有分区。
从技术上讲,只有在极少数情况下才有可能。术语“引导扇区”通常代表分区或卷的第一个扇区。删除一个分区的引导扇区不会影响其他分区的可读性。将所有分区结合在一起的骨架是分区表,可以在 MBR(主引导记录)或 GPT(GUID 分区表)中找到。极端情况是磁盘设备在开头没有任何分区表,直接从分区的引导扇区开始,也称为“超级软盘”。
我无法在其上启动操作系统,并且我目前正在使用有坏扇区的备用硬盘,
关于您的备用硬盘的提示有什么帮助?您是否将其用作启动设备,试图表达由于坏扇区您的修复安装不稳定?!
并且我当前使用的操作系统无法识别这些分区。
再次,这表明分区表缺失、有缺陷或无法读取。
但隔板就在那里,
在我看来,这只是一个可疑的说法,除非你解释你是如何得出这个结论的。
该驱动器未格式化,我可以使用十六进制编辑器正常查看分区,
就 chkdsk/fschk 命令所述而言,普通的十六进制编辑器无法提供分区/卷是否健康且可用的证据。
我通过运行 SDelete 或 cipher /w:C: 遇到了这种情况,目前我还不知道
Sdelete 命令可对文件夹中的文件进行操作。在此模式下使用它不需要更改您的 NTFS 引导扇区(假设文件系统是 NTFS,根据您的 NTFS 备注)清理可用空间也是如此。在清理 NTFS 中的可用空间时也无需修改引导扇区。
至于密码命令,链接似乎已损坏。
如果您编写了 NTFS 解析器,那么这是一项令人印象深刻的工作,但我看不出这与您的问题有何关系。这超出了您的案例描述。
概括:
您发帖的主题现在完全变了。最初是数据恢复问题,解决方案已在另一篇普通超级用户文章中明确概述,现在却变成了一篇关于修复磁盘可引导性的帖子。
我建议(不是权威人士!)将有关可启动性的修复问题发布在单独的问题中。但也许已经有一个通用的超级用户线程来讨论这个问题。
答案3
要修复您的安装,您需要了解以下最低限度的信息:
Windows 和 Linux 机器有两种常用的启动方法。旧方法基于 MBR 中的代码(请参阅我的其他帖子)。MBR 中的代码会检测活动主分区并调用其中的启动代码。
在 Linux 下,尽管一切都从 MBR 开始,但引导代码的位置具有更大的自由度。
随着旧式 BIOS 被较新的 UEFI BIOS 取代,情况发生了变化。引入了一种使用专门的“EFI 启动分区”的新启动方法。
尽管如此,UEFI BIOS 通常将老式的启动方法作为服务提供。这称为 CSM(“兼容性服务模块”)。
通过检查 BIOS 启动设置,您可以收集 BIOS 启动方式的信息。可能有各种设置可用,例如“仅 UEFI 启动”或“仅传统启动(使用 CSM)”或“当 UEFI 启动失败时允许 CSM”等。
如果没有 UEFI 相关的开关,您可能没有 UEFI 主板。
所有修复步骤都依赖于此信息。
不幸的是我的知识到此结束——我只能在 CSM 模式下启动。
答案4
关于您的更新:
引导代码仅在 MBR 分区磁盘上更新。此磁盘使用了不同的分区方案。
您正在尝试将 MBR 引导加载程序写入 GPT 分区磁盘。这是不正确的。
在擦除引导扇区之前,您的 SSD 上的分区方案是什么,MBR 还是 GPT?您需要恢复相同的分区方案。
如果是 MBR,那么您不应该在 中选择 [EFI GPT] testdisk
,而应该继续使用 [Intel]。为什么它没有找到任何分区是另一个问题。
如果是 GPT,那么您应该使用bcdboot
和/或bcdedit
恢复 GPT 引导加载程序。为什么它不起作用是另一个问题。您使用了哪些参数,命令的输出是什么?
另外,您是否恢复了所有分区?大多数情况下,分区不止一个,而且大多数情况下,您需要所有分区才能成功启动。