自己动手定制winpe+各类dos工具箱U盘启动盘+minilinux

时间:2024-02-21 15:16:29
由于一个64M老U盘,没什么用,拿来发挥余热。如果U盘够大,可以使用功能更强大的mini linux和带更多工具的winpe。这次安装了winpe+maxdosv6plux+矮人dos5.3+cdlinux0.4.9+mclinux2.02+bomberlinux3.7,工具应该算比较多了。

思路很多:

法1:可以先做成dos启动盘,这样直接加载各类dos工具,然后再用grub4dos加载winpe。

法2:可以做成ntloader,启动winpe,再在boot.ini中写入加载dos工具的语句。

法3:用grub引导各类工具,包括winpe和各类工具箱。

由于觉得grub引导功能强大(各大linux发行版都用它做引导器),因此决定用第三种方法。

首先准备工具:

1、惠普优盘格式化工具HPUSBFW.EXE,或者usboot或者其它格式化U盘的工具。

2、winpe,我用的是64M的U盘,故使用了mini winpe,使用的是老毛桃修改的miniwinpe 070911版: thunder://QUFodHRwOi8vd3d3LnF1aWNrOC5jbi9kb3duLmFzcD9pZD0xNTMmc2lkPTBaWg==

如果你使用的U盘比较大,可以下载其它的集成了较多工具的winpe。对老毛桃修改的版本,对我们来说仍然过大,因此需要自己再定制,把Acdsee等软件删除。在winpe安装文件\SETUP\MYINS下有个ntboot.exe,把它备份起来,今后可能用到。

3、grub安装工具:grubinstall: http://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip

以及grub引导文件grldr,网上很多,自己搜索下载(它是grub4dos的一部分,可以下载grub4dos,然后只要该文件即可)

4、MaxDos v6 plus: http://down.56xia.com/200711/MAXDOSV6U.rar

5、矮人dos工具箱5.1: http://w1.e666.cn/green/airenDOS.rar

6、wmitool: http://rosibo1.bibidu.com/server9/hnwzfile/WimTool-V1.0.7.1018.rar

7、你还可以下载其它工具箱,比如深山红叶等。由于空间所限,我只使用了上面的几个软件。

然后开始:

part1:winpe+dostool

1、使用惠普格式化工具格式化U盘

2、打开miniepe.iso,如果你的U盘比较大,可以直接将minipe目录拷贝到你的U盘上,如果象我的一样小,那么先删除op.wim,然后再拷过去,op.wim里面全是工具,没有它,minipe也能启动,后面我们再讲如何修改op.wim,缩小其体积,定制自己的工具。然后将wxpe下的ntdetect.com和setupldr.bin也拷到minipe目录,并分别改名为ntcom和ldrxpe。然后在minipe目录下新建一个名为pe的文件,内容如下(如果你采用安装方式,则这个文件已经存在):

[SetupData]

BootDevice="ramdisk(0)"

BootPath="\WXPE\SYSTEM32\"

OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MiniPE\WinPE.IS_"

更简单的方法是:你可以直接用minipe的setup将其先安装到你的U盘(如果U盘太小,请先删除op.wim再安装),这样和手工拷过去的差不多,但是会多几个文件,你可以选择删除上面没有提到过的文件。

3、如果你是手工拷贝过去的,那么要先安装grub,使用grubinstall_gui,选中U盘,分区刷新后选整个磁盘,然后安装,这样就重新安装了grub,然后将你下载的grldr文件拷贝过去。如果你是采用在安装的方法,那么已经安装了grub,它的menu是内置到了grldr中的,为了让自己编辑的menu.lst来启动更多项目,将下载的grldr拷贝到u盘覆盖原来的,这样就会使用你自己的menu.lst了。如果mbr中的grub没有了,要重新安装grub。如果你依然想使用内置的菜单,可以用grubmenu export命令导出菜单,修改成自己想要的后,再grubmenu import,导入,这样就变成你自己的内置菜单了。另外为了支持中文菜单,请使用中文的grldr,以及中文字体。下载一个带字体和中文的grub4dos,将chinese目录下的grldr拷贝过去,建立一个boot目录,然后将字体文件fonts.gz拷到里面,再将splash.xm.gz也拷到里面,它是启动画面背景,你可以自己制作自己的启动画面。如果你是安装的minipe,那么可以直接用它的muifont.gz和*.xpm.gz。

