【win备份还原工具开发日记】07:PE 恢复环境一键安装与 PE 内备份还原闭环
PE 恢复一键安装(双启动模式)与 BCD 三坑
-
操作模式改名:
install-pe-secondary→install-pe-entry——原来的名字与「新增第二系统」(create-secondary)语义撞车,实际做的是安装 PE 恢复启动项。 -
双启动模式共存(PE 恢复 tab 单选):RAM disk(WIM+boot.sdi 放任意目录,从内存跑,不占分区)与硬盘启动(Apply WIM 到独立分区 + osloader 条目);启动项名完全跟随 UI 语言。
-
BCD 三坑:① bcdedit 在本平台不支持
/create /application ramdisk(报"指定的应用程序类型无效")→ 复用系统{ramdiskoptions}只/set重指向;② 中文系统 bcdedit 输出是 GBK(无 BOM),早期按 UTF-8/UTF-16 解析失败 → 改为自适应解码;③extract_bcd_guid原返回带花括号,又包一层成{{guid}}→ bcdedit 拒绝,改成返回裸 GUID。 -
PE tab UI 两坑:无边框 EDIT 看起来像普通文本(加
WS_BORDER);main.rs对未知第一参数直接usage()退出,新增--tab N必须加特判分支,否则 GUI 根本不启动。
配置驱动 PE 任务与真实分区备份/还原闭环
-
机制:Windows 侧挂载 ESP 写
S:\pe-task.txt(每行一个动作,含reboot才自动重启)→ PE 侧先mountvol S: /S挂载 ESP 再读配置(PE 启动时 S: 未挂载)→ 结果落pe-task-result.txt,配置改名.done防重跑。 -
别只用 VHD 验证:用户明确要求"备份还原真实磁盘",改用真实 NTFS 分区 P:(8GB);PE 里盘符与 Windows 不同(Windows P: → PE G:),必须用
find-drive按标记文件定位。 -
PE 环境踩坑:① PE 的 dism 对 WIM 文件名转义敏感,
test-backup.wim(含\t\b)报 Error 123,改用pe-wim1.wim;/Name值不能含连字符。② PE 的 diskpart 手动assign letter=报 success 但无效,必须先automount enable让系统自动分配。③ PE 无 PowerShell,验证用 cmdif exist。④prlctl restart对无 Tools 的 PE 不响应,需stop --kill+start。 -
结果:真实分区全卷 backup→delete→restore→verify 数据 100% 恢复,与真实产品 DISM WIM 链路一致。
bcdboot default 恢复缺陷与 PE 桌面三按钮
-
需求:PE 恢复桌面「备份系统/还原系统/安装第二系统」原来是占位,改为 PE 会话内直接执行,抽成可复用执行器
execute_pe_task_line,人工点击与配置驱动共用。 -
bcdboot 缺陷(两轮才修好):
bcdboot <盘> /s S:会把 Boot Manager 的 default 指向目标卷;第一版解析{bootmgr}的 default 得到{default}别名,但此时别名已重绑到新条目,set default {default}等于没恢复 → 真实重启0xc000000f。修复:bcdboot 前记录原默认条目的partition=X:,之后枚举全条目按该 partition 找回真实 GUID 再set default。 -
新增安全动作:
format(默认拒绝 X:/S:/含 Windows 的卷)、bcdboot、add-secondary-entry(写全 device/osdevice/path/systemroot/nx 字段以避开0xc0000225)。 -
本 VM 的 bootsequence 会/不会消费并不稳定,所以"检测到 bootsequence 就自动重启"不可靠,最终改成配置驱动。
- 点赞
- 收藏
- 关注作者
评论(0)