|
本帖最后由 不点 于 2013-11-5 16:22 编辑
没错,是磁盘分区的问题。
对于磁道长度是 63 个扇区的那些盘,扩展分区里面的每个逻辑分区都有一个 “扩展分区表”。这个分区表通常位于紧接分区 BPB 引导扇区之前的 63 个扇区处(距离为一个磁道的长度)。如果不是这样的,那么就不能用 map 来将分区映射为含有分区表的盘。
图片中的错误信息的意思是,在规定的位置没有发现合法的扩展分区表。
用微软的 fdisk 或者 win98 里面的工具来建立分区,是可以的。其它工具建立的分区格式,不被 grub4dos 支持。
对于主分区,也是一样的道理。紧接主分区 BPB 引导扇区之前的 63 扇区(一个磁道的长度)处,必须是主分区表。仿真主分区意义不大,只有一个主分区才能用这种方式来仿真,即物理位置最靠前的那个主分区,并且距离分区表恰好是 63 个扇区,即,一个磁道长度。但这样的主分区仿真还不如直接用整盘映射来做了。因此,仿真主分区是没有什么意义的。
把分区仿真为整盘,其仿真的原理是,首先确定紧接这个分区之前的那个磁道的开头是否含有分区表(或扩展分区表),如果有,就能仿真,如果没有,就拒绝仿真。微软的 fdisk 所建立的分区就是符合要求的。当有分区表(或扩展分区表)时,仿真程序把这个分区表(或扩展分区表)作为新的虚拟盘的分区表,并进行了必要的虚拟,比如,让扩展分区表看起来像是一个主分区表的样子。
如果把分区仿真为软盘,则没问题。因为此时不用为这个分区添加一个虚拟的 MBR 磁道。
还有一种仿真方式是 map --in-situ (hd0,4)+1 (hd0),即,把扩展分区中的某个逻辑分区仿真为主分区。这是通过添加一个主分区表项来实现的。因此,要求主分区表的四项当中至少有一项是空白。这种方式类似于用 partnew 命令建立一个分区表项。所不同的是,partnew 是真的建立分区表项,它会写入硬盘的 MBR 扇区;而 map --in-situ 是虚拟的,不会真的去修改硬盘的分区表,不会写入硬盘的 MBR 扇区。
我还发现了另外一个问题:你用的是 NTFS 格式。仿真程序对 FAT12、FAT16、FAT32 的支持是完美的。NTFS 的 BPB 表可能无法被虚拟。因为它与 FAT 的 BPB 的差别太大了。比如,它没有 reserved sectors 这个域。
|
|