1、首先上一张图图中列出的是 Win7 32&64 位以及 Win8 32 位(64 位一样)光盘主目录。通过对比,我们可以看到不同系统的结构大同小异。下面我们逐一说明各文件作用。首先第一个是 BOOT 文件夹,这个文件夹和根目录中的 BOOTMGR 文件是密切相连的。其作用是从 BIOS 引导系统启动。首先看看 Win7 的 BOOT 文件夹,这里面这些文件其实是可以精简的。最为重要的文件有两个:BCD、boot.sdi.从 BIOS 启动时,首先是启动根目录的 BOOTMGR(启动管理器) ,然后 BOOTMGR 会读取 boot 中的 bcd 文件。bcd 中保存了不同系统的启动信息,如果要
2、使用多系统,只要编辑 bcd 添加新引导即可。再来是boot.sdi,这是 WinPE 启动必备的文件,使用光盘安装系统实质也是启用 PE,因此本文件不可少。其他文件相对次要,去掉也可。fonts 里面是启动时的字体文件,没有会乱码,zh-cn 里面是中文语言支持文件。 bootfix.bin 是光盘启动特有的一个功能:按任意键从光盘启动。删除后不会出现该提示。是一个保存信息的文件。memtest.exe 是自带的内存测试器。在 Win8 中多了 resources 这一文件夹,是启动动画的一部分。 Win7 光盘启动时是进度条,而 Win8 则是这个动画了。 接下来要说的是 EFI 文件夹和
3、 BOOTMGR.efi 这两个文件。这二与于上面 BOOT与 BOOTMGR 的关系是一样的。不同的是,这是让光盘能从 EFI BIOS 而非传统BIOS 的文件。在 Win7 32 位中是没有 bootmgr.efi 的,也就是说它无法从 EFI 启动。关于 EFI,我们日后有时间另外介绍。这里我们只要知道他们是 EFI 启动的支持文件即可。值得注意的是,bootmgr.efi 只是 EFI 启动下的启动器,并非 EFI直接可用程序。光盘 EFI 启动时的 EFI 接口是 ISO 的一个隐藏文件,然后才到 BOOTMGR.efi 接管。因此靠此文件从优盘启动是不行的。再来我们先跳过 sou
4、rces(这才是主角) ,先说说 support 和 upgrade。support 这个文件夹已经是安装程序的部分而不是启动程序部分了。support 里面是给 Windows 安装过程加的一个外壳。用过 GHO 版系统的同学肯定知道每个 gho 版系统安装过程都有一个部署界面,support 得作用基本和这个差不多。如果你删掉他,那么计算机重启后进行的阶段你只能看到一张壁纸,没有了提示,我们就无法获知具体的安装情况。最后一个文件夹 upgrade 实际上是 NET4.0 的安装包,此文件不会自动安装,为 Windows 的一个可选组件,如果你需要 NET4.0 可以直接用光盘安装无需另外下
5、载。再来 autorun.inf 是保证光盘插入正常系统是直接启动 setup.exe 的文件。包括一些优盘病毒也是这样的原理。setup.exe 就是安装程序的启动接口,在 Windows 下课直接运行。接下来是整个镜像最核心的部分 sources。在 sources 里面包含了安装程序的主程序、WInPE 本体、系统本体。由于这里面的文件非常之多,我们只重点介绍一部分文件。首先,在这里面也有一个 setup.exe 文件。在 Win7 中,这个与根目录的 setup.exe 并没有太大区别,而 Win8 中,根目录的 setup.exe 是直接启动升级安装模式,而 sources 里面的
6、setup.exe 则有升级和自定义两种。上文说到,Win7 中有 upgrade 这个文件夹,但是 Win8 内置的已经是最新的 NET,因此不需要 upgrade 文件夹。然而,由于现实原因,目前依然有诸多程序基于 NET3.5 开发,因此 Win8 虽然没有 upgrade 文件夹,却在 sources 里面放了一个 sxs 文件夹,这里面就是 NET3.5 可选组件。再来说说图中最显眼的两个 wim文件。大部分同学估计都知道,install.wim 其实就是系统的本体,我们所谓的安装系统,其本质就是将此文件里面的一个子映像(系统)释放(解压)出来,配置系统引导,对不同硬件情况进行适应调
7、整。其中,调整阶段有系统自身完成,安装程序只负责释放和引导配置。因此,通过软件解压,然后修复引导,一样可以安装系统,也不存在说安装方式不同造成稳定性问题。从某种程度上说,除了 install.wim 以为的所有文件,其实都可以纳入 PE(预安装环境)部分。除了 install.wim 以外最大的文件就是 boot.wim,这也是一个系统,也就是我们常说的 Win7PE 的真身。根目录中的 BOOT、bootmgr、efi、bootmge.efi 存在的作用就是在存储介质上启动它。boot.wim 中存在两个子映像,其中,由 bootmgr 等启动的是他的第二个子映像。此 PE 启动后与我们通常
8、所看到的老毛桃等 PE 是不一样的,他没有 explorer 文件管理器,他会自动启动 setup.exe 开始系统安装(这里的 setup.exe 是在 wim 文件内部的第三个 setup.exe)。在此 wim文件中也还有一个 sources 文件夹,他的作用是从 PE 启动运行安装程序的补充文件,与光盘中的 sources 文件有部分一致,部分不同,并且可从光盘的 sources 中获取部分文件。注意的是,如果改造镜像,boot.wim 中的安装程序和光盘 sources 中的必须是同一版本、统一位数的,允许部分改造。有人可能会说,如果直接硬盘允许 setup 就不要 boot.wim
9、 了,其实不对。刚才说了,boot.wim 有两个子映像,上面只是提到第二个,还有第一个。这显然不是微软闲得放那里的。从光盘启动 PE 安装时,程序是直接解开 install 的。而在硬盘直接运行时,程序则是解开 boot.wim 的第一个子映像到硬盘(这是另一个版本的 PE) ,然后将必要的文件复制到硬盘程序指定部分,解开部分 install 文件。然后重启进入硬盘上的 PE 继续安装。这么做的理由很简单,由于新安装系统和旧系统存在许多文件冲突,旧系统工作时不可能将自己破坏,因此只有用第三个微系统来处理旧系统文件。除非是 gho 版或则解压到非系统安装双系统,否则不管是 setup 还是大家
10、常用的 NT6HDD 辅助工具,都是不会离开 PE 的。光盘的 sources 中还有三个相对重要的文件。一个是 lang.ini,此文件设置了PE 环境的语言。下图是简体中文版的设置。第二个是 product.ini,这里面记录了 sku 版本信息,以及可用于安装(不能激活)的密匙。第三个是 ei.cfg如图,第一部分记录的是可安装系统版本。第二部分决定显示的协议版本,最后一部分决定供你选择安装的系统个数。我们知道,Win7 旗舰版光盘的 install.wim 中包含了其他几个版本的系统,只要删除 ef.cfg 就会出现全部版本可供选择。然而 win8 中不能直接删除,实际上,只要把EditionID下面留空一行,即可选择全部版本。最后的数字代表出现可选的个数随便上调到 999 之类的即可。除了以上可见部分,其实微软还坐了一个不可见的设置。看图,这是一个隐藏功能,我们可以在 sources 中建立一个$OEM$文件夹。在安装过程中,在$OEM$ 文件夹中的$文件夹里面存放的东西将被复制到新系统的 windows 目录中,此外如果是 $1 文件夹内部分将复制到新系统盘根目录。通过此原理,我们可以外置一些东西在系统安装时使用。例如激活、OEM 信息导入、甚至软件安装。