|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『楼 主』:
grub bug报告
我刚才用grub虚拟映象文件,退出重启进入XP后居然找到新硬件,一看自动添加了一个软驱B。
[此贴子已经被作者于2004-1-11 19:32:14编辑过]
|
|
2004-1-11 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
2 楼』:
谢谢。
这个 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 。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
xiaojun
银牌会员
积分 2202
发帖 499
注册 2003-6-12
状态 离线
|
『第
3 楼』:
呵呵,我上次用Vfloppy,XP在Reboot后就活生生多出1个小软-B,呵,1模1样。:)
|
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— ! |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第
4 楼』:
对,删掉了那个多的软驱再次重新启动,XP里的软驱B就不见了
谢谢你的回复。
|
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第
5 楼』:
还有个问题:我用真实的软驱启动,启动时有个boot:等在那儿20秒,按f2后还有个选单出来。但用虚拟的就是一闪而过。我是将knoppix拷到硬盘用映象文件启动的,所以需要配置关于显示器的选单和选择进入哪个桌面。另外,我想能不能做个这样的程序(或者在grub.exe里加一个选项)这样来使用:在XP的boot.ini里加上c:\grub.dat="grub启动程序"其实也是相当于MBR的启动映象。
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
6 楼』:
关于 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 了.
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第
7 楼』:
谢谢,我也想过你写的这个步骤,但我的C盘是Ntfs格式,但F盘我为了不刻盘安装Linux我前几天刚转换为F32了,我的Linux盘上应该有Grub的映象,不过那个能用来映射软盘吗?
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
8 楼』:
只要硬盘上存在着 FAT32,ext2 等分区,就可以用上述方法。需要做的,仅仅是把 boot/grub/*.* 放在 GRUB 所支持的 FAT32,ext2 等分区上,其它都没什么了。
只有 grub for dos 0.1.x 以后的版本才支持仿真软盘的功能。一般的 LINUX 发行版所带的 GRUB 是不支持软盘仿真的。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第
9 楼』:
我刚才试过了,我先是用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不支持?(不好意思,我英文不大好,一时没弄明白那意思。)
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
10 楼』:
rootnoverify (fd0)
这条命令总是可以执行成功的,不可能失败。它显示的信息不是失败信息。
执行 rootnoverify (fd0) 后,接着再执行
boot
就行了。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第
11 楼』:
我那样做了,但显示 boot fail
|
|
2004-1-13 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
12 楼』:
如果这两条命令
map (hd0,6)/knoppix/boot.img (fd0)
chainloader (hd0,6)/knoppix/boot.img
都没有出错信息的话, 那就是因为 boot.img 本身, 不适合于用 grub 仿真的方法来启动.
当 boot.img 启动一个 LINUX 内核之后, 如果这个内核还要读取 /dev/fd0 的内容, 那将是失败的. 这在 grub 的说明网页上已经说的很清楚了.
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-13 00:00 |
|