无忧启动论坛
标题:
为什么这条命令要重复两遍?
[打印本页]
作者:
2012painagain
时间:
2014-4-7 10:19
标题:
为什么这条命令要重复两遍?
map (hd0) (hd1)
map (hd1) (hd0)
作用是交换硬盘,但是只写一遍不行么,非要再写一次?
作者:
sratlf
时间:
2014-4-7 10:54
两条命令作用不同 第一条是准备将现在的hd0映射为hd1 第二条是准备将现在的hd1映射为hd0 这两条命令会在执行map --hook后生效
作者:
2012painagain
时间:
2014-4-7 11:04
sratlf 发表于 2014-4-7 10:54
两条命令作用不同 第一条是准备将现在的hd0映射为hd1 第二条是准备将现在的hd1映射为hd0 这两条命令会在 ...
多谢版主,我得好好去理解理解'map'
作者:
thomas0769
时间:
2014-4-15 10:03
sratlf 发表于 2014-4-7 10:54
两条命令作用不同 第一条是准备将现在的hd0映射为hd1 第二条是准备将现在的hd1映射为hd0 这两条命令会在 ...
多谢版主 这样理解 hdo->hd1 然后 hd1->hd0 ... 那岂不是 hd0还是回到hd0了?
作者:
不点
时间:
2014-4-15 13:46
map (hd0) (hd1)
map (hd1) (hd0)
关于虚拟盘的理解。
在未虚拟之前,假定 BIOS 里面存在两个盘:(hd0) 和 (hd1)
现在执行 map (hd0) (hd1),意思是准备创建虚拟盘 (hd1),它将要把机器固有的 (hd0) 当成虚拟盘 (hd1)。注意,由于还没有执行 map --hook,所以,这个虚拟盘并未真正建立。一旦执行 map --hook,那么,虚拟盘 (hd1) 就建立起来了,它的扇区内容与机器固有的 (hd0) 相同,或者说,它的扇区数据来源于 (hd0)。虚拟盘的盘号是 (hd1),当 map --hook 执行之后,你只要访问 (hd1) 的扇区,那就会访问 (hd0) 的扇区。所谓仿真,那就是欺骗,弄假成真。它把 (hd0) 装扮成 (hd1)。此时,你机器上原来固有的那个 (hd1) 已经无法访问了。
要想让机器原有的 (hd1) 不至于被虚拟的 (hd1) 覆盖掉,你需要事先将 (hd1) “备份” 起来,比如说,
map (hd1) (hd0)
这条命令执行的时候,(hd1) 虚拟盘应该不存在才对;如果此时 (hd1) 已经是虚拟盘了,那么就不是你想要达到的目的了。
总结一下,就是这样:
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
第一条命令准备创建虚拟盘 (hd1),它的扇区数据来源于真实的硬盘 (hd0)。
第二条命令准备创建虚拟盘 (hd0),它的扇区数据来源于真实的硬盘 (hd1)。
但都未真正起作用。
直到第三条命令 map --hook 执行之后,以上两个虚拟盘才同时建立起来。
虚拟盘 (hd1) 的扇区数据来源于真实盘 (hd0),而虚拟盘 (hd0) 的扇区数据来源于真实盘 (hd1)。
这就起到了交换磁盘的作用,达到了目的。
对比一下,下面的做法是错误的:
map (hd0) (hd1)
map --hook
map (hd1) (hd0)
map --hook
当 map (hd0) (hd1) 和 map --hook 执行之后,(hd1) 已经是虚拟盘了,它的扇区内容与真实盘 (hd0) 相同。
因此,接下来执行的 map (hd1) (hd0) 就是准备以虚拟盘 (hd1) 为基础来建立虚拟盘 (hd0),map --hook 之后,起作用了。那实际上是以真实盘 (hd0) 为基础来建立虚拟盘 (hd0),所以,等于互相抵消了,回到原地,虚拟盘 (hd0) 与真实盘 (hd0) 的扇区内容相同,等于说,虚拟盘 (hd0) 不存在,它就是真实盘 (hd0)。
所以,以上四条命令等价于以下两条命令:
map (hd0) (hd1)
map --hook
而
map (hd1) (hd0)
map --hook
等价于 “什么工作也没做”。其原因就在于,此时 (hd1) 已经是虚拟盘了。
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3