无忧启动论坛
标题:
关于unmap和unhook,这样用没什么问题吧
[打印本页]
作者:
2010ingxii
时间:
2011-12-1 19:00
标题:
关于unmap和unhook,这样用没什么问题吧
不想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)
作者:
不点
时间:
2011-12-1 21:03
两个参数在设计时,是分开使用的。就不要合在一起、同时使用了。
作者:
chenall
时间:
2011-12-1 21:05
标题:
回复 #1 2010ingxii 的帖子
map --unmap=0:0xff --unhook
这个相当于
map --unmap=0:0xff
后面的--unhook是没有用的。
作者:
2010ingxii
时间:
2011-12-1 21:45
谢谢两位了!
也即是说我没有犯什么很严重的错误咯,只要改成下面这样就OK了,对吧。
再次感谢!
default 0
timeout 15
password 123
map --unhook
map --unmap=0:0xff
find --set-root /BOOT/BG.XPM.GZ
tittle 1
commandline
boot
...
作者:
不点
时间:
2011-12-1 21:54
顺序错了。应该先撤销所有磁盘的映射,然后再 unhook。
作者:
2010ingxii
时间:
2011-12-1 21:58
汗。。。明白了,顺序应该反过来
之前是 map再hook
之后应该是 unhook再unmap
晕 居然错了, 不懂了
[
本帖最后由 2010ingxii 于 2011-12-1 22:07 编辑
]
作者:
不点
时间:
2011-12-1 22:14
无论是 “建立” map 还是 “撤销” map,这都不是 “立即” 起作用的。只有等到 unhook 或者 hook 或者 rehook 以后,才开始生效。
作者:
2010ingxii
时间:
2011-12-1 22:31
原来如此
那么,既然 map --unmap=0:0xff --unhook 中 --unhook 没有起作用
而且使用中也没有发现什么异常
--unhook 是否多余呢
作者:
765058729
时间:
2011-12-1 23:55
不点大师,使用中发现,在命令行中map --mem镜像按确定后有停顿,而map --hook没有停顿,是不是说明map时就已经执行映射文件到内存了
[
本帖最后由 765058729 于 2011-12-1 23:56 编辑
]
作者:
不点
时间:
2011-12-2 09:46
标题:
回复 #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,否则,虚拟磁盘依旧是没有生效的。
作者:
hotdll
时间:
2012-5-24 15:18
标题:
回复 #10 不点 的帖子
不点大大真耐心。。。
我记得这个好像在g4d的帮助中有详细的介绍。
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3