无忧启动论坛

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

求:grub4dos中0x000082A0处值的含义。

[复制链接]
跳转到指定楼层
1#
发表于 2009-12-19 00:37:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查看文档得知,0000:82A0处存储的是root所在的驱动器。

root (fd0) ,其值为0x0
root (cd0),其值为0xc0

清空内置和外置菜单,裸启动后,直接read 0x82A0的值也是0x0。

如果我想判断grub4dos当前有没有设置root,是不是判断这个位置的值?怎么弄?

如果这里不行的话,就只有手动root,成功后再write 位于0x60000的用户内存做标记了......

既然grub4dos提供了内置变量,还是很希望学习一下。请前辈们解惑。
2#
发表于 2009-12-19 08:41:35 | 只看该作者
无论如何都会有一个root的,不可能没有设置。。。

如果你读到的数据是0x0那说明你的GRUB4DOS版本可能有点老,
回复

使用道具 举报

3#
 楼主| 发表于 2009-12-19 16:59:39 | 只看该作者
谢谢chenall

如何理解“无论如何都会有一个root的,不可能没有设置”这句话?

是说grub4dos能成功启动到grub>命令行状态,默认情况下,就以grldr所在的位置作为root对吗?

如果这样的话,我在后面的菜单中,find --set-root someting这行命令是不是多余的了?

可以直接这样做了,对吗?
kernel /someting...
gfxmenu /someting...
configfile /someting...


初学grub4dos,请见谅。

#==================

已实验过了,不需要find。但不知道上面那种理解对不对?

我用的grub4dos版本是0.4.4 2009-06-20那个,

能够完美支持gfxmenu的就这个版本最高,对吧?

[ 本帖最后由 小小菜 于 2009-12-19 17:13 编辑 ]
回复

使用道具 举报

4#
发表于 2009-12-19 21:21:20 | 只看该作者
如果是内置菜单,则默认root就是grldr所在磁盘。

如果有外置菜单,那就是外置菜单menu.lst所在磁盘。

所以find --set-root在某些情况下是多余的(除非有特别要求,否则还是不要使用find --set-root),会影响启动的成功率(因为可以找错了文件)。

还有忘了一点。
(fd0)的就是0x0
所以如果你是(fd0)启动的当然是0了。

[ 本帖最后由 chenall 于 2009-12-19 21:23 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2009-12-19 23:44:41 | 只看该作者
没有什么特殊需求。

由于使用环境林林种种各有不同,菜单里的命令,不可避免地会失效或者出错。

我在想,不论在什么情况下,出错也好,后面的菜单改变了root设备也好,总是能够回到gfxmenu,而不是原始的黑白菜单。


我在内置菜单前加了如下两行:
  1. ls /message || find --set-root  /message
  2. gfxmenu /message && configfile (md)4+8
复制代码
目前好像解决了问题,fd,hdd,cd,ud都试过了,挺正常。pxe还没试。

不知道grub4dos可不可实现if - else 这样的跳转呢?

这样好像不行:
ls /message || find --set-root /message && gfxmenu /message

[ 本帖最后由 小小菜 于 2009-12-19 23:54 编辑 ]
回复

使用道具 举报

6#
发表于 2009-12-20 10:23:07 | 只看该作者
使用你上面的菜单就可以了。后面的不支持。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-30 07:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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