Board logo

标题: 已解决: GRUB高手进来看看! [打印本页]

作者: hulongzhuo     时间: 2007-8-8 11:38    标题: 已解决: GRUB高手进来看看!
easyboot 调用 img文件 ,然后再从 img文件启动到GRUB,再通过GRUB命令映射一个IMG镜像失败了,试了很多,不行,何解??? 说明: GRUB映射的IMG在光盘根目录,问题好像是GRUB没有识别光驱. 所以我加了一条指令: SCDROM --install 显示命令未知! 我做了两种测试: 1, 就是把GRUB要映射的IMG放在光盘根目录,通过map --mem (cd)/boot/grub/gghost.img (fd0)...去映射它 2, 我直接把GRUB要映射的IMG包含在了EZBOOT调用的IMG里面,也就是说一个IMG里面包含了一个IMG文件,这样,EZB在调用它的时候,首先启动DOS,再执行GRUB.EXE,然后 map --mem (fd0)/boot/grub/gghost.img (fd0) ... 两种方法都失败了,第一种可能的情况是无法识别CD光驱,而第二种可能的情况是在IMG里面再次映射的时候出错了,因为里面的IMG本身不是在一个真实的存储介质上,或者我的另一种推断就是读取文件时都变成了大写的,因为GRUB规定要小写的存放. 以上都是个人的看法,还望有高手给我指点迷精!!! 此贴已解决,方法参见如下: =============================================== 『第 31 楼』: 首先要向lianjiang感谢,是他最先提出了问题的解决方法,再次感谢不点,对问题作出的分析,最后要感谢的是BEAN,是他点明了问题的核心,最最后就是我这个"天才"了,突然想到以前看过教程上面有讲到的,所以现在总结方法是这样子的: 1,在用EZBOOT做仿真的时候,用这样的句子: run grldr grldr放在EZBOOT的目录里面, 映像文件和 menu.lst 要放在光盘要根目录,目录组识结构如下: (cd)/EZBOOT/grldr ... (cd)/image/netghost.img (cd)/menu.lst (cd)/... 其它情况下例外,正常调用IMG就好了(不要使用从DOS映像的二次仿真,我试了,还是会出错) 2,再用UltraISO 这个打开刚做好的ISO,做下修改, 因为这时打开看到里面的文件都是小写的,所以要把相关的目录跟文件改成大写,不然EZB引导时说找不到文件了,这是由loader.bin决定的 3,相当重要的一步,如上图中的,点文件---属性,中的充许小写打个勾就行了,这样GRUB在访问光驱文件的时候,就不会找不到相应的小写文件了. 啊,好累啊,一天都在搞这个东东,不过感觉收获不小! 还好有高手们出招,再难的问题也迎r韧而解了,哈哈............ =============================================== [ Last edited by hulongzhuo on 2007-8-8 at 10:43 PM ]

作者: lianjiang2004     时间: 2007-8-8 13:48
本人不是用ezboot,而是bcdw,应差不多。 以下命令测试通过。以前没用过。文件名,路径全部小写。 cdrom --init map --hook map --mem (cd)/boot/grub/gghost.img (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0) boot

作者: hulongzhuo     时间: 2007-8-8 14:03
刚试了,下面到这里就不动了,我在虚拟机上测试:
附件 1: 未命名.JPG (2007-8-8 14:04, 27.92 KiB,下载次数: 1)



作者: hulongzhuo     时间: 2007-8-8 14:07
lianjiang帮我来看一下!!

作者: hulongzhuo     时间: 2007-8-8 14:11
上面提示: 如果硬件不充分支持ATAPI 进一步读取可能失败! 为什么不充分支持ATAPI,有什么办法解决呢?

作者: lianjiang2004     时间: 2007-8-8 15:42
Originally posted by hulongzhuo at 2007-8-8 14:11: 上面提示: 如果硬件不充分支持ATAPI 进一步读取可能失败! 为什么不充分支持ATAPI,有什么办法解决呢?
这问题就不是我能解决得了,等不点,bean来吧。 一点不明,为何命令中是用大写的? 从信息看,你的map后无任何信息,我的却显示出img的信息了。 [ Last edited by lianjiang2004 on 2007-8-8 at 03:53 PM ]
附件 1: snap047.jpg (2007-8-8 15:52, 49.99 KiB, 下载附件所需积分 1点 )


附件 2: snap048.jpg (2007-8-8 15:53, 27.9 KiB,下载次数: 1)



作者: hulongzhuo     时间: 2007-8-8 16:14
Originally posted by lianjiang2004 at 2007-8-8 03:42 PM: 这问题就不是我能解决得了,等不点,bean来吧。 一点不明,为何命令中是用大写的? 从信息看,你的map后无任何信息,我的却显示出img的信息了。 ...
你是说哪个地方用了大写? 我都是用小写; [ Last edited by hulongzhuo on 2007-8-8 at 04:20 PM ]