4、安装maxdos和airendos,然后把目录maxdos和ados拷贝到U盘根目录下。然后就可以卸载maxdos和ados了。

然后将ados下的除argj目录外的所有文件删除,然后将argj目录下的文件移动到ados下,删除argj目录。将两个目录下一些不必要的文件删除。比如图标文件。由于是它们都是硬盘版,一键ghost时会出问题(网上所谓的U盘版也一样),需要对其进行修改。首先,经过HP格式化后,一般会把U盘认作第一硬盘,而原来的硬盘认作第二硬盘,这时ghost命令的src=1:1,就要改为2:1,然后,由于我们没有创建指定的文件夹,因此我们可以直接备份到根目录下。如maxdos中用maxbk.gz和maxre.gz来表示备份和恢复,用记事本打开这两个文件,分别改为:

ghost -clone,mode=pdump,src=2:1,dst=2:2\sysbak.max -sure -z2 -split=2000 -no1394 -nousb -rb


ghost -clone,mode=pload,src=2:2\sysbak.max:1,dst=2:1 -sure -no1394 -nousb -rb

而矮人dos需要把ar5.img中的argj.exe导出来,然后扩展名改为gz,然后,解压出其中的gh.bat、menu.bat等bat文件,然后查找含有argj~1路径的,把它改为根目录,如:c:\*.gho,另外查找镜像的命令的/s需要去掉,可以改成/a,/s要查找子目录,需要很长时间。同时把ghost命令的src=1:1等类似之处改为2:1。

如果你的U盘启动后不是第一硬盘,那么就不必改。

5、编写grub启动菜单

为了标识U盘,在U盘根目录建立一个grubhere.id的空文件,当然你也可以使用U盘上的任意文件来标识,如/maxdos/Maxs.sys,当然你需要在下面的相应内容处作修改。然后在U盘根目录建立一个menu.lst,内容如下:

timeout 30

default 0

splashimage /boot/splash.xpm.gz

#foreground ffff00

fontfile /boot/muifont.gz

title Mini WindowsPE

find --set-root /grubhere.id

chainloader /minipe/ldrxpe

title MaxDOS V6 Plus

find --set-root /grubhere.id

kernel /maxdos/Memdisk.gz c=555 h=2 s=18 floppy

initrd /maxdos/Maxs.sys c=555 h=2 s=18 floppy

title 矮人Dos工具箱

find --set-root /grubhere.id

kernel /ados/memdisk.gz c=118 h=2 s=36 floppy

initrd /ados/ar5.img c=555 h=2 s=18 floppy

title 本机Windows系统

map (hd0) (hd1)

map (hd1) (hd0)

rootnoverify (hd1,0)

makeactive

chainloader +1

title 重启计算机

reboot

title 关闭计算机

halt

title Grub命令行

commandline

保存这个文件。

6、定制winpe工具,上面实际上已经完成启动U盘了,但是我们还可以为minipe定制工具。用wmitool打开op.wim,然后将其文件导出,把不需要的软件全部删除,比如acdsee、音乐播放什么的,对于系统维护根本没什么用,就删掉,最后再新建一个wim文件,将修改后的目录导入。然后修改minipe下的winpe.ini文件,找到建立快捷方式的命令的地方,把没有的link给删掉。

6、如果还需要安装其它工具箱的话,步骤和上面类似。制作完毕。

如果希望mbr被破坏,能够使用ntloader启动,那么可以用ntboo i:(I是U盘),将ntloader也安装到U盘,但这不是必须的。

7、备份:为了今后的制作不再这样多,可以将U盘上所有文件拷贝到一个目录备份(注意有隐藏文件,一块备份)。今后要制作启动U盘就可以这样做了:

首先用惠普格式化工具格式化U盘,再将备份的文件拷贝过去,然后使用grubinstall,安装grub到mbr即OK。其中的ntboot不是必须的。

