以下是引用xiaojun在2004-1-3 21:14:48的发言:
不点大哥您太客气,就是说当我MAP了(hd0,x)后,要解除用(hd0,x)仿真的hd0,不能单纯--unhook,必须map (hd0,x) (hd0),而且因为我是只有一个主分区hd0,0,能仿真硬盘的hd0,1和hd0,2与hd0,3没有,因此我的hd0,6是扩展逻辑分区,只能仿真软盘而不能仿真硬盘,这样理解对吗?谢谢!
也就是说:能仿真硬盘的是那4个主分区中的3个,1,2,3对吧?
这两天出远门了, 没能来这里.
您的原话:
------------------
当我MAP了(hd0,x)后,要解除用(hd0,x)仿真的hd0,不能单纯--unhook,必须map (hd0,x) (hd0)
------------------
稍微有点差错, 后半句应当是 map (hd0) (hd0) 或者也可能应当是 map (hd1) (hd1), 视具体仿真了那个硬盘而定.
其实前半句也有差错. "当我MAP了(hd0,x)后" 是不完整的, 应当是"MAP了(hd0,x)为(hd0)后" 或者 "MAP了(hd0,x)为(hd1)后", 这样才算完整. 对于前者, 解除 map 的命令是 map (hd0) (hd0), 而对于后者, 解除 map 的命令是 map (hd1) (hd1)
您的原话:
------------------
因为我是只有一个主分区hd0,0,能仿真硬盘的hd0,1和hd0,2与hd0,3没有,因此我的hd0,6是扩展逻辑分区,只能仿真软盘而不能仿真硬盘,这样理解对吗?谢谢!
也就是说:能仿真硬盘的是那4个主分区中的3个,1,2,3对吧?
------------------
以下假定您的分区工具只有微软的 Fdisk, 没有别的第三方工具.
因为您已经有了 (hd0,6) 扩展逻辑分区, 所以您肯定还有一个(hd0,1)作为"容器",如果不是(hd0,1),那么就应当是 (hd0,2) 或者(hd0,3)了.
也就是说, 只要您有一个 (hd0,n) 的分区, 此处 n > 3, 那么就一定存在一个 (hd0,m) 的"容器", 此处 m = 0, 1, 2, 3 , 一般来说, m=1, 也就是说, hda2 就是那个"容器".
对于 grub for dos 0.2.0 来说, 您确实可以用 (hd0,1)+1 来仿真一个硬盘, 不过, 只有 (hd0,4) 可以成为仿真之后的 C: 盘.
进一步解释, 在 (hd0,1) 这个"容器"中, 只有 (hd0,4) 可以访问, 而其他的 (hd0,x) 都不能访问, 此处 x > 4
注意 (hd0,4) 就是 hda5, 也即您的逻辑 D: 盘. 如果把 DOS 放在 E: F:等盘上, 这样是不能成功的. DOS 应当放在 D: 盘也即 (hd0,4) 上, 然后用
map (hd0,1)+1 (hd0)
map --hook
chainloader (hd0,0)+1
boot
就可以启动您的 D: 盘上的 dos 了, 当然, 经过这个仿真之后, 此时您的 D: 盘已经变成 C: 盘了.
您的 E: F: 等盘在这个仿真之下是不可访问的, 现在不能详细解释, 以后有机会的话, 再对此进行解释.
==============
另外, 楼主的老兄所提出的问题是很有意义的. 他的问题不是要我们用仿真的办法, 而是直接从 D: E: 等盘启动 DOS.
我想, 这个应当也可以实现的, 用 FreeDOS 这类开源软件, 再加上必要的修改, 应当是可以的.
即便是微软的 dos, 经过 Hack 修改之后, 应当也可以(当然了, 这得有人去做才行).