i659 兄:
GRUB 的软盘仿真功能,可以启动任何软盘【包括 LINUX 和 FREEBSD 的软盘,总之,任何用途的软盘】,这一点,没有任何限制。但是,也有若干关于操作系统的限制,主要是基于这样的事实:某些操作系统在接管控制之后不使用 BIOS 的 INT13 接口,如果这样的话,就可能出现某些问题,也可能不出现问题。具体说明如下:
当这类操作系统不使用、不访问软盘中的内容时,能够正常操作,和真实软盘启动没有任何差别。例如绝大多数 LINUX 软盘以及 FreeBSD 软盘就是这样的。
当软盘映象中的程序要访问软盘映象自身的内容时,就会出现访问失败的情况。这样,启动就会出现故障。这是因为,用户程序是通过操作系统【不是通过 BIOS 接口】来访问真实软盘的,而真实的软盘不在软驱之中,所以访问失败。
GRUB for DOS 0.1.x 对 2.88M 的软盘一般是不支持的。GRUB for DOS 0.2.0 对任意尺寸的软盘映象都支持了,还支持任意尺寸的硬盘映象的仿真。现在虽然还没有发布 GRUB for DOS 0.2.0 的正式版,但现在的测试版几乎就等于正式版了。
=========
在 XP 下,如果您的磁盘是 NTFS 格式的,您将无法在 GRUB 下访问磁盘中的文件 (hd0,0)/boot.flp,您可以访问另外一个 FAT32 分区中的文件。把 boot.flp 放在 FAT32 分区,就可以在 GRUB 下访问它了。
另外,如果您的 boot.flp 已经处于 FAT32 之下,那么,map 失败的原因就是,boot.flp 文件有碎片。你可以多拷贝几个 boot.flp 的备份,看看哪个没有碎片就用哪个。
网页上对此说的很详细:
http://www.linuxeden.com/edu/doctext.php?docid=3006
----------------------------------
Wengier 兄:
禁用磁盘的功能,我原来也曾考虑过,但是,由于 windows 可能不使用 BIOS ,所以,这种禁用不一定好使。windows 的 32位磁盘存取,其实就是跳过 BIOS int13 接口。
在 DOS 下禁用磁盘,可能效果会好一些。关于禁用某个磁盘,或者增加某个磁盘,有三点考虑:
1。在 BIOS 数据区有软盘个数和硬盘个数的字段,增删磁盘时,最好应当调整一下这些字段。
2。在 CMOS 中保存了磁盘配置信息,但是,最好还是别动它。
3。用 map 命令使磁盘不可访问。
关于第1条,由于我们的 GRUB 有时候要重入,改动之后重入时要再恢复它,比较麻烦,容易搞错,所以,第1条我们也不做了。因此我们只用第3条来实现。例如,禁用 (hd1):
map --disable-chs-mode --disable-lba-mode (hd1) (hd1)
我不知道这个命令是否工作正常,我没有试验过。
增加一个硬盘 (hd3):
map (hd2,0)/hard_disk.img (hd3)
由于 BIOS 数据区的硬盘个数没有增加,所以,这条命令并不能增加一个 (hd3)。
=================
我在网页上的说法比较随便,看来,得改改了。我以前对本站的概况不了解。