分享

Win7终极定制精简,修改sources文件夹,install.wim,boot.wim,bcd

 李晓华lxh 2017-04-10

进阶教程:Win7中英双语2合1,整合win7中文版和英文版教程,修改install.wim

                        u盘安装中文grub,实现多引导,直接引导iso文件,实现u盘安装win7

经常用U盘作维护,所以U盘里包含各种各样的工具和系统,所以,U盘的目录就会很多很凌乱。所以就想着,可不可以能精简的就精简,不能精简的就放在一个文件夹里呢?答案肯定是可以的,其他维护工具很好办,主要是win7sources文件夹。

进入正题

大家都知道,VISTA及以上系统其光盘结构为:


autorun.inf

setup.exe

bootmgr


其中:

setup.exe是在WIN下进行安装WIN7的程序。

autorn.inf是光盘自动运行文件,插入光盘会通过它运行setup.exe

文件夹,最重要,含有启动NT6以上系统的启动配置文件BCD(相当于XPboot.ini),挂载WIMBOOT.SDI、内存检测和字体等工具。

文件夹,EFI主板启动支持。

就不用说了,是支持和升级相关文件夹。

,最重要,含有PE文件boot.wiminstall.wim,以及在WIN下启动setup所需的文件。

仅仅更改sources的路径,是远远没有达到我的目的的,我现在想做的就是把这些文件和文件夹都放到U盘的一个根目录里,很多系统安装或者维护工具都有boot这个文件夹,所以我们把所有文件都放到boot文件夹中应该是一个最高效的办法了。所以,我们要先处理一下win7.iso

1、把autorun.infsetup.exe这几个文件和文件夹都删掉,如果需要从efi启动,请保留文件夹。

2、不需要韩语、日语、繁体中文的,boot\fonts下的文件,只保留chs_boot.ttfwgl14_boot.ttf

3、把sources\下的boot.wiminstall.wim移动到boot\fonts文件夹下,然后删除整个sources文件夹。

精简后,如下:

 

U

└—

   │—

      │—boot.wim

      │—chs_boot.ttf

      │—install.wim

      └—wgl4_boot.ttf

   -

      -bootsect.exe.mui

   │—bcd

   │—boot.sdi

   │—bootfix.bin

   │—bootmgr

   │—bootsect.exe

   │—etfsboot.com

   └—memtest.exe

(这个bootmgr比较随意,我发现,做成iso的时候,放在根目录和boot下都可以,用grub引导的时候,只需写好路径即可)

 

好了,因为我们更改了boot.wiminstall.wim的位置,怎么样把这个“事实”告诉引导呢。为了解决这个问题,我们来看一下Win7iso包是怎么安装的:

 

一、插入Win7光盘后,BIOS将引导交给bootmgr

二、bootmgr会搜索当前光盘下boot文件夹的bcdbcd找到光盘下sources文件夹中的安装PE(boot.wim)并加载;

三、该安装PE(boot.wim)运行当前PE根目录下的setup.exe找到光盘下sources文件夹中的install.wim镜像进行安装。

 

其实我们要做的,主要是两个工作,第一,让bcd找到boot.wim;第二,让boot.wim下的setup.exe找到install.wim

 

第一、让bcd找到boot.wim

1、这需要编辑BCD文件,我们使用bcdedit.exeXP下也可以运行)

运行:

bcdedit /store BCD文件路径 /enum all /v

Windows 启动加载器

-------------------

标识符                 {7619dcc9-fafe-11d9-b411-000476eba25f}

device                  ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

path                    \windows\system32\boot\winload.exe

description             Windows Setup

locale                  en-US

inherit                {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}

osdevice                ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

systemroot              \windows

detecthal               Yes

winpe                   Yes

ems                     Yes

 

从上面结果看到,bcd\sources下加载boot.wim,现在boot.wimistall.wim都放在U盘根目录\boot\fonts\下,我们想要改变boot.wim的路径,运行如下命令:

bcdedit /store BCD文件路径 /set {default} device ramdisk=[boot]\boot\fonts\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

将上述的device改成osdevice,再运行一次命令,即:

bcdedit /store BCD文件路径 /set {default} osdevice ramdisk=[boot]\boot\fonts\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

第二,让boot.wim下的setup.exe找到install.wim

想让PE找到install.wim文件,可以利用setup.exe,因为setup.exe可以有参数installfrom,利用这个参数,我们就可以指定install.wim文件的位置了。

PE启动时会在X:\sources目录下寻找setup.exe文件来进行安装,如果sources目录没有setup.exe,那么winpeshl.exe会执行system32目录下的winpeshl.ini所指定的文件。”(这是作者原文里的话,但经过实践,我发现是错的,不知道是不是win7win7 sp1区别的关系,对于sp1应该是:PE启动时会在X:\根目录下寻找setup.exe文件来进行安装,如果X:\根目录没有setup.exe,那么X:\Windows\System32\winpeshl.exe会执行system32目录下的winpeshl.ini所指定的文件)如果winpeshl.ini没有指定程序或没有此文件,那么winpeshl.exe将会执行system32目录下的startnet.cmd文件,默认PE下存在此文件,会加载网络配置。这个文件位于boot.wim2个镜像的windows\system32目录下,所以要先挂载boot.wim,运行命令:

imagex /mountrw D:\boot.wim 2 D:\folder

boot.wim的第2个镜像成功挂载到D:\folder后,进入D:\folder\Windows\system32\,找到startnet.cmd,因为istall.wim已经被移动到\boot\fonts\下,所以把这个文件内容变成:

@echo off

for %%a in (c d e f g h i j k l m n o p q r s t u v w y z) do (if exist %%a:\boot\fonts\install.wim x:\mysetup.exe /installfrom:%%a:\boot\fonts\install.wim)

exit

当然,要把挂载出来的PE根目录setup.exe重命名为mysetup.exe,即此时的D:\folder\setup.exe重命名为mysetup.exe

修改完毕,卸载boot.wim,运行命令:

imgaex /unmount /commit D:\folder

到这里,针对win7精简和修改的操作就完成了。以上做好的文件,可以用grub或者做成iso写入U盘都是可以的,做成iso的方法在下面调试的第2步里。

 

下面是我制作过程中的调试:

1、使用U盘在Vmware下测试时,startnet.cmd里使用X:\sources\setup.exe/installfrom:%%a:\boot\fonts\install.wim出现“安装程序无法创建新的系统分区”、“Setupwas unable tocreate a new system partition”错误:

Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin

 Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin


 因为总共有3setup.exe,分别为PE根目录下、PE\sources\下以及win7.isosources文件夹下。一开始,我以为是setup.exe的问题,把命令改为X:\setup.exe /installfrom:%%a:\boot\fonts\install.wim,错误依然。只有保留win7.iso里的sources文件夹在U盘里(可以改名改路径)才可以解决。如把iso里的sources文件夹解压到U:\boot下,再使用sources下的setup.exe,即%%a:\boot\sources\setup.exe /installfrom:%%a:\boot\sources\install.wim。用U盘在虚拟机测试可以安装成功,但是会导致安装完成之后,部分的win7 文件会出现在U盘里。

后来经过查找,我找到了我认为正确的原因。出现“安装程序无法创建新的系统分区”和U盘多出文件的现象,是因为在虚拟机测试的时候,U盘是作为本地硬盘加入到虚拟系统里,并且我们会在虚拟系统的bios里把U盘所代表的“硬盘”设置为第一启动项才能从U盘启动进行测试,如图:

Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin
 

但这就导致了win7 的安装程序认为有两块硬盘,并且要把win7 安装到启动顺序排第二的那块硬盘上,但是这样就出错了。。。为什么不能装到启动顺序排第二的硬盘上,我也不知道,貌似是因为win7会把自动建立的放引导文件的100M分区放到启动顺序排第一(或者是硬盘接口排第一?)的那块硬盘上。

2、为了证明上面的猜测,我把在U盘测试失败的修改好的win7原封不动做成iso,再在虚拟机测试,没有出现任何问题。证明了第1点里说的很有可能是正确的。附上iso制作:从原版的win7.iso里提取引导文件存为xxx.bif,新建一个可引导iso,导入刚刚提取的xxx.bif作为新建的iso的引导文件,再把修改好的win7放进去,成品如图:

Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin
Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin
Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin
Win7终极定制,精简sources文件夹,修改install.wim,boot.wim,bcd - kevinoctober -        kevin

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多