如果有时间,你可以把这些备份文件压缩,然后编写一个bat,让bat来依顺序执行格式化,拷贝文件,这样就形成了你自已的winpe+maxdos+airendos安装包。

part2:mini linux

如果你不需要linux,那么到此为止,如果你还希望启动linux,将U盘制作成启动盘,然后用Mini Linux引导,可以用以修复硬盘上的Linux系统错误。那么继续:

Mini linux很多,如:CDlinux、dsl、puppy等,还可以自己lfs。这里简单介绍最简单的制作方法。由于U盘大小限制(我的U盘64M,基本没用了,正好拿来做引导盘),我选择了CDlinux0.4.9(19M)、Mini Chinese Linux(mclinux2.02)(2.88M)、BomberLinux 3.9(2.88M),因为我的U盘上还装有mini winpe、maxdos、矮人dos,要做到他们加起来不超过64M(最后一共61M)。

由于已经装好的winpe等都是采用grub引导的,因此这三个mini linux当然也用grub来引导。如果你没有安装上面这些,只需要启动mini linux,那么你需要先制作可启动U盘,先用惠普格式化U盘工具格式化,然后用grubinstall将 grub安装到U盘的mbr,并复制grldr到U盘根目录。可参考前面的文章。

首先看CDlinux,由于它本身是采用syslinux来引导的,因此需要做一点调整。首先打开cdlinux的iso,将boot目录下的cdlinux提取出来,然后,将cdlinux.img的扩展名改成 gz,即cdlinux.gz,然后将其解压,由于我们采用grub引导,因此syslinux的文件都可以删掉,只保留bzImage和 CDlinux.gz,将其复制到cdlinux目录下,然后将cdlinux目录复制到U盘根目录。然后写menu.lst

title CDlinux 0.4.9 (with extra)

find --set-root /grubhere.id

kernel /CDlinux/bzImage root=/dev/ram0 cdl_dev=/dev/sda1

initrd /CDlinux/CDlinux.gz

grubhere.id 意义见上一篇文章。具体的更多参数可以参考cdlinux howtos中的命令行参数,这里/dev/sda1可能要根据具体情况来区别对待。我当初把它搞成hda1,结果不能加载extra,因为找不到,后来发现linux将其识别为sda1。中文:kernel /CDlinux/bzImage root=/dev/ram0 CDL_LANG=zh_CN.UTF8 cdl_dev=/dev/sda1

然后再看mclinux,我下载了 mclinux1.0和mclinux2.02,mclinux1.0是一个ima软盘镜像文件,因此直接用软盘引导的方式即可,而mclinux2没有做成软盘镜像,是一人zip文件,里面有很多把它rawrite到软盘的工具。还是做成ima方便,首先解压,然后只留mclinux.img、 zimage、syslinux.cfg三个文件,将它们做成ima,由于已经有mclinux1.0.ima,因此我直接用winimage打开 mclinux10.ima,然后删里面那三个文件,将这三个文件拉进去,然后保存就OK了。将保存后的mclinux.ima复制到U盘/linux/ 下,然后写menu.lst:

title Mini Chinese Linux 2.02

find --set-root /grubhere.id

map --mem /linux/mclinux.ima (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

对于bomber linux 3.7,本身就是一个ima文件,因此直接复制到linux目录下,然后写menu.lst

title BomberLinux 3.7

find --set-root /grubhere.id

map --mem /linux/bomberlinux.ima (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

这样就制作完成了,如果U盘够大,完全可以使用功能更强的cdlinux0.5.9(包含X和更多的软件)和dsl、puppy等。最后,我们就完成了在一个64M U盘上安装winpe+maxdosv6plux+矮人dos5.3+cdlinux0.4.9+mclinux2.02+bomberlinux3.7 这样一个mini 型的功能非常齐全的启动型U盘。其实maxdos和矮人dos只需要一个,linux也只需要一个即可(建议用cdlinux,如果希望小一点的,可以用后面两个中的一个),这样可以节省空间,方便集成更多的工具