You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Linux环境下将无分区表备份的Windows GPT磁盘分区镜像重新组装为可引导完整镜像

如何在Linux环境下将无分区表备份的Windows GPT磁盘分区镜像重新组装为可引导完整镜像

嘿,我来帮你搞定这个问题!从你提供的镜像信息和挂载后的内容来看,我们已经能明确每个分区的作用,接下来一步步把它们组装回可引导的GPT磁盘:

第一步:先理清每个镜像对应的分区角色

先把5个镜像的定位搞清楚,这是后续操作的核心:

  • dev-sdc2.img:挂载后有EFI目录,是EFI系统分区(ESP)——GPT磁盘引导的核心组件,必须放在正确位置
  • dev-sdc3.img:16MB大小且标记为data,这是微软保留分区(MSR),是GPT磁盘留给Windows做分区管理操作的预留空间
  • dev-sdc4.img:体积最大的镜像,里面有WindowsProgram Files等核心目录,毫无疑问是主系统分区(C盘)
  • dev-sdc1.imgdev-sdc5.img:挂载后都有Recovery目录,属于Windows的恢复分区(一个可能是WinRE应急恢复环境,另一个是出厂系统恢复分区)

第二步:准备目标磁盘

⚠️ 重中之重:请确认你要写入的目标磁盘(比如/dev/sdX,X是你的磁盘字母)和原磁盘大小完全一致,而且磁盘上的所有数据都会被彻底清空!操作前务必做好重要数据的备份!

先通过以下命令确认目标磁盘的路径:

lsblk

找到你的目标磁盘(比如/dev/sdb),记好这个路径,后续所有操作都要用到它。

第三步:创建GPT分区表并匹配分区

我们用gdisk工具来创建GPT分区表,它能精确控制分区的类型和大小,比图形化工具更适合这类场景:

  1. 打开目标磁盘的gdisk操作界面:
sudo gdisk /dev/sdX
  1. 创建全新的GPT分区表:
  • 输入o,然后按回车确认(这会清空磁盘上所有现有分区表,谨慎操作!)
  1. 逐个创建对应分区,严格匹配每个镜像的类型和大小:

    • 创建MSR分区(对应dev-sdc3.img)
      • 输入n新建分区
      • 分区编号:直接回车用默认的1
      • 起始扇区:回车用默认值(2048)
      • 结束扇区:输入+16M(和镜像大小完全匹配)
      • 分区类型GUID:输入E3C9E316-0B5C-4DB8-817D-F92DF00215AE(这是MSR分区的标准GUID)
    • 创建EFI系统分区(对应dev-sdc2.img)
      • 输入n新建分区
      • 分区编号:回车用默认的2
      • 起始扇区:回车用默认值
      • 结束扇区:输入+100M(和你的镜像大小匹配)
      • 分区类型GUID:输入C12A7328-F81F-11D2-BA4B-00A0C93EC93B(ESP分区的标准GUID)
    • 创建第一个恢复分区(对应dev-sdc1.img)
      • 输入n新建分区
      • 分区编号:回车用默认的3
      • 起始扇区:回车用默认值
      • 结束扇区:输入+500M(和镜像大小匹配)
      • 分区类型GUID:输入DE94BBA4-06D1-4D40-A16A-BFD50179D6AC(Windows恢复分区的标准GUID),接着输入c设置分区名称为Recovery
    • 创建主系统分区(对应dev-sdc4.img)
      • 输入n新建分区
      • 分区编号:回车用默认的4
      • 起始扇区:回车用默认值
      • 结束扇区:直接回车用剩余的大部分空间(因为这是最大的分区)
      • 分区类型GUID:输入EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(基本数据分区,对应Windows的C盘)
    • 创建第二个恢复分区(对应dev-sdc5.img)
      • 输入n新建分区
      • 分区编号:回车用默认的5
      • 起始扇区:回车用默认值
      • 结束扇区:输入+550M(和镜像大小匹配)
      • 分区类型GUID:同样输入DE94BBA4-06D1-4D40-A16A-BFD50179D6AC,设置名称为Recovery
  2. 保存分区表:

  • 输入w,然后按回车确认写入,gdisk会自动更新磁盘的分区表信息。

第四步:将镜像写入对应分区

dd命令把每个镜像精准写入对应的目标分区,命令中的/dev/sdX1对应第一个创建的MSR分区,以此类推:

# 写入MSR分区
sudo dd if=dev-sdc3.img of=/dev/sdX1 bs=1M status=progress

# 写入EFI系统分区
sudo dd if=dev-sdc2.img of=/dev/sdX2 bs=1M status=progress

# 写入第一个恢复分区
sudo dd if=dev-sdc1.img of=/dev/sdX3 bs=1M status=progress

# 写入主系统分区(C盘)
sudo dd if=dev-sdc4.img of=/dev/sdX4 bs=1M status=progress

# 写入第二个恢复分区
sudo dd if=dev-sdc5.img of=/dev/sdX5 bs=1M status=progress

bs=1M是为了提升写入速度,status=progress可以让你看到实时的写入进度。

第五步:修复Windows引导

分区写入完成后,大概率还无法直接引导,我们需要修复EFI引导项和Windows启动配置:

方法一:Linux下直接修复

  1. 先挂载主系统分区和EFI分区:
sudo mkdir -p /mnt/win /mnt/esp
sudo mount /dev/sdX4 /mnt/win
sudo mount /dev/sdX2 /mnt/esp
  1. 添加Windows EFI引导项:
# 查看当前已有的EFI引导项
sudo efibootmgr -v

# 添加Windows引导项,指向ESP分区内的引导文件
sudo efibootmgr -c -d /dev/sdX -p 2 -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"

方法二:用Windows安装U盘修复(更稳妥)

如果Linux下的操作没成功,建议用Windows安装U盘启动:

  1. 选择「修复计算机」→「疑难解答」→「高级选项」→「命令提示符」
  2. 依次运行以下命令(注意盘符可能需要调整,E:对应EFI分区,C:对应主系统分区):
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
bcdboot C:\Windows /s E: /f UEFI

第六步:验证引导

完成所有操作后,重启电脑,在BIOS中选择「Windows Boot Manager」作为第一启动项,应该就能正常引导Windows了。


备注:内容来源于stack exchange,提问作者userho

火山引擎 最新活动