无忧启动论坛

标题: 关于GRUB2引导grub4dos时"--config-file"参数失效的问题 [打印本页]

作者: coverwy    时间: 2012-4-12 12:07
标题: 关于GRUB2引导grub4dos时"--config-file"参数失效的问题
先介绍下我的启动环境:
U盘上,GRUB2 -> GRUB4DOS -> PE.ISO

配置文件:

GRUB2的grub.cfg:
  1. menuentry "GRUB4DOS" {
  2. set g4d_dir="/boot/grub4dos"
  3. linux $g4d_dir/grub.exe --config-file=$g4d_dir/menu.lst
  4. }
复制代码
GRUB4DOS的menu.lst:
  1. title WinPE-2009.iso
  2. find --set-root /boot/iso/winpe-2009.iso
  3. map --mem /boot/iso/winpe-2009.iso (0xff)
  4. map --hook
  5. chainloader (0xff)
  6. savedefault --wait=2
复制代码
我的问题是:
看grub4dos的说明:应该可以直接从"--config-file"参数中加载菜单,而不是menu.lst文件。
我现在将grub.cfg改成:
  1. menuentry "WinPE-2009.iso" {
  2. set g4d_dir="/boot/grub4dos"
  3. linux $g4d_dir/grub.exe --config-file="find --set-root /boot/iso/winpe-2009.iso;map --mem /boot/iso/winpe-2009.iso (0xff);map --hook;chainloader (0xff);boot"
  4. }
复制代码
但是进入grub4dos界面后,无法引导,就直接进入命令模式了。手动敲一模一样的命令没有问题,求帮助!

[ 本帖最后由 coverwy 于 2012-4-12 17:55 编辑 ]
作者: 不点    时间: 2012-4-12 13:48
你用的 grub.exe 版本太旧,不支持某些命令,所以出错了。

也可能是你要 find 的文件名或者路径错误,或者大小写错误,或者找不到文件,都会发生错误。

自己尝试手动执行相同的命令序列,看看出错信息是什么。

抱歉,由于身体不好,只答复这一次,以后靠你自己调试解决,或者由别人来帮你。
作者: coverwy    时间: 2012-4-12 16:23
版本是grub4dos-0.4.5c-2012-03-26,而且先进grub4dos没有问题,手动敲命令也OK,就是“--config-file”不灵。不知道这里有没有人用这种方式引导,高手关注下,另外我的“grub.exe”不在U盘跟目录,应该没有关系吧。

[ 本帖最后由 coverwy 于 2012-4-12 16:27 编辑 ]
作者: 不点    时间: 2012-4-12 16:37
似乎应该用 linux16 命令吧。你应该正确使用 grub2 的命令。linux 好像是错的,应该用 linux16。

另外一个可能的错误是, grub2 如何解释引号以及分号。建议你先从别人那里拷贝一个启动 grub.exe 的模板,然后自己再改改。
作者: coverwy    时间: 2012-4-12 17:51
感谢关注^-^
终于解决了
这里:http://reboot.pro/15422/page__view__findpost__p__143239

原因可能是个Bug,GRUB在参数处理上出现了问题,我的版本是GNU GRUB 2.00~beta2,不过看帖子上,GRUB从1.99可能就存在这个问题。
解决方法就是把参数单拿出来就OK了
  1. menuentry "WinPE-2009.iso" {
  2. set g4d_dir="/boot/grub4dos"
  3. set cfgfile="find --set-root /boot/iso/winpe-2009.iso;map --mem /boot/iso/winpe-2009.iso (0xff);map --hook;chainloader (0xff);boot"
  4. linux $g4d_dir/grub.exe --config-file=$cfgfile
  5. }
复制代码
另外不一定用linux16,grub4dos应该不用切换到16-bit实模式也能启动
作者: 不点    时间: 2012-4-12 18:08
感谢你,也教会了我。是的,任何事都要经过实践检验。以前好像都是用 linux16,估计那些人遇到了 linux 命令失败的情况(只是猜测,并无证据)。
作者: 2011GameBoy    时间: 2013-1-21 16:05
标题: 是不是grub2和grub4dos不能互用?
尤其是map 这类的命令,我在grub2中死活找不到方法去引导什么xp.vhd什么的。。是不是它们已经很多地方不能通用啊?
换句话说,做类似的事情,就必须先切换到grub4dos然后操作。
其次,怎样在grub2环境下加载grub4dos呢?除了linux(16) /grub.exe这个方法之外,有没有其他方法呢?(假设现在MBR是grub4dos的)
反过来呢?是不是利用命令kernel /core.img这类似的命令切换回grub2呢?是不是已经没有其他途径了?
因为电脑用Linux,系统,所以没有去用grub4dos。
作者: Samble    时间: 2013-3-26 15:13
感谢楼主分享解决方法,变量法很管用,刚刚遇到解决同样的问题了。
作者: 2011ryoohki    时间: 2013-3-26 18:05
标题: 回复 #7 2011GameBoy 的帖子
grub2 的 map 只在 grub2 的环境下有效,出了 grub2 就作废了,但 grub4dos 的 map 确实一直有效,只要有适合的驱动就能让实时系统调用
作者: 2011ryoohki    时间: 2013-3-26 18:44
标题: 回复 #7 2011GameBoy 的帖子
用 Grub2 引导 MBR、BPR:

menuentry "MBR、BPR" {
    set root=(hdX,Y)
    chainloader (hdX,Y)+1
}

Grub4Dos  引导 Grub2

title grub2
        errorcheck off
        find --set-root --devices=h /grub/core.img && kernel /grub/core.img && boot
        find --set-root --devices=h /boot/grub/core.img && kernel /boot/grub/core.img && boot
        find --set-root --devices=h /grub/i386-pc/core.img && kernel /grub/i386-pc/core.img && boot
        find --set-root --devices=h /boot/grub/i386-pc/core.img && kernel /boot/grub/i386-pc/core.img && boot
        errorcheck on
        commandline
作者: leitian72853    时间: 2022-4-29 08:16
谢谢分享




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3