![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 00:47 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 在grub of dos中虚拟二个软驱的问题。 |
| 可打印版本 1,865 / 11 |
| 第1楼 Qlin | 发表于 2005-03-21 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
在grub of dos中虚拟二个软驱的问题。 因为一些原因要在grub of dos中虚拟二个软驱 ,过程如下。
map (hd0,0)/boot.flp (fd0) map (hd0,0)/kern.flp (fd1) chainloader (hd0,0)/boot.flp chainloader (hd0,0)/kern.flp rootnoverify (fd0) boot 之后好像不行。还是不能读取 kern.flp ,请问要如何解决。。? PS 。请问windows下有什么软件可以修改软驱镜像文件(*.flp) ?? 谢谢 |
|
| 第2楼 不点 | 发表于 2005-03-21 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
chainloader 命令是决定用哪个引导扇区来引导操作系统,因此,chainloader 命令只能用一次才有效。如果该命令使用多次,则只有最后一次的才起作用,在此之前的那些 chainloader 命令都等于是废的。
对于磁盘仿真而言,这两条命令是正确的: map (hd0,0)/boot.flp (fd0) map (hd0,0)/kern.flp (fd1) 如果用 0.4.0 的版本,则可以加上 --mem 参数,来使用内存盘的仿真功能。 注意上述命令仅仅指定仿真的磁盘是 fd0 和 fd1,并未指定由哪个扇区来引导你的操作系统。根据你的文件名来猜测,你可能是要从 boot.flp 来引导,因此,你应该这样: chainloader (hd0,0)/boot.flp rootnoverify (fd0) boot 这就应该好了。 |
|
| 第3楼 不点 | 发表于 2005-03-21 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
不过还是要补充一点,在 版本 0.4.0 中,我们已经增加了两个非常重要的 map 命令参数:
map --floppies=M map --harddrives=N 这两条命令指定 BIOS 所识别的软盘驱动器数目和硬盘驱动器的数目。对于你的情况,应当这样: map (hd0,0)/boot.flp (fd0) map (hd0,0)/kern.flp (fd1) map --floppies=2 chainloader (hd0,0)/boot.flp rootnoverify (fd0) boot 其中 map --floppies=2 只要在 boot 之前即可,除此之外,没有其它要求,它可以放在最前面,也可以放在最后,这都没有错的。 |
|
| 第4楼 Qlin | 发表于 2005-03-21 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
哈哈。。谢谢不点兄
|
|
| 第5楼 Qlin | 发表于 2005-03-21 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
请问关于
map --floppies=M map --harddrives=N 这两条命令指定 BIOS 所识别的软盘驱动器数目和硬盘驱动器的数目。 有没有数目的限制。。? 比如说不能多于二个之类的。。? 谢谢。 |
|
| 第6楼 Qlin | 发表于 2005-03-21 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
不点兄。。跟据你的提示。我进行了如下操作。
map (hd0,0)/boot.flp (fd0) map (hd0,0)/kern.flp (fd1) chainloader (hd0,0)/boot.flp rootnoverify (fd0) boot 但好像还是不行。。不知是什么原因。。?? 谢谢。 |
|
| 第7楼 不点 | 发表于 2005-03-21 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
指定的软盘数目不可以超过2, 指定的硬盘数目不可以超过(我有点忘记了,大概是) 100 吧。
> 但好像还是不行。。不知是什么原因。。?? 谢谢。 “不行” 在哪个方面呢?是不能启动?还是什么别的毛病,你没有描述详细。 只要 boot 之后能够把控制权顺利交给 boot.flp 的引导代码,这就算是 GRUB for DOS的成功。至于说以后你引导的操作系统是 linux 或者 BSD 等,由于这些操作系统从 CPU实模式切换到保护模式,在此之后,这些操作系统就不再使用仿真了,因为它们不再使用 int13。 也就是说,一旦这类操作系统被引导成功,你就不再能访问我们的虚拟软盘了。只是在操作系统的引导过程中,也就是在操作系统获得控制之前的这段时间,我们的仿真还是起作用的。 |
|
| 第8楼 Qlin | 发表于 2005-03-21 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
谢谢 不点 兄。
原来是这个样子啊。 我的理想情况是。 先从A 盘引导,然后再读取B盘的kern . 看来是不行了呢。。 |
|
| 第9楼 不点 | 发表于 2005-03-22 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
老兄用的可能是 BSD 吧。不管 LINUX 还是 BSD,目前都不支持实模式的 BIOS中断调用。但是,另一方面,保护模式确实是完全有可能支持实模式的中断调用的,这可以叫做“实模式兼容层”,win98 就有这种兼容层,因此win98 就可以顺利地访问到我们通过 int13 映射而得到的内存盘。注意 win98也是保护模式的操作系统。winNT/2K/XP/2003 同样都是保护模式的操作系统,所不同的是,它们去掉了实模式兼容层,也就是某个 DLL实模式兼容性驱动程序文件。假定有某个公司为 winNT/2K/XP/2003 写一个这样的驱动程序,那么 winNT/2K/XP/2003也能支持实模式的所有概念,包括从 winNT/2K/XP/2003 内部不用重启动 Windows 即可像 win98 那样进入 realmode DOS。只是由于微软故意不做,其它公司也不愿意费这个牛劲替它做罢了。
LINUX 和 BSD 的道理完全一样,在这些操作系统中本来不存在实模式兼容驱动,但是,完全可以为它们增加一个,当然了,这都是系统底层操作,会麻烦一些,然而这不存在实质的困难。 =============== 在目前的情况下,也许你稍作变通就可以躲过以上限制。比如说,你的全部文件都放在 A:盘上,A:盘本身做得很大,比如 2.88M,或者,如果不够用的话,干脆做 50M 或 1000M。经过 GRUB4DOS 仿真之后,A:盘的引导程序获得控制,这段引导程序把A:盘上的内核和initrd 都装入内存,这样,当内核获得控制时,根本不需要再读软盘了,因为软盘的全部数据(除了内核之外)都在 initrd中,这已经都在内存中了。BSD我没用过,但是我很清楚这个办法对 LINUX 是成功的。 |
|
| 第10楼 Qlin | 发表于 2005-03-22 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
根据如上,我进行了下面的尝试。。
系统情况是。硬盘分有二个主分区,在grub中显示 第一个为 hd0, 0 第二个为 hd0,2 我把freebsd 的iso 文件解压到 第二个主分区(hd0,2) 我的相法是把第二个主分区虚拟成A盘,然后再从At盘启动, 然后进行了如下操作: map (hd0,2)+1 (fd0) chainloader (fd0)+1 rootnoverify (fd0) boot 但是运行 chainloader (fd0)+1 后电脑会长鸣, 然后死机 。 请问我这样的做法是否有错。? 为什么不能成功。。? 谢谢。。 |
|
| 第11楼 不点 | 发表于 2005-03-22 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
你的分区的文件系统,如果不是 FAT/NTFS 这类微软格式的,是不能用你所用的分区仿真功能的。
你可以改为文件仿真功能: map (hd0,2)+xxxxxxxx (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0) boot 当 xxxxxxxx 为 1 时,是调用分区仿真功能,而当 xxxxxxxx 等于分区中的扇区总数时,则调用的是文件仿真功能。 另外你少掉了一条很重要的 map ---hook 命令。 |
|
| 第12楼 Qlin | 发表于 2005-03-23 00:00 |
| 初级用户 发帖 11 积分 131 | |
|
谢谢 不点 兄....问题解决了。。哈哈。。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |