无忧启动论坛

标题: VBOOT调用grub4dos直接装载VHD或IMG等格式的内存盘菜单怎写? [打印本页]

作者: 念青    时间: 2013-11-8 22:58
标题: VBOOT调用grub4dos直接装载VHD或IMG等格式的内存盘菜单怎写?
本帖最后由 念青 于 2013-11-9 16:38 编辑

VBOOT菜单调用的是grub4dos配置文件grldr

menuentry "Windows XP" {
linux16 /grub.exe --config-file="find --set-root --ignore-floppies --ignore-cd /boot/grub4dos/cqqj_tzy.jw;chainloader --force /boot/grub4dos/grldr"
}

我在grldr的各个字段上加入

map --mem --top %pathimg%sparse.img (hd5)
map --hook

试图在差分VHD XP启动之前,先行装载一个硬盘映像文件作内存盘,但无论放在如下配置文件中的哪个部分,该语句都似乎完全未被执行。系统直接在读取相关参数后,直接执行/boot/ntboot/ntboot vboot=%sys_dsk%%sys_dir%%subvhd%,启动VHD差分系统了。



grldr配置文件如下:
default 0
timeout 0
set pathgrub=/boot/grub4dos/
set pathimg=/boot/img_bin/

find --set-root --ignore-floppies --ignore-cd %pathgrub%cqqj_tzy.jw



title 0.windows XP
map --mem --top %pathimg%sparse.img (hd5)
map --hook

set sys_name=
set sys_dsk=
set sys_dir=
set monvhd=
set subvhd=
set bakvhd=
set tmpvhd=

set infofile=%pathimg%info_winxp_x32.flg
cat --length=0 %infofile% || goto 1
%pathgrub%sys_info %infofile%
cat --length=0 %sys_dsk%%sys_dir%%subvhd% || goto 1

/boot/ntboot/ntboot vboot=%sys_dsk%%sys_dir%%subvhd%
boot

title 1.boot MBR menu
chainloader (hd0)+1





info_winxp_x32.flg配置文件用于传递相关参数,内容如下:
winxp_x32  (hd1,1)  /VHDXP/   WINXP.VHD WINXP_CHILD.VHD  WINXP_CHILD_BAK.VHD

;sys_name sys_dsk sys_dir  sys_monvhd  sys_subvhd     sys_bakvhd  
作者: 不点    时间: 2013-11-8 23:21
看不懂是干啥。

linux 命令已经加载 grub.exe 了,但为何还要再次用 chainloader 加载 grldr ?

看不懂。
作者: 念青    时间: 2013-11-9 09:44
grldr的lst中,default 0,执行的是title 0,只有在
cat --length=0 %sys_dsk%%sys_dir%%subvhd% || goto 1条件满足时,也就是读不到差分VHD XP硬盘时,转入title 1,重启VBOOT菜单。

正常读取到差分VHD XP的话,grldr 将执行
/boot/ntboot/ntboot vboot=%sys_dsk%%sys_dir%%subvhd%
boot

这是在grub4dos中调用NTBOOT的VBOOT命令方式启动差分VHD XP?是有点绕,但这是因为grub4dos不支持差分VHD的缘故。而我的问题,就在于NTBOOT语句执行之前,如何可以map 一个硬盘映像到内存中去?直接在grldr lst的各个字段前后加入如下语句,都不被执行。
map --mem --top %pathimg%sparse.img (hd5)
map --hook
我的猜测是,由于set命令的存在,导致map --mem命令不能直接执行?需要使用诸如参数传递的方法来启动?

作者: 不点    时间: 2013-11-9 11:22
你怎么知道不执行?

难道你的 grub4dos 太旧,不支持 --top 参数?

你在各个 map 命令的前后增加 pause 语句,逐步调试,看看 map 命令执行了没有?失败时,肯定有失败信息,你把失败信息抄来看看。


作者: 念青    时间: 2013-11-9 16:40
本帖最后由 念青 于 2013-11-9 16:48 编辑

实在不好意思,我一直在lst文件中修改。发现加pause也无反应,终于明白原来它根本就没有调用lst文件,而是直接用的grldr本身内置的配置文件。惭愧惭愧。谢谢。




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