|
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) 已经是虚拟盘了。
|
|