转载文章:http://blog.csdn.net/meiyuli/article/details/7723103
在定制系统的过程中,我们会经常遇到这样一种需求:能不能在系统崩溃的情况下,给我提供系统恢复功能。其实这个需求并不少见,在我们的个人笔记本上,都能看见该功能。那么如何在定制的系统中添加该功能了?就是该博文要解决的问题。

开发环境

要实现该博文的功能,需要如下的开发工具:
  • 嵌入式工控设备
  • ICE嵌入式部署工具
  • p_w_picpathx命令行工具
  • BCDEdit工具

前提条件

要拥有一个已经部署好的wes7系统,并且制作了该系统的镜像备份。制作镜像备份的方法为:p_w_picpathx /capture C: D:\wes7_recovery.wim。
设备上的磁盘必须具备最低2个磁盘分区,其中一个是提供给恢复系统使用的系统分区。

制作PE系统

这个PE系统的主要用途是用来当主操作系统毁坏时,通过这个PE系统来恢复主系统引导。当然推荐安装一个DOS系统会显得更加小巧。
大多数的PE系统运行过程中是不能识别磁盘的。这里推荐一个Win7的PE系统,已经将一些基本的磁盘之类的驱动都包含了。
该PE系统制作方法非常简单只需要运行ICE工具,使用其中的Tool便可以方便的制作一个PE系统。打开ICE工具,选中工具栏上的Tools->Create Media->Create Windows PE Image,打开如下图所示对话框。
填写一个空的文件夹路径,选择部署设备的系统平台X86或者X64。在刚选中的文件夹路径下将生成一个ISO文件,该ISO文件即为该winpe系统。此时,在设备磁盘格式化一个空的磁盘,用来存放刚才制作的PE系统。这样我们的PE系统便制作完成了。

开机选项引导PE系统

PE系统制作完成了,但是如何在系统毁坏的时候正确的去引导该PE系统呢?此时,我们需要用到另外的一个工具-----BCDEdit。对于该工具大家应该都不会陌生,这里我们只简单的使用该工具,所以就通过EasyBCD工具来实现,具体命令行的方式,感兴趣可以去网上查相关资料。如下图所示。

 
我们选中“添加新条目”,在右边的分栏显示中,选择下面一栏“便携式/外接存储介质”,选中winPE,在“名称”一栏输入在启动项显示的系统引导名,在“路径”一栏打开我们在PE磁盘中sources目录下的boot.wim文件。点击“添加条目”,完成我们的引导配置。
此时,重启电脑可以观察到,我们的PE系统已经被添加到引导项中了,通过选择该引导项,将进入我们的PE系统。

恢复系统

经过前面的工作,我们终于可以来恢复我们的系统了。恢复工作很简单,备份操作的反操作,暂时这么说吧。
p_w_picpathx /apply C: 1 D:\WES7_Recovery
通过以上命令可以看到在PE系统命令行下提示正在执行的进度,以及剩余时间。系统恢复完成后,再进入我们的主系统,体验一下恢复系统的乐趣吧。
该结贴了嘛?当然不是,我们要让系统更加的智能化,能够通过一键还原。

全自动系统恢复

这时候就需要在PE系统中做手脚了。其实PE系统执行的系统环境完全都是boot.wim镜像中的系统文件。在主系统中,新建一个Pemount的文件夹,用于挂载boot.wim镜像文件。输入命令p_w_picpathx /mountrw D:\sources\boot.wim 1 C:\pemount
该命令执行完成后,boot.wim镜像内容将挂载到Pemount文件夹中,此时对该文件夹里的所有更改,将可以应用到该镜像文件中。在PE系统的引导过程中,当执行完wininit操作后,将会调用winpeshl.exe文件,该文件将会调用一个winpeshl.ini文件来执行用户自定义的shell以及相关命令操作。我们就在%windir%\system32中找到winpeshl.ini文件,如果找不到,可以自己新建一个该文件。
这里需要介绍一下ini文件的命令格式:
[html] view plaincopyprint?
  1. [LaunchApp]
  2. AppPath = %SYSTEMDRIVE%\myshell.exe
  3. [LaunchApps]
  4. %SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
  5. application2.exe, -option1 -option2

[LaunchApp]
AppPath = %SYSTEMDRIVE%\myshell.exe
[LaunchApps]
%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2

这里,在“LaunchApps”目录下,执行我们的系统恢复操作。%windir%\system32\p_w_picpathx.exe /apply C: 1 D:\WES7_Recovery。做完该操作之后,就该将我们的修改提交到镜像文件中了。

输入命令p_w_picpathx /unmount C:\Pemount /commit

完成该命令后,再重启电脑,选中PE启动项,可以观察到,系统恢复在全自动执行,执行完PE恢复后,系统将自动重启,进入我们恢复的系统。

总结

可以说这个需求在很多方面都有应用,但在网上很难搜到相关介绍。这里,为大家提供该需求的解决方案,这个方案的主要难点,还是在于如何创建一个PE系统上。
如有不详或不对之处,还望大家斧正!

转载于:https://blog.51cto.com/linchengpx/1121416

WES7创建系统恢复盘相关推荐

  1. windows从cmd中键入命令的一些常用小工具

    转载,原文见http://www.voidcn.com/article/p-myyxkrph-bqu.html Hdwwiz.cpl: 添加/删除硬件 Desk.cpl:显示 Intl.cpl:区域语 ...

  2. 计算机重镜像网络文件夹位置,利用备份的Win10映像系统文件还原win10的教程

    利用备份的win10映像系统文件还原win10的教程.在前面的教程中,我们讲解了<win10系统镜像怎么备份>,相信很多的小伙伴们都会了.刚好现在有网友就遇到了win10系统故障需要还原的 ...

  3. git的详细用法和基础教程

    Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project  # 创建项目目录  cd project  # 进入 ...

  4. u盘 轻量linux,3种方法来创建轻量、持久化的Xubuntu Linux USB系统盘

    使用Universal USB Install创建持久化USB XUbuntu系统盘 这个教程为你介绍如何使用Xubuntu Linux创建一个轻量并且持久化的Linux USB系统盘. 译者注:持久 ...

  5. 创建数据库,指定数据库的字符集和编码顺序

    创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则} 举例: create database co ...

  6. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多

    Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...

  7. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  8. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  9. etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)

    1. etcd 客户端 etcdctl 是一个命令行客户端,便于我们进行服务测试或手动修改数据库内容,etcdctl 在两个不同的 etcd 版本(v2 和 v3)下的功能和使用方式也完全不同. 一般 ...

  10. Go 学习笔记(78)— Go 标准库 net/http 创建服务端(接收 GET、POST 请求)

    使用 net/http 标准库创建一个 http 的 restful api 的服务端,用来处理 GET.POST 等请求. 源代码如下: package mainimport ("enco ...

最新文章

  1. python性能分析之line_profiler模块-耗时,效率 时间
  2. 23岁创业,28岁成为福布斯亚洲青年领袖,这个“刷脸的男人”有点牛
  3. ubuntu14.04安装intel openCL
  4. [html] H5的video可以播放哪些类型的文件?可以播放rtsp流吗?
  5. tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...
  6. MongoDB 通过 Java 代码 CRUD 数据库与集合
  7. Java中parseInt()和valueOf(),toString()的区别
  8. android调用本地js文件上传,原生JS实现前端本地文件上传
  9. 基于BP神经网络和ORL库的人脸识别matlab仿真
  10. 【黑苹果】戴尔DELL Vostro 14 5490+i5-10210U和i7-10510U+OpenCore+macos 10.15.4 efi文件下载
  11. 南方CASS9.0软件资源下载附安装教程
  12. 各种LINUX资源链接
  13. LaTeX技巧001:ctex下使用其他中文字体
  14. 怎样使用计算机定时关机,win10怎么定时关机?
  15. java public interface_Java 接口interface的基础
  16. Android正方教务系统课程表+查成绩+查考试安排
  17. 【转】PS学堂之一:展示一下自己做的圆形印章
  18. PCB板各层定义及解释
  19. python只会基础能做什么?---你可以做一个文字游戏!
  20. 端口号 一个端口号是否可以被多个进程绑定? 一个进程是否可以bind多个端口号?

热门文章

  1. java 计算器 junit测试_Java—Junit单元测试
  2. C++之类和对象(三)
  3. textbox控件变成透明怎么办
  4. Android中矢量图形的相关知识
  5. 《最受欢迎的男友职业排行榜Top10》
  6. Java教程,Java学习路线图
  7. sublime php测试,sublime phpcs代码检查配置
  8. 压力变送器自动检测系统 技术设计说明书
  9. 内存数据库 TimesTen
  10. 破解qq上网限制 突破限制上QQ