无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4297|回复: 15
打印 上一主题 下一主题

求助:合盘时PE的引导文件是怎么来的?为什么不同启动方式有时不能互用?

[复制链接]
跳转到指定楼层
1#
发表于 2010-9-15 15:18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用我心如水PE合盘时发现一个问题
下了N个合盘,以03PE.BIN为例
我心如水6合一模板中EZBOOT调用的03PE.BIN在GRUB菜单调用时不能启动
而用caomaoLBL的合盘中的03PE.BIN在GRUB菜单可以用,如果用EZBOOT调用就不能启动
其他需要的如NTD.COM等需要调用文件都已经修改到一致
GRUB菜单采用message文件,而不是采用打狗版主的方案(不会改这种方案的背景)
我现在只能用两个引导文件LDR03PE.BIN和LNX03PE.BIN(参考azhong123456的合盘模式),其他文件共用
想请教下,这个290K左右的文件是怎么来的?
有没有办法可以弄成一个在各种启动方案中都可以调用?

[ 本帖最后由 fhua 于 2010-9-18 06:51 编辑 ]
2#
发表于 2010-9-15 16:49:09 | 只看该作者
这个文件就是SETUPLDR.BIN修改一下来的
去除校验 什么的
回复

使用道具 举报

3#
 楼主| 发表于 2010-9-16 10:09:23 | 只看该作者
原帖由 wowfans 于 2010-9-15 16:49 发表
这个文件就是SETUPLDR.BIN修改一下来的
去除校验 什么的


我用水大6合一模板里面的启动文件,在grldr菜单下不能启动
用模板WXPE文件夹下的SETUPLDR.BIN修改后,可以在EZBOOT、grldr、MS菜单下启动,到ISOLINUX菜单又不能启动了
不知道怎么修改到可以通用
去除校验我不懂
回复

使用道具 举报

4#
发表于 2010-9-16 13:04:24 | 只看该作者
修改很简单的 setupldr.bin不能被syslinux直接启动
需要mkimage程序进行转换
同时还需要 ldntldr.bin文件做文件头
怎么都不翻旧帖子呢。。。

利用loadbin在不同的启动管理器中启动grub,grub2,grub4dos 和 ntldr
loadbin是grubutil里的一个新加工具,它可以把各种系统文件转化为Linux内核的格式,从而达到在多个启动管理器里启动的目的。

对于不同的启动文件,loadbin提供相应的头文件,

可以用三种方式启动系统文件,以ntldr为例:

1,直接使用头文件ldntldr.bin。以头文件作为内核,ntldr作为initrd:

kernel ldntldr.bin
initrd ntldr
boot

2,利用mkimage工具把头文件和系统文件结合起来,生成单一的启动文件:

mkimage ldntldr.bin ntldr ntldr.bin
mkimage ldntldr.bin grldr grldr.bin

然后把ntldr.bin作为内核就行了:

kernel ntldr.bin
boot

由于不少的启动管理器在启动Linux内核时不会传递正确的DL值,因此需要在头文件里进行设置,你可以使用-x参数在生成单一的启动文件时指定DL值,例如:

mkimage -x 0x80 ldntldr.bin ntldr ntldr.bin

有些系统,例如grub2,还支持分区参数,你可以用以下方式来指定:

mkimage -x 0x80,0 ldgrub2.bin core.img grub2.bin

这样启动后grub2会自动把根设备设为第一只硬盘第一个主分区(hd0,1)。

如果是在CDROM里启动,可以使用设备号0xe0,比如

mkimage -x 0xe0 ldgrub.bin stage2 grub.bin

这样,grub启动后就可以利用(cd)设备来访问文件了。

3,同2一样,先生成单一的启动文件ntldr.bin,然后可以利用grldr.mbr启动:

安装到mbr:

grubinst -b=ntldr.bin DEVICE

生成相应的ntldr.mbr,在boot.ini里启动:

grubinst -o -b=ntldr.bin ntldr.mbr

目前支持的启动文件格式:

1,GRUB Legacy
头文件ldgrub.bin,对应的系统文件是stage2

2,GRUB2
头文件是ldgrub2.bin,对应的系统文件是core.img

3,GRUB4DOS和NTLDR
头文件是ldntldr.bin,对应的系统文件是ntldr和grldr

至于启动管理器,只要它支持Linux内核格式,就可以使用loadbin,这其中包括grub legacy, grub2, grub4dos, syslinux/isolinux/pxelinux, lilo等等。

下载地址:

http://download.gna.org/grubutil/
回复

使用道具 举报

5#
发表于 2010-9-16 13:06:34 | 只看该作者
PELDR就是那个290K的文件 也就是去除校验后的SETUPLDR.BIN文件

经过处理后 变成xxx.BIN 体积增大1K 变成291K


给你个傻瓜化的批处理吧 哎
将你需要处理的290K文件放到批处理解压后的同一目录
运行批处理 TAB快速补齐 默认列出*ldr文件
例如NTLDR GRLDR PELDR等

loadbin.rar (18.67 KB, 下载次数: 149)

[ 本帖最后由 wowfans 于 2010-9-16 13:08 编辑 ]
回复

使用道具 举报

6#
 楼主| 发表于 2010-9-16 15:53:58 | 只看该作者
