|
wind_fsm兄整理的合盘教程,内容丰富,是难得的资料。
对基于grub4dos的合盘,我提出了一些建议与wind_fsm兄交流,现整理一些资料补充成一帖,便于和大家探讨。
先声明,本人几乎没有合盘经验。
原帖由 pseudo 于 2009-5-10 22:42 发表
好像有两种非常简单的合盘方式楼主还未提及。
1、grub4dos每个菜单项加载一个PE,每个PE一个iso文件,被仿真为光盘来启动。
菜单项写法参考官方grub4dos-0.4.4.zip的样例菜单menu.lst里对0PE.ISO、MicroPE.ISO、pmagic.iso的合盘调用
2、grub4dos每个菜单项加载一个外置菜单,每个PE提供一个外置菜单负责对其本身的加载。
菜单项的写法参考0PE5.1版的grldr内置菜单。
其中第二种方法合盘最科学。
现在许多PE都支持grub4dos引导,也就必然有其grub4dos菜单,这个菜单可以随意命名,随意放置,合盘时调用它最省事。 原帖由 wind_fsm 于 2009-5-11 01:38 发表
你说的第一种方法未成功加载 ISO 中外置程序,不知是否有解决方法
第二种方法我还没有看明白,MENU.0PE 好复杂, read、write、checkrange命令还是第一次见,可否告知哪儿有这些命令的详细说明?
另外先问一下这种方法能够直接调用 ISO 文件中外置程序还是需要把内核和外置程序提取出来使用? 原帖由 pseudo 于 2009-5-11 16:11 发表
http://docs.google.com/Doc?id=dgs4zmw5_19cwmvb8f4
这里有checkrange RANGE read ADDR等说明,官方grub4dos-0.4.4.zip里是英文的README_GRUB4DOS.txt。
第一种方法加载iso找外置问题,要看具体的PE是否支持这种整体启动iso的方式,是否允许外置程序放在iso内。这方面问题参见http://bbs.wuyou.net/forum.php?mod=viewthread&tid=137686&highlight=
对于不支持iso整体启动的,一般可以将外置程序移出iso外,这样才有可能找到。
例如老毛桃911PE,可在合盘根目录建立MINIPE子目录,放入OP.WIM,其它东西在iso内。WINPE.INI文件里
MOUN %CurDrv%\MINIPE\OP.WIM,B:,1
句改为
MOUN \MINIPE\OP.WIM,B:,1
也可能不用改,我没试过,凭空说的。
你在grub4dos合盘菜单中只需加载iso即可,那些SETUPLDR.BIN之类眼不见心不烦。
凡提供可启动光盘映像iso的pe,一般都可以类似处理。
第二种方法是在合盘菜单中调用各pe提供的菜单,后者由各pe提供,例如MENU.0PE,菜单内容不管复杂简单你都不用操心,菜单名字、位置你都可以改它,如果它是内置于grldr的就设法提取,然后删掉它的grldr。
合盘要做的事是将个pe的文件原样收集在一起(如果有同目录、同名文件冲突得适当处理),然后在合盘菜单中简单写上一行,例如
configfile /0PE/MENU.0PE
即可
凡支持grub4dos引导的pe,一般都可以这样合盘。 原帖由 guoqqqqqq 于 2009-5-11 16:30 发表
解释得很详细,学习了。尤其是把外置程序移出iso外,的确是经验之谈。 原帖由 wind_fsm 于 2009-5-12 00:19 发表
谢谢解释,明白了,http://bbs.wuyou.net/forum.php?mod=viewthread&tid=137686&highlight学习中
刚才用天琴星座 PE090218 测试了第一种方法,只要把 MINIPE 目录移出 ISO 外,不用修改 WINPE.INI,就可以加载外置了,这样对于使用不同外置目录或文件名的PE合盘可是简单多了,存在一个问题是对于两个使用相同外置目录和文件名的 PE 合并需要修改 PECMD.INI
这也是在第二种方法中存在的问题,也就是你说的“如果有同目录、同名文件冲突得适当处理”其中一种情况
第二种方法如果 SETUPLDR.BIN 同目录且同名或者调用的 WINNT.XPE 同目录且同名应该也需要修改 SETUPLDR.BIN
感觉第二种方法多个子菜单的做法比较好,菜单结构很清楚
#3已增加引用 原帖由 pseudo 发表
SETUPLDR.BIN、WINNT.XPE 、WINPE.INI同目录同名也没什么大不了的。
你放一份公用的,各pe的换个地方放(例如一个pe占一个目录的话,就搬到其目录下),选中这个pe时,将其复制一份覆盖公用的,使之变成专用的,然后再继续就行。
grub4dos菜单中可以用dd命令进行复制。注意目标文件体积应不小于源文件体积,像WINPE.INI,你事先准备一个足够大的空文件做目标文件。
如果楼主看过0PE的体系结构,这种空文件就是我说的“容器”。
chenall大师给出过共用一个SETUPLDR.BIN,动态修改部分字节的方法,可以节省体积,但合盘时不很讲究这点体积,整个覆盖就行,源文件由各pe提供,别管它里面是什么内容。这样对多个pe方式很统一。
---------------
哦,忘了,覆盖WINPE.INI的办法不是可写介质的话有点麻烦。
SETUPLDR.BIN可在内存中修改。 原帖由 haiuyan 于 2009-5-11 09:03 发表
确是, 如你的0PE, 内容全在0PE下, 合盘方便, 目录清爽!
但其他PE就不好办, 都是miniPE目录, 合盘需要改好多地方.
chenall的PE, 还有wxpe目录, 根目录下还有文件, 如果也能改成全在micrope目录下就好了. 原帖由 haiuyan 于 2009-5-11 09:09 发表
楼主的PE已经定型, 不知道是否可以这样修改一下:
如0PE一样, 所有的内容全在一个目录下, 如microPE(或CPE), 这样合盘方便, 目录清爽!
和0PE一样即可以iso启动, 也可以调用一个二级菜单启动.
当然micrope现在也可以这样两种方式启动, 可现在除了miniPE目录, 还有wxpe目录, 根目录下还有文件, 合盘的话就显的太乱了, 如果能改成上面提议的就好了.
[ 本帖最后由 haiuyan 于 2009-5-11 09:13 编辑 ] 原帖由 chenall 于 2009-5-11 12:57 发表
使用合盘的话,使用ISO不是更清爽?
因为考虑到外置共同,也不想再改了/
如果想合盘又要清爽可以考虑使用以下方法.
因为光盘上的文件一定是连续存放的所以直接启动ISO就可以了.
只需要WXPE/MINIPE这两个目录和根目录下的文件打包成MICROPE.ISO放在光盘的BOOT目录下.
外置程序可以放在光盘根目录下或一并打包进去(不推荐)
启动也简单,只需调用这个ISO启动就可以了.
title MicroPE
map /BOOT/MICROPE.ISO (0xff)
map --hook
chainloader (0xff)
0PE与MicroPE、MaxDos合盘菜单,包括了对整个iso、对子菜单等调用方式。
其中一些语句是为pxe启动用的,仅本地启动时可简化。
;Grub4Dos menu.lst by Pseudo 2009.5.1
;为加速pxe启动直接调用/0PE/MENU.0PE。想显示gfxmenu菜单,可使用NotExist
;checkrange 0x21 read 0x8280 && pxe detect NotExist
checkrange 0x21 read 0x8280 && pxe detect /0PE/MENU.0PE
checkrange 0x21 read 0x8280 && rootnoverify (pd)
find --set-root --ignore-floppies /MESSAGE.GZ
timeout 8
default 1
gfxmenu /MESSAGE.GZ
color blue/green yellow/red white/magenta white/magenta
title
fallback 5
find --set-root /0PE/0PE.ISO || rootnoverify (pd)
map /0PE/0PE.ISO (0xff) || map --mem /0PE/0PE.ISO (0xff)
map --hook && chainloader (0xff)
title [1] 0PE by Pseudo
fallback 0
find --set-root /0PE/MENU.0PE || rootnoverify (pd)
configfile /0PE/MENU.0PE
title [2] MicroPE by Chenall
fallback 5
find --set-root /BOOT/MICROPE.ISO
map /BOOT/MICROPE.ISO (0xff) || map --mem /BOOT/MICROPE.ISO (0xff)
map --hook
chainloader (0xff)
title [3] Windows NT/2K/XP
fallback 4
find --set-root --ignore-floppies --ignore-cd /ntldr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr
title [4] Windows VISTA
fallback 5
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /bootmgr
title [5] MAXDOS.IMG
find --set-root --ignore-floppies /BOOT/MAXDOS.IMG
map --mem /BOOT/MAXDOS.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
[ 本帖最后由 pseudo 于 2009-5-12 02:52 编辑 ] |
|