![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 21:34 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » grub bug报告 |
| 可打印版本 1,931 / 11 |
| 第1楼 spitfirebay | 发表于 2004-01-11 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
grub bug报告 我刚才用grub虚拟映象文件,退出重启进入XP后居然找到新硬件,一看自动添加了一个软驱B。
|
|
| 第2楼 不点 | 发表于 2004-01-12 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
谢谢。
这个 BUG 产生的原因不明。这可能说明 GRUB for DOS 改动了 CMOS 的设置。 GRUB for DOS 0.2.0 的 grub.exe 文件在启动时要执行 int 13/AX=4b00 命令,强制退出 CDROM 的软盘和硬盘仿真。可能是因为某些 BIOS 在执行 int 13/AX=4b00 的时候,顺便修改了 CMOS 或者 BIOS 数据区中的软盘数目字节。 解决的办法是不执行 int 13/AX=4b00 命令。目前没有提供这个选项,必须修改源程序并重新编译。 当把 GRUB 安装到 MBR 时应当不存在这个问题。【目前的测试版还不能安装到 MBR】 ================ 背景资料: 当我们从 CDROM 引导了 DOS 并运行 grub.exe 时,如果由 GRUB.exe 启动了 win98,则 win98 访问 A: 盘时将导致死机,原因是 A:盘是经过 BIOS 仿真过的,不是真实的 A:软盘驱动器,而是 CDROM 上的一个 1.44M 的映象。 运行 GRUB.exe 的时候,由 启动代码来执行 int13/ax=4b00 来退出 CDROM 上的软盘、硬盘等的仿真,就可以解决这个问题。 但是,正如您所看到的,这带来了另外一个问题。 以上只是猜测。 ========== 如果这时候并无其它大的妨碍,我想,暂时就保留这个 int13/AX=4b00 吧。 或者在下一个版本【 grub_t14 】增加一个选项,使得可以用命令行参数禁止执行 int13/AX=4b00 。 |
|
| 第3楼 xiaojun | 发表于 2004-01-12 00:00 |
| 银牌会员 发帖 499 积分 2,202 | |
|
呵呵,我上次用Vfloppy,XP在Reboot后就活生生多出1个小软-B,呵,1模1样。:)
|
|
| 第4楼 spitfirebay | 发表于 2004-01-12 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
对,删掉了那个多的软驱再次重新启动,XP里的软驱B就不见了
谢谢你的回复。 |
|
| 第5楼 spitfirebay | 发表于 2004-01-12 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
还有个问题:我用真实的软驱启动,启动时有个boot:等在那儿20秒,按f2后还有个选单出来。但用虚拟的就是一闪而过。我是将knoppix拷到硬盘用映象文件启动的,所以需要配置关于显示器的选单和选择进入哪个桌面。另外,我想能不能做个这样的程序(或者在grub.exe里加一个选项)这样来使用:在XP的boot.ini里加上c:\grub.dat="grub启动程序"其实也是相当于MBR的启动映象。
|
|
| 第6楼 不点 | 发表于 2004-01-12 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
关于 knoppix , 不知道是怎么回事, 猜想是由 knoppix 的启动程序本身造成的.
关于在 NTLDR 的 boot.ini 中加入 GRUB 项目的问题, 讨论如下: 1. 由 boot.ini 加载的启动映象, 只能加入一个扇区, 也就是第一扇区, 其余的扇区被扔掉. 所以, 不可能用它来直接加载 GRUB 的 stage2, 最多只能用它来加载 stage1, 或者 加载 MBR. 2. GRUB 不支持 NTFS 文件系统, 所以, 需要在 FAT32 中操作. 好了, 基于以上两点, 您可以试试下面的方法 : 首先把你的 MBR 引导扇区(512个字节)备份起来, 然后在 C: 盘(FAT32格式)安装 GRUB 的 boot/grub/*.* 目录和文件, 把 GRUB 安装到 MBR. 这时, MBR 已经是 GRUB 的代码了. 您把这个 MBR 引导扇区保存为一个文件 c:\grub.dat , 然后就可以修改 boot.ini 为 c:\grub.dat="grub启动程序" 了. 修改之后, 你再恢复 MBR 为原来的 win2000/xp 的 MBR. 这时, MBR 中不再有 GRUB 的代码了. 重启动机器, 您的 boot.ini 菜单上应当有 grub 的启动项目, 这应当可以启动 grub 了. |
|
| 第7楼 spitfirebay | 发表于 2004-01-12 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
谢谢,我也想过你写的这个步骤,但我的C盘是Ntfs格式,但F盘我为了不刻盘安装Linux我前几天刚转换为F32了,我的Linux盘上应该有Grub的映象,不过那个能用来映射软盘吗?
|
|
| 第8楼 不点 | 发表于 2004-01-12 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
只要硬盘上存在着 FAT32,ext2 等分区,就可以用上述方法。需要做的,仅仅是把 boot/grub/*.* 放在 GRUB 所支持的 FAT32,ext2 等分区上,其它都没什么了。
只有 grub for dos 0.1.x 以后的版本才支持仿真软盘的功能。一般的 LINUX 发行版所带的 GRUB 是不支持软盘仿真的。 |
|
| 第9楼 spitfirebay | 发表于 2004-01-12 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
我刚才试过了,我先是用system commander7.05里有个增加启动项功能,它将启动mbr文件写入c:\下,不过在sc705中启动不成功。我写入boot.ini里却成功了。还有就是在Linux分区装的grub里可以执行:
map (hd0,6)/knoppix/boot.img (fd0) chainloader (hd0,6)/knoppix/boot.img 却不能执行 rootnoverify (fd0) 好象说什么BIOS不支持?(不好意思,我英文不大好,一时没弄明白那意思。) |
|
| 第10楼 不点 | 发表于 2004-01-12 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
rootnoverify (fd0)
这条命令总是可以执行成功的,不可能失败。它显示的信息不是失败信息。 执行 rootnoverify (fd0) 后,接着再执行 boot 就行了。 |
|
| 第11楼 spitfirebay | 发表于 2004-01-13 00:00 |
| 初级用户 发帖 14 积分 141 | |
|
我那样做了,但显示 boot fail
|
|
| 第12楼 不点 | 发表于 2004-01-13 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
如果这两条命令
map (hd0,6)/knoppix/boot.img (fd0) chainloader (hd0,6)/knoppix/boot.img 都没有出错信息的话, 那就是因为 boot.img 本身, 不适合于用 grub 仿真的方法来启动. 当 boot.img 启动一个 LINUX 内核之后, 如果这个内核还要读取 /dev/fd0 的内容, 那将是失败的. 这在 grub 的说明网页上已经说的很清楚了. |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |