需求分析
在定制系统的过程中,我们会经常遇到这样一种需求:能不能在系统崩溃的情况下,给我提供系统恢复功能。其实这个需求并不少见,在我们的个人笔记本上,都能看见该功能。那么如何在定制的系统中添加该功能了?就是该博文要解决的问题。
开发环境
要实现该博文的功能,需要如下的开发工具:
- 嵌入式工控设备
- ICE嵌入式部署工具
- imagex命令行工具
- BCDEdit工具
前提条件
要拥有一个已经部署好的wes7系统,并且制作了该系统的镜像备份。制作镜像备份的方法为:imagex /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系统。
恢复系统
经过前面的工作,我们终于可以来恢复我们的系统了。恢复工作很简单,备份操作的反操作,暂时这么说吧。
imagex /apply C: 1 D:\WES7_Recovery
通过以上命令可以看到在PE系统命令行下提示正在执行的进度,以及剩余时间。系统恢复完成后,再进入我们的主系统,体验一下恢复系统的乐趣吧。
该结贴了嘛?当然不是,我们要让系统更加的智能化,能够通过一键还原。
全自动系统恢复
这时候就需要在PE系统中做手脚了。其实PE系统执行的系统环境完全都是boot.wim镜像中的系统文件。在主系统中,新建一个Pemount的文件夹,用于挂载boot.wim镜像文件。输入命令imagex /mountrw D:\sources\boot.wim 1 C:\pemount
该命令执行完成后,boot.wim镜像内容将挂载到Pemount文件夹中,此时对该文件夹里的所有更改,将可以应用到该镜像文件中。在PE系统的引导过程中,当执行完wininit操作后,将会调用winpeshl.exe文件,该文件将会调用一个winpeshl.ini文件来执行用户自定义的shell以及相关命令操作。我们就在%windir%\system32中找到winpeshl.ini文件,如果找不到,可以自己新建一个该文件。
这里需要介绍一下ini文件的命令格式:
[LaunchApp]
AppPath = %SYSTEMDRIVE%\myshell.exe
[LaunchApps]
%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2
这里,在“LaunchApps”目录下,执行我们的系统恢复操作。%windir%\system32\imagex.exe /apply C: 1 D:\WES7_Recovery。做完该操作之后,就该将我们的修改提交到镜像文件中了。
输入命令imagex /unmount C:\Pemount /commit
完成该命令后,再重启电脑,选中PE启动项,可以观察到,系统恢复在全自动执行,执行完PE恢复后,系统将自动重启,进入我们恢复的系统。
总结
可以说这个需求在很多方面都有应用,但在网上很难搜到相关介绍。这里,为大家提供该需求的解决方案,这个方案的主要难点,还是在于如何创建一个PE系统上。
如有不详或不对之处,还望大家斧正!