我意外地删除了计算机上除安装 Windows 的分区之外的所有分区。我以为这是个好主意。但事实并非如此。

我没有 MSR 或 EFI 分区,所以启动时会出错。我有两个磁盘,一个没有动过,另一个磁盘上有 Windows,并且有 MSR 和 EFI 分区。

有没有办法重建它们?如果要花点时间或其他什么的,那也没问题;它不是我的主计算机。我只是不想丢失所有分区上的数据。(因为我只删除了我认为什么都没有的分区)

我尝试过的方法:

  • 启动 Windows(实际上是 Tiny10)安装介质
  • 通过 Shift+F10 运行 CMD
  • 运行一些bootrec我从网上找到的命令

  • 启动 Linux(确切地说是 MX Linux)实时媒体
  • 运行 GParted
  • 使用 ESD 标志在 FAT32/FAT16 中重新创建分区(我都试过了)

  • 在第二个分区上安装新的 Linux 系统(由于 EFI 分区已消失,因此没有用)

提前致谢。

类似问题(如果不相同)(发布此信息希望有一个无需重置的解决方案)

此外,我不太在意是否不能再使用 Windows

3

  • 1
    您删除了包含启动配置数据的分区 (EFI);您运行的命令要求该数据存在,以便可以检测到它。如果您没有创建新分区,您可能能够检测到已删除的分区。您的操作现在使这变得不可能。如果您不关心 Windows 分区,您应该重新安装 Windows。为什么要恢复两个仅在您尝试启动 Windows 时才需要的分区?


    – 


  • BootRec /FixBoot使用 UEFI 时,除非先挂载并进入 EFI 分区(参见 ,否则无法通过直接重建 EFI 启动文件,否则将发生访问被拒绝错误;相反,一旦 EFI 分区挂载在以下Y:位置DiskPartBcdBoot C:\Windows /s Y: /f UEFI (OS 分区通常不在C:WinPE/WinRE 中)。完成后,通过以下方式解决剩余的启动问题:BootRec /FixMBR && BootRec /RebuildBCD并重新启动,即使未找到 Windows 安装。


    – 

  • 您想从数据分区恢复数据,是还是不是?那为什么还要关心 MSR 或 EFI 分区呢?如果您想要从哪个分区恢复数据,那就告诉他们,然后停止摆弄 OS 启动修复工具。


    – 



最佳答案
2

如果您想恢复数据,请先尝试恢复数据分区,而不是绕道去其他地方。恢复 EFI 分区不会帮助您恢复数据分区——更有可能的是,如果该过程最终在数据所在的位置上创建新的 EFI 分区,则只会造成损害。

只要新分区具有完全相同的起始扇区(并且该工具不会“有意”擦除内容),就可以重新创建已删除的分区。Linux 工具testdisk可用于扫描已删除的分区。


要使磁盘可启动,您首先需要使用 GParted 或 手动创建和格式化 EFI 分区;然后可以使用diskpart (从 Shift-F10 控制台)向其中填充文件,它将从 \Windows\Boot 复制原始引​​导加载程序文件并生成新的 BCD 配置。请参阅

MSR 分区毫无意义;您也可以使用它来创建它,diskpart但它仅用于保留空间,而不是存储任何内容。[不要与 Windows 在 BIOS 磁盘上使用的类似名称的“系统保留”分区混淆!]

  1. C:\> diskpart
    DISKPART> sel disk ...
    
  2. 创建 EFI 分区(efi使 DISKPART 自动设置正确的 GPT 类型 guid):

    create partition efi size=100
    format quick fs=fat32 label="System"
    assign letter="S"
    
  3. 如果需要,请创建 MSR 分区:

    create partition msr size=16
    
  4. 假设系统磁盘可在 C:\Windows 访问:

    bcdboot c:\windows /s S: /f UEFI /v
    

    /s S:告诉它专门使用最近创建的分区而不是猜测;并且由于我不相信“Tiny10”能够在 UEFI 模式下正确启动,所以/f UEFI告诉 bcdboot 专门复制 EFI 文件,即使安装程序不是通过该文件启动的。

BIOS(传统)启动的过程也几乎相同– 只不过您有一个“Microsoft System”NTFS 分区而不是“EFI System”FAT32 分区,并且 DISKPART 命令略有不同,但最终仍使用相同的() 进行填充。bcdboot/f BIOS

  1. 创建系统分区:

    创建分区大小=100
    格式 quick fs= ntfs标签="System"
    指定字母=“S”
    积极的
    
  2. BIOS/MBR 磁盘上没有 MSR 分区。

  3. 将 bcdboot 与 一起使用/f BIOS

(从干净磁盘启动时会有一个额外的“引导扇区”步骤,但 MBR 引导扇区不会被删除 – 它存在于任何分区之外 – 因此您可能不需要重新安装它。)

8

  • 1
    TestDisk 可能能够检测到已删除的分区。但是,您已经创建了分区,因此成功的机会大大减少。我放弃尝试恢复这两个分区,只是重新创建它们。至于您的数据分区,那是完全不同的事情,您在操作磁盘上执行的每一个操作(而不是克隆)都会降低从数据分区恢复数据的机会


    – 

  • 感谢您的回复,但是虽然我的电脑是 UEFI,但我总是将其保持在传统模式,并且我的磁盘不是 GPT(我怎么做到的……)——所以我真的不知道我删除了哪种分区,但我的电脑肯定无法启动。我想我必须重新安装 Windows,但备份我的数据有点问题:我可能存储数据的唯一磁盘由于其快速启动功能而被 Windows 锁定——我可能会重新创建一个问题来询问如何在该锁定磁盘上获得写访问权限。或者创建一个“临时分区”,使用 Live Linux 发行版将我的 Windows 数据复制到该分区上。——无论如何,谢谢


    – 

  • 如果您现在告诉我您不想要 EFI 分区,那么为什么还要特别询问如何创建它呢?


    – 


  • 1
    这是因为我不知道它不是 GPT 磁盘,但认为 Windows 安装程序从未在传统模式下启动(并且我暂时启用了 UEFI 模式)但它仍然在传统模式下安装…是的,我不知道我做了什么。


    – 

  • 1
    @HGStyle – 如果 Windows 是在传统模式下安装的,那么就不可能删除 EFI 分区。您所问的和现在告诉我们的事实在现实中是无法共存的。如果 Windows 是在传统模式下安装的,那么磁盘就不可能是 GPT。您需要修复问题中的不一致之处。


    – 


Linux 工具不需要修复 Windows,而且使用起来效率低下:
/ :通过/解决启动问题,通过/解决分区问题


根据 OP在 grawity_u1686 的回答下的

…[W] 虽然我的计算机是 UEFI,但我总是将其保持在 传统模式并且 我的磁盘不是 GPT所以我真的不知道我删除了什么类型的分区,但我的计算机……无法启动。


解决:

  1. 输入 UEFI 固件设置:

    1. 禁用:
      • CSM 模式的唯一目的是使缺少 EFI 启动的发行版能够在 2017 年左右启动(Windows ≥7 支持 EFI 启动)
      • CSM 模式导致性能下降,迫使 UEFI [64 位] 在 32 位环境中模拟 BIOS [16 位]
    2. 启用:
  2. 启动打开终端: Shift +F10

  3. 通过以下方式将 OS 驱动器转换为 GPT

    ::# Ascertain OS drive #:
        DiskPart
    
        ::# List drives:
            Lis Dis
            Exit
    
    ::# Convert OS drive from MBR to GPT:
        Mbr2Gpt /Convert /Disk:#
    
    1. 验证Mbr2Gpt是否创建了必要的 Boot 和 MSR 分区:
      DiskPart
      
      ::# List drives (ensure OS drive has GPT asterisk next to it):
          Lis Dis
      
      ::# Select OS drive number:
          Sel Dis #
      
      ::# List partitions
          Lis Par
      
    2. 如果驱动器有 EFI 和 MSR 分区:跳至步骤 5
  4. 驱动器前面

    ::# If Dual-Booting:
        ::# Windows requires a 100MB EFI partition, whereas distros 
        ::# require different sizes, with max being ~750MB; sum both
        ::# to avoid issues
    
    Cre Par EFI Size=100
    Format Quick Fs=FAT32 Label="EFI"
    Assign Letter=Y
    Cre Par Msr Size=16
    

  5. 如果已删除请在驱动器末尾重新创建该分区:

    ::# Verify if WinRE partition still exists:
        Lis Par
    
        ::# WinRE partition can't be deleted without an override due to
        ::# its attribute flag, so it could still exist
    
    ::# If it doesn't, select last partition on the drive:
        Sel Par #
    
    ::# Recreate WinRE partition:
        Shrink Desired=1024 Minimum=1024
        Cre Par Pri Id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
        Format Quick Fs=NTFS Label="WinRE"
        Gpt Attributes=0x8000000000000001
    
    ::# Get OS partition mount point:
        Lis Vol
        Exit
    

    1. 如果跳过了第 4 步,请Y:首先挂载 EFI 分区:
      DiskPart
      
      ::# List volumes:
          Lis Vol
      
      ::# Select and mount the EFI partition:
          Sel Vol #
          Assign Letter=Y
          Exit
      
    2. ::# EFI boot files cannot be rebuilt directly via BootRec /FixBoot
      ::# unless the EFI partition is mounted and "EFI\Microsoft\Boot" is
      ::# entered first, otherwise an Access Denied error will occur
      
      ::# C: is the OS partition from Step 5:
          BcdBoot C:\Windows /s Y: /f UEFI
      
      ::# Resolve any other boot issues:
          BootRec /FixMBR && BootRec /RebuildBCD
      
      ::# Remove EFI mountpoint:
          DiskPart
      
            Sel Vol Y
            Remove
            Exit
      

  6. 重新启动 Windows → 打开管理终端:
    + R打开: powershellCtrl+ Shift+OK

  7. # Ensure WinRE is disabled:
      ReAgentC /Disable
    
    # Verify if Winre.wim exists:
      ls "C:\Windows\System32\Recovery" | FindStr /I "Winre.wim" ; ls "C:\Windows\System32\Recovery" -Hidden | FindStr /I "Winre.wim"
    

    如果

    1. 存在:
      # Enable and verify:
        ReAgentC /Enable ; ReAgentC /Info
      
    2. 不存在:
      从已安装的 Windows 安装 ISO 中提取install.<esd|wim>

      • 无法安装 ESD,因此请使用进行提取
        # Get list of images [indexes] within the ESD:
          Dism /Get-ImageInfo /ImageFile:"E:\sources\install.esd"
        
        # Replace '<#>' with the Windows version index # (usually index 1: Home | 6: Pro):
          & "C:\Program Files\7-Zip\7z.exe" e '-i!<#>\Windows\System32\Recovery\Winre.wim' 'E:\sources\install.esd' -o'C:\Windows\System32\Recovery'
        
        # Enable WinRE and verify:
          ReAgentC /Enable ; ReAgentC /Info
        

      • 内置方式,尽管可以使用相同的 7zip 命令
        # Get list of images [indexes] within the WIM:
          Dism /Get-ImageInfo /ImageFile:"E:\sources\install.wim"
        
        # Mount WIM (usually index 1: Home | 6: Pro):
          MkDir "C:\Mount" ; Dism /Mount-Image /ImageFile:"E:\sources\install.wim" /Index:1 /MountDir:"C:\Mount" /ReadOnly
        
        # Copy over Winre.wim:
          Xcopy "C:\Mount\Windows\System32\Recovery\Winre.wim" "$env:WinDir\System32\Recovery\Winre.wim"
        
        # Unmount image, discard changes:
          Dism /Unmount-Image /MountDir:"C:\Mount" /Discard
        
        # Cleanup:
          RmDir -Recurse "C:\Mount"
        
        # Enable WinRE and verify:
          ReAgentC /Enable ; ReAgentC /Info
        

10

  • 连续投票反对者:请解释一下这个答案中的步骤究竟有什么问题? (没有,因为我在发布之前已经测试并验证了每一个)


    – 

  • Linux tools are not needed to fix Windows and are inefficient to do so最有可能的是 Linux 与 Windows 的讨论。:-)


    – 

  • @ThorstenSchöning这是事实陈述,而不是观点:从其本机启动环境 WinPE/WinRE,而不是 Linux ,启动问题通过和解决,分区问题通过和解决mbr2gpt


    – 

  • 虽然“不需要 Linux 工具”是事实,但关于效率的说明似乎不那么重要。如果最初更加小心,不要损坏分区内容,那么使用 testdisk 恢复分区会更容易。


    – 

  • 1
    @JW0914 你问的是反对票从何而来,我的评论是对反对票原因的合理猜测。我认为你的回答没有错,但引用的那句话可能会激怒一些人。


    –