【win备份还原工具开发日记】07:PE 恢复环境一键安装与 PE 内备份还原闭环

举报
任正非 发表于 2026/10/09 01:40:13 2026/10/09
【摘要】 【win备份还原工具开发日记】07:PE 恢复环境一键安装与 PE 内备份还原闭环对应文档(同日 1 篇):docs/20260911-0102-current-progress.mdPE 恢复一键安装(双启动模式)与 BCD 三坑操作模式改名:install-pe-secondary → install-pe-entry——原来的名字与「新增第二系统」(create-secondary)语...

【win备份还原工具开发日记】07:PE 恢复环境一键安装与 PE 内备份还原闭环

对应文档(同日 1 篇):docs/20260911-0102-current-progress.md

PE 恢复一键安装(双启动模式)与 BCD 三坑

  1. 操作模式改名:install-pe-secondary → install-pe-entry——原来的名字与「新增第二系统」(create-secondary)语义撞车,实际做的是安装 PE 恢复启动项。

  2. 双启动模式共存(PE 恢复 tab 单选):RAM disk(WIM+boot.sdi 放任意目录,从内存跑,不占分区)与硬盘启动(Apply WIM 到独立分区 + osloader 条目);启动项名完全跟随 UI 语言。

  3. BCD 三坑:① bcdedit 在本平台不支持 /create /application ramdisk(报"指定的应用程序类型无效")→ 复用系统 {ramdiskoptions} 只 /set 重指向;② 中文系统 bcdedit 输出是 GBK(无 BOM),早期按 UTF-8/UTF-16 解析失败 → 改为自适应解码;③ extract_bcd_guid 原返回带花括号,又包一层成 {{guid}} → bcdedit 拒绝,改成返回裸 GUID。

  4. PE tab UI 两坑:无边框 EDIT 看起来像普通文本(加 WS_BORDER);main.rs 对未知第一参数直接 usage() 退出,新增 --tab N 必须加特判分支,否则 GUI 根本不启动。

配置驱动 PE 任务与真实分区备份/还原闭环

  1. 机制:Windows 侧挂载 ESP 写 S:\pe-task.txt(每行一个动作,含 reboot 才自动重启)→ PE 侧先 mountvol S: /S 挂载 ESP 再读配置(PE 启动时 S: 未挂载)→ 结果落 pe-task-result.txt,配置改名 .done 防重跑。

  2. 别只用 VHD 验证:用户明确要求"备份还原真实磁盘",改用真实 NTFS 分区 P:(8GB);PE 里盘符与 Windows 不同(Windows P: → PE G:),必须用 find-drive 按标记文件定位。

  3. PE 环境踩坑:① PE 的 dism 对 WIM 文件名转义敏感,test-backup.wim(含 \t \b)报 Error 123,改用 pe-wim1.wim;/Name 值不能含连字符。② PE 的 diskpart 手动 assign letter= 报 success 但无效,必须先 automount enable 让系统自动分配。③ PE 无 PowerShell,验证用 cmd if exist。④ prlctl restart 对无 Tools 的 PE 不响应,需 stop --kill + start。

  4. 结果:真实分区全卷 backup→delete→restore→verify 数据 100% 恢复,与真实产品 DISM WIM 链路一致。

bcdboot default 恢复缺陷与 PE 桌面三按钮

  1. 需求:PE 恢复桌面「备份系统/还原系统/安装第二系统」原来是占位,改为 PE 会话内直接执行,抽成可复用执行器 execute_pe_task_line,人工点击与配置驱动共用。

  2. bcdboot 缺陷(两轮才修好):bcdboot <盘> /s S: 会把 Boot Manager 的 default 指向目标卷;第一版解析 {bootmgr} 的 default 得到 {default} 别名,但此时别名已重绑到新条目,set default {default} 等于没恢复 → 真实重启 0xc000000f。修复:bcdboot 前记录原默认条目的 partition=X:,之后枚举全条目按该 partition 找回真实 GUID 再 set default。

  3. 新增安全动作:format(默认拒绝 X:/S:/含 Windows 的卷)、bcdboot、add-secondary-entry(写全 device/osdevice/path/systemroot/nx 字段以避开 0xc0000225)。

  4. 本 VM 的 bootsequence 会/不会消费并不稳定,所以"检测到 bootsequence 就自动重启"不可靠,最终改成配置驱动。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。