作者: lianjiang2004     时间: 2007-8-8 17:00
Originally posted by hulongzhuo at 2007-8-8 16:14: 你是说哪个地方用了大写? 我都是用小写; [ Last edited by hulongzhuo on 2007-8-8 at 04:20 PM ]
仔细看了一下,似乎只是显示问题,字体与我的不一样,看起来像大写的。不明白了。
附件 1: 5pyq5ZG95ZCN_BRk8D2j9A9Fz1.jpg (2007-8-8 17:00, 32.61 KiB, 下载附件所需积分 1点 )



作者: hulongzhuo     时间: 2007-8-8 17:09
回lianjiang: 确实观察得很仔细, 看似大写的,其实是小写,我想应该是显示问题. 如果这个问题搞不定,我的启动盘就白做了...郁闷...

作者: lianjiang2004     时间: 2007-8-8 17:24
为何非得二次加载img文件?一次直接启动netghost.img不行吗? 不太理解。

作者: lianjiang2004     时间: 2007-8-8 17:24
也可到实机上试试,也许就可以加载了呢,呵呵。

作者: 不点     时间: 2007-8-8 17:37
easyboot 调用 img文件, 然后再从 img 文件启动到 GRUB, 再通过GRUB命令映射一个IMG镜像失败了,试了很多,不行,何解???
问题在这里:easyboot 所实施的仿真与 grub4dos 自己的仿真发生冲突。去掉 easyboot 应该就好了。

作者: hulongzhuo     时间: 2007-8-8 17:43
Originally posted by lianjiang2004 at 2007-8-8 05:24 PM: 为何非得二次加载img文件?一次直接启动netghost.img不行吗? 不太理解。
我明白你的意思,我也想一次加载,问题在于,我所做的功能是EZBOOT菜单中的一个子项,不然的话,直接用grldr做引导文件刻一张盘不就行了,但现在是如果直接启动IMG是可以,但是不能写A盘,所以这里必须要有GRUB来映射这个IMG才能完成任务..

作者: hulongzhuo     时间: 2007-8-8 17:47
为了看清楚,我给 menu.lst 加了个标签,问题好像还是读不到光驱:
附件 1: 未命1.JPG (2007-8-8 17:48, 28.32 KiB,下载次数: 1)



作者: hulongzhuo     时间: 2007-8-8 17:52
我觉得是GRUB对光驱支持不好, cdrom --init 似乎有问题,根本没法访问到CD

作者: hulongzhuo     时间: 2007-8-8 17:57
Originally posted by 不点 at 2007-8-8 05:37 PM: 问题在这里:easyboot 所实施的仿真与 grub4dos 自己的仿真发生冲突。去掉 easyboot 应该就好了。
那怎么解决这个冲突呢? 除非EZBOOT能像GRUB那样仿真就好了.也就用不着两次仿真了!

作者: lianjiang2004     时间: 2007-8-8 17:57
Originally posted by hulongzhuo at 2007-8-8 17:43: 我明白你的意思,我也想一次加载,问题在于,我所做的功能是EZBOOT菜单中的一个子项,不然的话,直接用grldr做引导文件刻一张盘不就行了,但现在是如 ...
我现在是这样使用的,你也不妨试试。 1,光盘用bcdw启动。(即你的ezboot)。 2,在bcdw(ezboot)的菜单里,加一个加载grldr的项目。 3,在menu.lst中加上你想加载的img文件。这时,这个img仿真后的A:是可写的这样应能达到你的目的。 另,你的netghost文件到底在什么位置?看你的两个帖子路径不同。

作者: bean     时间: 2007-8-8 17:58
设备名换成(cd0)试试。 另外,你可以在命令行里输入命令,在map --mem (cd)/ 后不要输入文件名,而是按[TAB]键,这会列出光驱里的文件。看看netghost.img文件在不在列表中。

作者: hulongzhuo     时间: 2007-8-8 18:02
先是放在 (cd0)/image/netghost.img 后来干脆放在根目录了 (cd0)/netghost.img 那看来非得用BCDW了,但是界面却大打折扣了, 不过,还是非常感谢你以及不点大侠的跟贴帮助!!!

作者: lianjiang2004     时间: 2007-8-8 18:05
查了一下,EZBOOT中加载grldr的命令为:bcdw /boot/grub/grldr [假定grldr路径为boot\grub]

作者: hulongzhuo     时间: 2007-8-8 18:13
Originally posted by bean at 2007-8-8 05:58 PM: 设备名换成(cd0)试试。 另外,你可以在命令行里输入命令,在map --mem (cd)/ 后不要输入文件名,而是按[TAB]键,这会列出光驱里的文件。看看netghost.img文件在不在列表中。
显示: Possbile files are : EZBOOT NETGHOST.IMG 有存在,怎么变大写的了???

作者: lianjiang2004     时间: 2007-8-8 18:23
看来就是大写的问题。

作者: 不点     时间: 2007-8-8 18:30
Originally posted by hulongzhuo at 2007-8-8 05:57 PM: 那怎么解决这个冲突呢? 除非EZBOOT能像GRUB那样仿真就好了.也就用不着两次仿真了!
这可不容易做。grub4dos 也是在新近的版本中才支持“仿真之中套仿真”的。这个功能甚至都不能与 grub4dos 自己的老版本兼容,所以,更不能指望它能和 easyboot, memdisk 等相兼容了。 “仿真之中套仿真”的功能,只能在新版本的 grub4dos 中使用。在整个使用期间,不可以以任何方式遇到老板本的 grub4dos,更不可以遇到其它仿真软件的参与,否则就会出现问题。 其它事情都是小事,你自己看资料即可解决。

