无忧启动论坛

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

[已解决] VBOOT调用grub4dos直接装载VHD或IMG等格式的内存盘菜单怎写?

[复制链接]
跳转到指定楼层
1#
发表于 2013-11-8 22:58:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 念青 于 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  
2#
发表于 2013-11-8 23:21:53 | 只看该作者
看不懂是干啥。

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

看不懂。
回复

使用道具 举报

3#
 楼主| 发表于 2013-11-9 09:44:38 | 只看该作者
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命令不能直接执行?需要使用诸如参数传递的方法来启动?
回复

使用道具 举报

4#
发表于 2013-11-9 11:22:33 | 只看该作者
你怎么知道不执行?

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

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

回复

使用道具 举报

5#
 楼主| 发表于 2013-11-9 16:40:58 | 只看该作者
本帖最后由 念青 于 2013-11-9 16:48 编辑

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-13 21:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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