几天前几天在网上看到用装到U盘里的Linux操作系统(Puppy, Slax, Fanx2也就是Slax的中文版),对此发生了很大的兴趣,就决定自己做一个。 
一、U盘里的Puppy 
1、下载了Puppy的ISO光盘镜像(
http://puppy.cnbits.com/node/120) 
然后用HPUSBFW.exe把U盘格式化成HDD模式 
顺便解释一下USB-HDD的意思是模拟硬盘 
USB-ZIP是模拟软盘 
老机器应该是比较适合zip模式 
2、把ISO文件用pup2usb.exe直接释放到U盘大功告成,可以重新启动电脑享受Puppy的快乐了。 当然,不要忘了设置BIOS从U盘启动哦。 
PS:这里千万不要再格式化U盘了 
二、U盘里的WinPE 
1、 U盘的WinPE安装的方法太多了,网上有很多方法,大家到Google或者Baidu上一搜,有很多方法。简单的像“深度USB启动维护盘制作工具 V3.0.exe”, 安装好软件后,插入优盘,鼠标点两下就搞定了。 还有 “老九WinPE老毛桃最终撒手不管版”,本身就可以刻录光盘直接使用,里面也有安装程序,安装到U盘启动,比深度的稍微麻烦一点,大家注意点就好了。 
2、本人感觉syslinux很好用,就想自己做一个用syslinux启动的WinPE,先到网上搜索了一下,然后自己又研究了好长时间,决定采用采用 “syslinux -> ldntldr -> ntldr”模式,在上述Puppy制作第2种方法的基础上继续制作。 
a、修改syslinux.cfg如下 
default /vesamenu.c32        (到下载的syslinux安装包里去找,拷贝到这里就可以了) 
MENU BACKGROUND /back.jpg          (一个背景图片,大家自己随便找一个吧,640X480的) 
MENU TITLE MultiBoot By Lucifer                (标题而已,随便写吧) 
prompt 0 
timeout 90 
label puppy                        (上面的Puppy的启动项,这下可以双启动了) 
MENU LABEL Puppy USB Linux 
kernel /puppy/vmlinuz 
append initrd=/puppy/initrd.gz 
label winpe                        (关键是这里) 
MENU LABEL WinPE 
kernel /ldntldr                  
append initrd=/ntldr 
label reboot 
      MENU LABEL Reboot 
      kernel /boot/reboot.c32 
其中,ldntldr文件最麻烦, 
b、把“老九WinPE 老毛桃最终撒手不管版”解压,并把如下文件和文件夹复制到U盘根目录 
/MiniPE 
/WXPE 
WINNT.XPE 
把 /WXPE 中的两个文件剪切到U盘根目录,NTDETECT.COM不用动,SETUPLDR.BIN改名为ntldr 
又一次大功告成! 
最后U盘目录及文件如下 
/boot 
/boot/ldlinux.sys  (隐藏文件) 
/syslinux.cfg 
/vesamenu.c32 
/back.jpg 
/boot/reboot.c32 
/puppy          (同上,不再展开) 
/MINIPE 
/MINIPE/OP.WIM 
/MINIPE/WINPE.INI 
/MINIPE/WINPE.IS_ 
/WXPE              (暂时为空,不要删除,启动PE的时候会用到) 
WINNT.XPE 
ldntldr 
ntldr 
三、由于本人有点完美倾向,所以想把所有的文件都放到一个目录里,也就是U盘根目录下只有一个/boot目录,其他的就可以放自己的文件了,这样看起来比较清晰,所以只好继续研究了^_^ 
基本的思路还是按照上面讲解的来的,所以就省略一些东西,直接秀一下我的目录结构先 
/boot 
/boot/syslinux 
/boot/syslinux/ldlinux.sys 
/boot/syslinux/syslinux.cfg 
/boot/syslinux/vesamenu.c32 
/boot/syslinux/peace.jpg 
/boot/syslinux/reboot.c32 
/boot/boot.cat 
/boot/boot.msg 
/boot/initrd.gz 
/boot/isolinux.bin 
/boot/ldntldr 
/boot/ntd.com 
/boot/ntldr 
/boot/ntsf 
/boot/OP.WIM 
/boot/pup_400.sfs 
/boot/vmlinuz 
/boot/WINPE.INI 
/boot/WINPE.IS_ 
/boot/zdrv_400.sfs 
其中syslinux.cfg配置如下 
default /boot/syslinux/vesamenu.c32 
MENU BACKGROUND /boot/syslinux/peace.jpg 
MENU TITLE MultiBoot By Jeff 
prompt 0 
timeout 90 
label puppy 
MENU LABEL Puppy USB Linux 
kernel /boot/vmlinuz 
append initrd=/boot/initrd.gz 
label winpe 
MENU LABEL WinPE Origin From Maotao 
kernel /boot/ldntldr 
append initrd=/boot/ntldr 
label reboot 
      MENU LABEL Reboot 
      kernel /boot/syslinux/reboot.c32 
ntd.com是由NTDETECT.COM改名而成。ntsf由WINNT.XPE改名而成。由于这两个文件改名而且从根目录移动到/boot目录,并且没有了MiniPE和WXPE目录,需要做一些工作。 
a、修改ntldr文件。需要UltraEdit或者WinHexSR,一般的记事本、写字板是不行的。我使用的WinHex v13.2SR,打开后第一个感觉就是头晕,没有认识的,全部是16进制的数字。没有关系,直接到下拉菜单点“搜索-->替换文本 ”(Ctrl+H),输入NTDETECT.COM并替换成boot/ntd.com,名字可以任意,但是一定要记住长度要一样,“/”也算一个字符,一 共搜索出4个,替换前2个就行了。然后再搜索winnt.xpe,全部替换成boot/ntsf,也是长度一样哦。最后搜索wxpe,全部替换成 boot。然后保存退出。 
b、修改WINPE.INI,把MINIPE替换成boot。 
c、修改ntsf。用记事本打开,修改成如下 
[SetupData] 
BootDevice="ramdisk(0)" 
BootPath="bootSYSTEM32" 
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=bootWinPE.IS_" 
c、把WINPE.IS_复制到别的位置并改名为WINPE.CAB,然后解压缩后得到WINPE.ISO,用UltraISO打开,看起来就是一个光盘 的结果,该ISO根目录即为WXPE,改为boot。找到/boot/system32/pecmd.ini,提取出来该文件并修改,就是把所有的 MINIPE改为boot。然后把文件再导入WINPE.ISO保存。用Xcab软件压缩为WINPE.cab,改名为WINPE.IS_,复制到原位置 覆盖原来的文件即可。 
至此,整个工作就算结束了,重启试试吧! 
另外,本人用的是“老九WinPE 老毛桃最终撒手不管版”作为蓝本,由于PE版本不同,目录结构也不一样,所以基本上来说用别的PE就需要大家自己去探索了,不过基本的思想是不便的,变得只是目录结构而已和文件名而已。  
上文提到的一些难找到的文件和工具在这里下载
http://mail.qq.com/cgi-bin/exs_download?uin=1118418&svrid=228&fid=99379142bba3e820f4c55d55550d82599404507369276333&temp=cbb08f07&uploadendtime=1222198402&code=cbb08f07&s=email(提取码 cbb08f07)