社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1484阅读
  • 1回复

[分享]Puppy+WinPE双启动U盘制作经历

楼层直达
级别: FLY版主
发帖
65046
飞翔币
24349
威望
30008
飞扬币
127770
信誉值
35

 几天前几天在网上看到用装到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)
 
不患人之不已知,患不知人也!
人生在世,如身处荆棘之中,心不动,则人不妄动;记住该记住的,忘记该忘记的;改变能改变的,接受不能改变的!
级别: 光盘硕士
发帖
29692
飞翔币
3980
威望
11672
飞扬币
359
信誉值
0

只看该作者 1 发表于: 2008-11-25
这个需要有点专业基础啊