美文网首页Windows部署
网服PE的修改制作

网服PE的修改制作

作者: SkylarkYan | 来源:发表于2016-08-22 23:48 被阅读225次

    网服PE的修改制作


    网服PE的文件目录结构

    网服的PE封装形式采用了多文件夹多模块的树形模式,基本目录结构如下所示:

    --网服PE/
      ├-Boot/                  // PE的Legacy BIOS传统引导文件
      ├-efi/                   // PE的UEFI引导相关文件
      ├-PETools/               // PE中集成的常用工具软件
      ├-sources/               // PE内核wim包的存放文件夹
      ├-ubuntu/                // ubuntu 的Legacy BIOS引导的LiveCD启动
      ├-WXPE/                  // 老式2003内核PE,is_封装
      ├-bootm32.efi            // UEFI引导文件
      ├-bootmgr.efi            // UEFI引导文件
      └-grldr                  // Legacy BIOS引导的GRUB4DOS主引导记录文件
    

    PE内核的修改

    首先说说PE内核的修改。网服PE除了最老版本的2003内核采用了is_文件封装外,现有的Win7 x86Win8 x64以及正在制作的Win10 x86&x64内核PE都采用了现在比较通用的.wim文件封装。所以修改PE第一步就是针对这些wim镜像进行修改。基本流程如下:

    1. 使用WimTool工具选择一个PE内核包比如WIN8PEx64.wim打开进行挂载,然后把vim镜像文件解开到某个目录下,操作类似解压缩文件,之后就可以对wim镜像中的文件进行修改了。wim镜像解开后的目录类似windows系统盘的文件目录结构,毕竟PE也就相当于一个微型的windows系统了,解开后的文件目录结构如下所示:
     --WIN8PEx64.wim
        ├-NET/                   // PE中的.net相关文件以及部分驱动文件
        ├-program files/         // PE中常用的工具软件
        ├-program files(x86)/    // PE中系统默认自带的软件
        ├-program data/          // PE系统数据文件夹
        ├-users/                 // PE中用户文件夹
        └-windows/               // PE系统内核的文件夹
    
    1. 一般修改PE需要修改编辑的主要是program fileswindows两个文件夹,program files中存放的都是PE中常用的的工具软件,比如Bootice引导工具、DiskGenius分区工具、WinNTSetup安装器等,在这里把文件或文件夹添加进来,比如我更新了DiskGenius4.7.2,替换了原本的DiskGenius4.7,添加替换完之后,在program files文件夹进行的操作就结束了。基本上增加修改工具软件都要先在这里对文件进行增加修改,之后需要到windows文件夹进行下一步修改;
    2. 跳转到windows文件夹后,需要进行下一步修改。之前我替换更新了DiskGenius工具,但是文件名或者文件路径已经改变了。现在需要找到windows/system32/下的pecmd.ini文件,用文本编辑器打开,我一般都习惯使用Sublime Text,记事本也可以。这就是关于PE的配置文件,包括PE的引导、初始化、创建桌面图标开始菜单、加载常用软件工具等,都需要在这里进行配置。pecmd.ini采用PECMD命令的语法,通过多条命令语句组合完成PE的配置。比如我上文中说修改替换了DiskGenius的文件,还需要在配置文件中修改关于它的配置命令,命令如下:
    //创建桌面快捷方式
    LINK %Desktop%\DiskGenius4.7,%ProgramFiles%\tools\DiskGenius4.7.exe
    //创建开始菜单快捷方式
    LINK %Programs%\磁盘工具\DiskGenius4.7,%ProgramFiles%\tools\DiskGenius4.7.exe
    

    需要修改为:

    //创建桌面快捷方式
    LINK %Desktop%\DiskGenius4.7.2,%ProgramFiles%\tools\DiskGenius4.7.2.exe
    //创建开始菜单快捷方式
    LINK %Programs%\磁盘工具\DiskGenius4.7.2,%ProgramFiles%\tools\DiskGenius4.7.2.exe
    

    以上只是一个非常简单的例子,改动的也只是一两条命令语句,pecmd.ini中的配置信息还是比较多的,也有很多种命令语句,一般也不需要完全记住,用的时候去查PECMD的帮助程序就好,里面有详细的命令说明文档。

    1. windows文件夹中pecmd.ini只是一个配置文件之一,其他还有很多的系统组件还有一些配置项都在这里进行修改。比如我之前为PE添加过DISM服务,就是在这里部署的,也是需要添加文件,然后完成相关配置文件的改动。另外还有桌面背景之类的小东西也是在这里修改的,修改过程和修改工具差不多。
    2. 还有其他比如为PE添加声卡网卡驱动的操作,需要在program files(x86)文件夹中完成配置,驱动文件需要找兼容性适配性比较好的驱动,目前我只添加了网卡驱动,可以在PE中测试机器的网卡是否正常。实际上文件夹的分类都是可以自己修改的,只需要在配置文件中修改对应的路径就好,不过一般为了普适性和通用性考虑,保持windows本身的文件目录结构比较好。
    3. 完成了想修改的所有操作后,就需要再次使用WimTool工具对修改后的PE文件进行打包。同样选择好文件路径填好文件名后,WimTool就会帮你打包出一个.wim镜像文件,这样就完成了一个PE的主体.wim镜像的修改。

    外置引导文件及引导菜单编辑

    当然,PE的内核wim镜像文件只是其中一部分,下面来说说外置引导文件及菜单的编辑。
    外置的引导文件需要编辑的主要是Boot/efi/目录下的部分文件,比如Boot/grub/目录下的message文件,这个文件包括了整个Legacy BIOS引导界面菜单页的详细配置信息。用message编辑器打开后可以对菜单页的详细设定进行编辑,诸如颜色,背景图片、文字字体,菜单结构等。另外还有MENU.LST这种引导菜单条目编辑,也采用命令语句进行编写,比如引导菜单首页就是这样的:

    timeout 30
    default 3
    gfxmenu /BOOT/GRUB/MESSAGE
    configfile /BOOT/GRUB/MENU.LST
    
    title [目录] 主菜单
    clear
    
    title [0] PE 菜单
    configfile (bd)/BOOT/GRUB/MENU1.LST
    
    title [1] 工具菜单
    configfile (bd)/BOOT/GRUB/MENU2.LST
    
    title [2] 从硬盘引导系统
    checkrange 0x80 read 0x8280 && map (hd1) (hd0)
    checkrange 0x80 read 0x8280 && map --hook
    chainloader (hd0)+1
    
    title [3] 启动本机系统
    find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
    map () (hd0)
    map (hd0) ()
    map --rehook
    find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
    chainloader /ntldr || chainloader /bootmgr
    
    title [4] USB2.0提速
    kernel (bd)/BOOT/IMGS/PLPBT.BIN
    rootnoverify (bd)
    
    title [5] GRUB 命令行
    commandline
    
    title [6] Ubuntu 14.04     
    find --set-root --ignore-floppies /ubuntu/vmlinuz.efi        
    kernel /ubuntu/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu/ubuntu.iso quiet splash ro locale=zh_CN.UTF-8    
    initrd /ubuntu/initrd.lz  
    boot      
    
    title [7] 重启
    reboot
    
    title [8] 关机
    halt --no-acpi || halt --force-sci
    

    引导菜单是多级显示的,用多个文件分别编辑。都是采用这种命令语句编写的,基本语法也可以去查阅相关的帮助文档,不过命令接近于伪代码还是比较好懂的。这些东西在编辑完之后直接保存即可,不用做进一步的配置,也基本不用压缩打包。


    外挂工具PETools的修改更替

    这部分是修改过程中最简单的部分了,只需要把文件替换掉就可以,没什么好说的。因为这部分不存在挂载在PE内核的工具,只要需要使用的时候去找就可以了。


    后面的话

    PE的修改过程简单来说就是这样,还是比较容易的,刚开始也是很多东西都不太清楚,后来逛了很多论坛,比如无忧启动远景等,也学会了一些东西,同时也找到了很多资源,比如我用过的DISM服务组件就是在这里找到的。其中也遇到了很多问题,在论坛上还有自己折腾的过程中也都得到了解决。还是很锻炼自己的学习能力和实践能力的。


    个人的创新点

    之前网服的PE在U盘中是没有任何封装形式的,直接放在U盘中,和其他文件共存,这样就会出现偶尔不小心修改PE文件导致PE损坏的情况;并且由于需要Legacy BIOSUEFI双引导启动,U盘只能使用FAT32的文件系统,而众所周知FAT32是不能存储4G以上的单文件的,这样使用就很不便。在我经过探索之后,使用了一种新的封装方式,解决了以上的问题。
    解决方案如下:

    1. DiskGenius中,选中U盘,右键清除保留扇区,然后删除所有分区,保存分区更改。
    2. 新建一个全盘大小的FAT32分区并格式化,右键调整分区大小,把FAT32分区调整为1.7G大小,并放到盘尾位置,注意此时FAT32分区应该为活动分区。剩余空间放为空白分区。
    3. PE所有文件拷入FAT32分区,再在DiskGenius里把FAT32分区的盘符右键删除,把剩余空白分区新建为NTFS分区并格式化,自动分配盘符,保存分区更改。
    4. BOOTICE把引导写入U盘,选择目标磁盘为U盘,选择主引导记录,选择GRUB4DOS引导,点击安装/配置,写入磁盘,确定后完成。
    5. 此时U盘在文件资源管理器中只显示NTFS分区,这样一来隐藏了PE文件,而来也解决了FAT32使用不便的问题。
      这个解决方案完全是我自己想出来并实践成功的,不知道算不算首创,不过在论坛里都没有看到类似的解决方案,完全靠自己折腾出来,也是挺高兴的。

    相关文章

      网友评论

        本文标题:网服PE的修改制作

        本文链接:https://www.haomeiwen.com/subject/qihgsttx.html