|
map --mem ()/MKRL/Win7PE/NV7PEKRL.IMG (hd0,1)
这句中使用 (hd0,1),其意图是错误的。grub4dos 不可能把一个映像仿真为一个分区。传统的 BIOS 并不理解 “分区” 这个概念,它只有 “盘号” 这个概念。分区是操作系统所理解的概念。无论是 memdisk 还是 grub4dos,其仿真的基本思路都是一样的。都是面向 BIOS 来仿真。就是说,BIOS 有什么概念,仿真程序就提供什么概念。BIOS 中没有的概念,仿真程序也不可能凭空捏造出来一个。BIOS 中有盘号,00 表示软盘,80h 表示硬盘。那么,仿真程序就在盘号上做工作,增加一个盘号,就是增加一个虚拟盘。改变一个盘号,就是改变一个虚拟盘。BIOS 也有 “扇区” 这个概念,所以,仿真程序可以在 “扇区” 上做文章。但是,BIOS 中没有 “分区” 这个概念,所以,仿真程序也不可能仿真出一个 “分区” 来。
在你上述的命令中,(hd0,1) 中的分区号 1 被 grub4dos 忽略掉,因此,上述命令完全等价于如下的命令:
map --mem ()/MKRL/Win7PE/NV7PEKRL.IMG (hd0)
这样,你就知道毛病在哪里了。你试图把两个 img 都仿真为 (hd0),只有最后一个是起作用的。
-------------------
再说说你为何列不出 (hd0,1) 的内容。
你刚才执行的这条命令,是企图把一个分区映像仿真为硬盘 (hd0)。grub4dos 发现分区映像没有分区表,自动在内存中为其添加分区表。那么你可以用 (hd0,0) 来访问这个分区中的文件。你用 (hd0,1) 是错的。 |
|