无忧启动论坛

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

[求助] 关于unmap和unhook,这样用没什么问题吧

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-1 19:00:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不想dos->grub->PE之后还能看到DOS时候的盘,查资料发现这两个参数,用后发现有效。
但又找不到这方面的资料,怕引起什么危险,特此一问

default 0
timeout 15
password 123
map --unmap=0:0xff --unhook
find --set-root  /BOOT/BG.XPM.GZ


title FreeDOS
password 123
pxe keep
map --mem /BOOT/IMG/FREEDOS.IMG.GZ (fd0)
map --mem /BOOT/DATA/SOFT.IMA.GZ (hd)
map --mem /BOOT/DATA/BIOS.IMA (hd2)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title WinPE
password 123
map --mem /BOOT/IMG/WINVBLK.IMA.GZ (fd0)
map --mem /BOOT/IMG/SCSI.FLP.GZ (fd1)
map --mem /BOOT/DATA/LAN.ISO (0xA1)
map /BOOT/IMG/WINPE.ISO (0xA0) || map --mem /BOOT/IMG/WINPE.ISO (0xA0)
map --hook
chainloader (0xA0)
2#
发表于 2011-12-1 21:03:30 | 只看该作者
两个参数在设计时,是分开使用的。就不要合在一起、同时使用了。
回复

使用道具 举报

3#
发表于 2011-12-1 21:05:50 | 只看该作者

回复 #1 2010ingxii 的帖子

map --unmap=0:0xff --unhook

这个相当于
map --unmap=0:0xff
后面的--unhook是没有用的。
回复

使用道具 举报

4#
 楼主| 发表于 2011-12-1 21:45:57 | 只看该作者
谢谢两位了!
也即是说我没有犯什么很严重的错误咯,只要改成下面这样就OK了,对吧。
再次感谢!

default 0
timeout 15
password 123
map  --unhook
map --unmap=0:0xff

find --set-root  /BOOT/BG.XPM.GZ


tittle 1
commandline
boot

...
回复

使用道具 举报

5#
发表于 2011-12-1 21:54:13 | 只看该作者
顺序错了。应该先撤销所有磁盘的映射,然后再 unhook。
回复

使用道具 举报

6#
 楼主| 发表于 2011-12-1 21:58:52 | 只看该作者
汗。。。明白了,顺序应该反过来

之前是 map再hook
之后应该是 unhook再unmap


晕 居然错了, 不懂了

[ 本帖最后由 2010ingxii 于 2011-12-1 22:07 编辑 ]
回复

使用道具 举报

7#
发表于 2011-12-1 22:14:41 | 只看该作者
无论是 “建立” map 还是 “撤销” map,这都不是 “立即” 起作用的。只有等到 unhook 或者 hook 或者 rehook 以后,才开始生效。
回复

使用道具 举报

8#
 楼主| 发表于 2011-12-1 22:31:55 | 只看该作者
原来如此
那么,既然 map --unmap=0:0xff --unhook 中 --unhook 没有起作用
而且使用中也没有发现什么异常
--unhook 是否多余呢
回复

使用道具 举报

9#
发表于 2011-12-1 23:55:00 | 只看该作者
不点大师,使用中发现,在命令行中map --mem镜像按确定后有停顿,而map --hook没有停顿,是不是说明map时就已经执行映射文件到内存了

[ 本帖最后由 765058729 于 2011-12-1 23:56 编辑 ]
回复

使用道具 举报

10#
发表于 2011-12-2 09:46:38 | 只看该作者

回复 #8 2010ingxii 的帖子

hook 之类的字眼,控制 grub4dos 的 int13 是否接管 BIOS 的 int13。

如果 hook 处于 on 的状态,则 grub4dos 建立的虚拟磁盘是生效的。

如果 hook 处于 off 状态,则 grub4dos 建立的虚拟磁盘是暂时不起作用的。

如果不曾建立任何虚拟磁盘,则 hook 会出错,因为根本无需 hook。

如果已经建立了虚拟磁盘,此时可以 hook ,让它生效。

如果在 hook 处于 on 的状态,又建立了新的虚拟磁盘(或者删除了旧的虚拟磁盘),则新的虚拟磁盘(或者新的删除动作)没有立即生效,必须使用 unhook 再使用 hook 才能使得新的修改生效。等价地,使用 rehook 也可。

如果已经建立了虚拟磁盘,并且 hook 已经生效,此时又用 unmap 等方法撤销了某些(或者全部)映射,此时,起作用的仍旧是先前的映射,新的 unmap 没有生效。需要用一条 unhook 或者 rehook 才使得新的修改生效。

如果本来就没有建立任何虚拟磁盘,则 unmap 和 unhook 都属于 “空操作”,不执行任何动作。

如果用 map 建立了某些映射,但忘了执行 hook,则在 boot 命令执行的时候,会自动补充(追加)执行一个 hook 的动作。这是为了兼容原来的 GNU GRUB 的处理方式。

请经常地、习惯性地使用 map --status 来判断 map 的状态。

map --mem 需要花时间把映像文件拷贝到内存。但 hook 的执行是不需要时间的。因为 hook 只是修改状态,这几乎不需要时间。把映像文件拷贝到内存,不等于已经 hook 了。因此,还需要 hook,否则,虚拟磁盘依旧是没有生效的。
回复

使用道具 举报

11#
发表于 2012-5-24 15:18:06 | 只看该作者

回复 #10 不点 的帖子

不点大大真耐心。。。
我记得这个好像在g4d的帮助中有详细的介绍。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-14 01:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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