非常感谢,自己找要找准很难的
回复

使用道具 举报

7#
 楼主| 发表于 2010-9-18 07:26:45 | 只看该作者
谢谢wowfans的指导,基本搞明白怎么合盘了,也看了http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140075&extra=page%3D2http://bbs.wuyou.net/forum.php?mod=viewthread&tid=176331&extra=page%3D2
简单总结下,还有几个问题,求各位前辈指点(我是伸手党)
1、linux引导需要给SETUPLDR.BIN加上头文件,用#5楼的工具改了以后,已能在isolinux菜单成功启动(水大合盘有现成的)
不过换其他PE后,改过的文件不能在ezboot、Grub、MS菜单下调用
而水大PE里的XXXX.BIN可以在ezboot、isolinux菜单共用,求解?
2、用UE修改水大合盘的WXPE\SETUPLDR.BIN,可以在ezboot、Grub、MS菜单启动,不能在isolinux菜单启动
有没有办法修改后可以同时在Grub和isolinux菜单启动?
3、ezboot不能直接引导setupldr.bin,需要通过PE(非RAM)引导文件引导,经测试,确实如此
但水大的PE(压缩内核类的)的引导文件为什么可以直接用ezboot调用,如何实现的?
回复

使用道具 举报

8#
发表于 2010-9-18 10:24:29 | 只看该作者
楼主。。。你看清楚了 水哥的合盘模板中 syslinux调用的bin
和ezboot grub4dos调用的bin文件是不同的文件
syslinux调用的bin文件是setupldr.bin文件本身+文件头后的文件
而ezboot和grub4dos调用的只是一个2k的光盘信息引导文件
该光盘信息引导文件定位到boot目录下的setul03.bin文件
setupl03.bin就是setupldr.bin文件修改而来
回复

使用道具 举报

9#
 楼主| 发表于 2010-9-19 09:20:11 | 只看该作者
原帖由 wowfans 于 2010-9-18 10:24 发表
楼主。。。你看清楚了 水哥的合盘模板中 syslinux调用的bin
和ezboot grub4dos调用的bin文件是不同的文件
syslinux调用的bin文件是setupldr.bin文件本身+文件头后的文件
而ezboot和grub4dos调用的只是一个2 ...

把水大特别版+个ezboot启动,调用那个06PE.BIN确实是可以启动的,测试过了
回复

使用道具 举报

10#
发表于 2010-9-19 16:29:39 | 只看该作者
怎么调用的 使用ezboot的run 06pe.bin进行调用的吗?
你把ezboot的菜单文件发给我看看
我这里没有他的那个版本
只有那个模板  49.85MB
把他模板里面里面的06pe.bin用ezboot直接run 提示int错误 跟我用loadbin处理的一样
通过beyond compare对模板里面的06pe.bin和我随便从网上下载的一个setupldr.bin经过处理文件头后的文件相比
除了WINNT.XPE模板里面的文件改成了boot\pe06
以及一些ntdetect.com及bootfont字体的名称和路径有所更改
再就是 please wait...和loading ramdisk....之类的 他改成了中文
其他地方完全一样
所以我不认为他这个pe06有何特殊之处
就是一个用loadbin处理过文件头的setupldr.bin文件而已

楼主把你测试可直接引导的06pe.bin发上来看看
还有就是ezboot的主菜单 我看看是直接调用的06pe.bin吗?

还有他的模板里面的ezboot菜单没办法进去的
主菜单是nt6.x的
选择ezboot菜单后直接重启
看了下那个ezb文件 里面无内容 hex查看 全是0000000000000
回复

使用道具 举报

11#
发表于 2010-9-19 17:17:00 | 只看该作者

回复 #10 wowfans 的帖子

run不行,BCDW /XXXX/ 06pe.bin
回复

使用道具 举报

12#
 楼主| 发表于 2010-9-20 23:22:09 | 只看该作者
确实是用的BCDW,run我没试,不知道有什么区别
不过这个06PE.BIN不能在grub调用
而加了头文件以后的用BCDW也不行

[ 本帖最后由 fhua 于 2010-9-20 23:27 编辑 ]
回复

使用道具 举报

13#
发表于 2010-9-21 00:19:09 | 只看该作者
加了头文件的SETUPLDR.BIN在grub确实不能调用,但是在EZB可以用
BCDW命令引导成功,在MS上也可以直接调用引导成功。
回复

使用道具 举报

14#
发表于 2010-9-21 08:54:01 | 只看该作者
楼主现在怀疑06pe.bin有特殊之处
我是对比的水的最终模板里面的06PE.BIN
这个06PE.BIN和网上随便下载的一个PE里面SETUPLDR.BIN加上文件头后没啥区别
也就是各家自定义的时候修改了些路径 提示信息等表面上的东东
所以功能上也没啥特殊之处
回复

使用道具 举报

15#
 楼主| 发表于 2010-9-21 11:53:45 | 只看该作者
可能我哪里搞错了
今天重新测试了一下,加了头文件以后确实可以用bcdw启动
不过还是想知道有没有什么办法可以使Grub和syslinux可以用同一个引导文件启动
回复

使用道具 举报

16#
发表于 2010-9-21 12:44:04 | 只看该作者

回复 #15 fhua 的帖子

4楼说的第一个方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-6 16:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表