无忧启动论坛

标题: 两个虚拟在不同位置上的镜像竟然互相覆盖了 [打印本页]

作者: sunsea    时间: 2012-5-26 10:31
标题: 两个虚拟在不同位置上的镜像竟然互相覆盖了
两个虚拟在不同位置上的镜像竟然互相覆盖了
见图

怎么回事?
作者: 不点    时间: 2012-5-26 11:00
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) 是错的。
作者: sunsea    时间: 2012-5-26 13:07
原帖由 不点 于 2012-5-26 11:00 发表
map --mem ()/MKRL/Win7PE/NV7PEKRL.IMG (hd0,1)

这句中使用 (hd0,1),其意图是错误的。grub4dos 不可能把一个映像仿真为一个分区。传统的 BIOS 并不理解 “分区” 这个概念,它只有 “盘号” 这个概念。分区 ...

谢谢指导,还有,是否可以这样:像这样仿真时,把后仿真的镜像串接在后面,修改分区表。这样可行否?
作者: 不点    时间: 2012-5-26 13:48
标题: 回复 #3 2011czmxbb52 的帖子
直觉上,我觉得你提的这个问题,属于哲学。什么意思呢?就是说,如果只是你一人有这要求,那不足以说服开发者支持你的建议。

从技术上讲,内存都在你手上,你可以用 dd 等命令安排内存的数据,或者用 write 命令来修改内存数据,按照你的意图来安排和修改。按照你的特殊的要求来安排和修改。只有你自己知道你需要什么。也只有当你提出的问题具有普遍意义从而得到足够多的人的支持的时候,才有希望被重视和采纳。
作者: sunsea    时间: 2012-5-26 14:24
原帖由 不点 于 2012-5-26 13:48 发表
直觉上,我觉得你提的这个问题,属于哲学。什么意思呢?就是说,如果只是你一人有这要求,那不足以说服开发者支持你的建议。

从技术上讲,内存都在你手上,你可以用 dd 等命令安排内存的数据,或者用 write  ...

好吧,我承认那是个很YY的想法,收回。此帖也算了结了
作者: bfgxp    时间: 2012-5-26 14:51
哈哈!
这贴有意思。




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3