|
我认为没有多大麻烦,也许你需要寻找一个更新它的简便方法,而不是在仿真代码上动脑筋。
除了 IMG 文件的仿真以外,map 还支持把一个逻辑分区仿真为主分区,例如:
map (hd0,4)+1 (hd0)
逻辑分区之前也有一个逻辑分区表(我以前总是称之为扩展分区表)。所以,grub4dos 实际上是利用了这个逻辑分区表来实现仿真的。这个逻辑分区表被 grub4dos 仿真为主分区表(也就是虚拟化为主分区表,你明白这个意思的)。
逻辑分区表所在的那个扇区,姑且称之为逻辑引导扇区。但这个逻辑引导扇区只有逻辑分区表是存在的,其它全是 00 字节。
你用 WinHex 等 16 进制工具,可以看到逻辑分区之前确实有一个逻辑分区表。它距离逻辑分区本身的引导扇区也有 63 扇区的距离。
逻辑分区表与主分区表类似,也位于逻辑引导扇区的偏移 0x1BE 处。逻辑引导扇区中的可执行代码部分通常用 00 字节填充,但你可以修改为你想要的模样。比如,你可以修改磁盘签名的部分,你也可以为它填充上 MBR 可执行代码。操作系统不使用这些 00 字节,所以,从偏移 0 到偏移 0x1BD 的 00 字节,可以被你任意修改,你修改了它并用 map 之后,它将成为虚拟盘的 MBR。
map --hook 之后,你用 cat --hex (hd0)+1 就可以看到虚拟的 MBR 和分区表了。
-------------
既然谈到这里了,索性就把这个问题再加以引申。刚才说了,逻辑引导扇区(或者也可叫作逻辑 MBR)距离逻辑分区的开头也有 63 扇区(即,逻辑 MBR 也占用 63 扇区,即,一个磁道的长度)之遥。因此,这 63 扇区也是可以被利用的。这 63 个扇区将成为虚拟盘的 MBR 磁道。微软不使用这些扇区,所以,这些扇区几乎全都用 00 填充,只有逻辑分区表上的 64 字节加上 55 AA 标志(共 66 字节)才被微软使用。就是说,63 扇区中除逻辑分区表以外的那些 00 字节,都可以被你任意填充。填充之后,它就成为虚拟盘的 MBR 磁道了。比如说,你可以安排一个 grub4dos 的引导代码在这里,或者把 WEE 的代码放置在这里,作为虚拟盘的 MBR 引导代码。当然了,这都需要你手动操作,你还得小心,不要弄错什么,导致你的数据丢失,造成不可挽回的损失。
[ 本帖最后由 不点 于 2012-11-18 10:37 编辑 ] |
|