作者: bean     时间: 2007-8-8 18:35
这个应该是光盘制作的问题。原始的ISO9660文件系统只支持8.3的大写文件,小写是通过扩展实现的。但是,grub中只支持Rock Ridge扩展,而不支持Joliet扩展。如果使用mkisofs制作的话,需要使用选项-R,其他软件的话,需要看看有没有相关的选项。

作者: hulongzhuo     时间: 2007-8-8 18:49
EZBOOT就这么这选项了,不支持Joliet扩展的话就没法了. [ Last edited by hulongzhuo on 2007-8-8 at 06:50 PM ]
附件 1: 未命名.JPG (2007-8-8 18:50, 21.37 KiB,下载次数: 1)



作者: 不点     时间: 2007-8-8 19:01
那你就忍受一下吧。只要你的大写文件名管用,也凑合可以用。

作者: hulongzhuo     时间: 2007-8-8 19:17
Originally posted by 不点 at 2007-8-8 07:01 PM: 那你就忍受一下吧。只要你的大写文件名管用,也凑合可以用。
这样的话,这种情况下GRUB也无能为力了,希望今后有更多改进..

作者: bean     时间: 2007-8-8 19:21
其实你可以试试使用mkisofs来制作。

作者: hulongzhuo     时间: 2007-8-8 20:08
我有新的进展了,我可以把大写改小写了,方法如下: 先把EZBOOT做好的ISO用UltraISO打开,如下图,选上允许小写,然后还要把相关的文件夹以及文件改成大写的,为什么要改大写,是由于EZB的 loader.bin决定的,不然启动会出错,说是找不EZBOOT这个文件夹了,改好之后然后点保存 [ Last edited by hulongzhuo on 2007-8-8 at 08:19 PM ]
附件 1: 未命名.JPG (2007-8-8 20:15, 43.01 KiB,下载次数: 1)



作者: hulongzhuo     时间: 2007-8-8 20:33
OH MY GOD ,我真是天才,完全成功了........

作者: hulongzhuo     时间: 2007-8-8 20:48
首先要向lianjiang感谢,是他最先提出了问题的解决方法,再次感谢不点,对问题作出的分析,最后要感谢的是BEAN,是他点明了问题的核心,最最后就是我这个"天才"了,突然想到以前看过教程上面有讲到的,所以现在总结方法是这样子的: 1,在用EZBOOT做仿真的时候,用这样的句子: run grldr grldr放在EZBOOT的目录里面, 映像文件和 menu.lst 要放在光盘要根目录,目录组识结构如下: (cd)/EZBOOT/grldr ... (cd)/image/netghost.img (cd)/menu.lst (cd)/... 其它情况下例外,正常调用IMG就好了(不要使用从DOS映像的二次仿真,我试了,还是会出错) 2,再用UltraISO 这个打开刚做好的ISO,做下修改, 因为这时打开看到里面的文件都是小写的,所以要把相关的目录跟文件改成大写,不然EZB引导时说找不到文件了,这是由loader.bin决定的 3,相当重要的一步,如上图中的,点文件---属性,中的充许小写打个勾就行了,这样GRUB在访问光驱文件的时候,就不会找不到相应的小写文件了. 啊,好累啊,一天都在搞这个东东,不过感觉收获不小! 还好有高手们出招,再难的问题也迎r韧而解了,哈哈............ [ Last edited by hulongzhuo on 2007-8-8 at 08:53 PM ] [ Last edited by hulongzhuo on 2007-8-8 at 09:13 PM ]

作者: 不点     时间: 2007-8-8 21:07
我看到你贴的 UltraISO 图片上有个 RockRidge 选项,为什么不勾上呢?GRUB 可是支持这个的耶! 如果可能的话,建议同时把 Joliet 选项勾掉,因为 grub 不支持这个,因此它有可能引起错乱。 不过支持 grub 最好的,恐怕是 mkisofs 了,你不妨试试(我们的 readme 中有举例说明,你可按照例子去做)。

作者: hulongzhuo     时间: 2007-8-8 21:22
嗯,有时间一定试下mkisofs

作者: bean     时间: 2007-8-8 21:25
是啊,建议使用RockRidge,因为使用小写是违反iso9660规范的,不能保证所有系统都可以支持。这个功能相当于mkisofs里的-allow-lowercase选项。

作者: hulongzhuo     时间: 2007-8-8 21:56
对这么多些规范我还真不太明白,不知哪里有详细的介绍.?

作者: lianjiang2004     时间: 2007-8-8 22:14
各种规范,象我等不是计算机专业的,就很难理解了,没办法。 只会依葫芦画瓢,最多是做到举一反二。呵呵。

作者: fldfh001     时间: 2007-8-17 09:48
学习!