|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『楼 主』:
grub bug报告
使用 LLM 解释/回答一下
我刚才用grub虚拟映象文件,退出重启进入XP后居然找到新硬件,一看自动添加了一个软驱B。
I just used a GRUB virtual image file. After exiting and restarting into XP, I actually found new hardware and saw that a floppy drive B was automatically added.
|
|
2004-1-11 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
谢谢。
这个 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 。
Thanks.
The cause of this BUG is unknown. This may indicate that GRUB for DOS has modified the CMOS settings.
The grub.exe file of GRUB for DOS 0.2.0 executes the int 13/AX=4b00 command when starting, forcibly exiting the floppy disk and hard disk emulation of the CDROM. It may be that when some BIOS executes int 13/AX=4b00, it also modifies the byte of the number of floppy disks in the CMOS or BIOS data area.
The solution is to not execute the int 13/AX=4b00 command. There is no option provided currently, and the source code must be modified and recompiled.
There should be no problem when installing GRUB to the MBR.
============================
Background information:
When we boot DOS from CDROM and run grub.exe, if win98 is started by GRUB.exe, accessing the A: drive when win98 will cause a crash. The reason is that the A: drive is emulated by BIOS, not a real A: floppy drive, but a 1.44M image on CDROM.
When running GRUB.exe, the startup code executes int13/ax=4b00 to exit the emulation of floppy disks, hard disks, etc. on CDROM, which can solve this problem.
However, as you can see, this brings another problem.
The above is just a guess.
============================
If there is no other major obstacle at this time, I think, for the time being, keep this int13/AX=4b00.
Or add an option in the next version so that the execution of int13/AX=4b00 can be prohibited with command line parameters.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
xiaojun
银牌会员
    
积分 2202
发帖 499
注册 2003-6-12
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
呵呵,我上次用Vfloppy,XP在Reboot后就活生生多出1个小软-B,呵,1模1样。:)
Hehe, last time I used Vfloppy, after rebooting, XP suddenly had 1 more small floppy - B, heh, exactly the same. : )
|

一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— ! |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
对,删掉了那个多的软驱再次重新启动,XP里的软驱B就不见了
谢谢你的回复。
Yes, after deleting the extra floppy drive and restarting again, the floppy drive B in XP is gone. Thank you for your reply.
|
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
还有个问题:我用真实的软驱启动,启动时有个boot:等在那儿20秒,按f2后还有个选单出来。但用虚拟的就是一闪而过。我是将knoppix拷到硬盘用映象文件启动的,所以需要配置关于显示器的选单和选择进入哪个桌面。另外,我想能不能做个这样的程序(或者在grub.exe里加一个选项)这样来使用:在XP的boot.ini里加上c:\grub.dat="grub启动程序"其实也是相当于MBR的启动映象。
There is another question: When I boot with a real floppy drive, there is a boot: waiting there for 20 seconds, and after pressing F2, a menu comes out. But with the virtual one, it flashes by. I copied knoppix to the hard disk and boot with the image file, so I need to configure the menu about the monitor and select which desktop to enter. Also, I wonder if I can make such a program (or add an option in grub.exe) to use like this: Add c:\grub.dat="grub boot program" in the XP's boot.ini, which is actually equivalent to the boot image of the MBR.
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
关于 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 了.
Regarding Knoppix, I don't know what's going on. I guess it's caused by the Knoppix bootloader itself.
Regarding the issue of adding a GRUB entry in the boot.ini of NTLDR, the discussion is as follows:
1. The boot image loaded by boot.ini can only load one sector, that is, the first sector, and the remaining sectors are discarded. So, it's impossible to directly load GRUB's stage2 with it. At most, it can be used to load stage1 or load the MBR.
2. GRUB doesn't support the NTFS file system, so operations need to be done in FAT32.
Well, based on the above two points, you can try the following method :
First, back up your MBR boot sector (512 bytes). Then, install the boot/grub/*.* directory and files of GRUB on the C: drive (in FAT32 format), and install GRUB to the MBR.
At this time, the MBR is already GRUB's code. You save this MBR boot sector as a file c:\grub.dat, and then you can modify boot.ini to be c:\grub.dat="GRUB Boot Program". After modification, you restore the MBR to the original win2000/xp MBR. At this time, the MBR no longer has GRUB's code.
Restart the machine, and there should be a GRUB boot entry in your boot.ini menu, which should be able to start GRUB.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
谢谢,我也想过你写的这个步骤,但我的C盘是Ntfs格式,但F盘我为了不刻盘安装Linux我前几天刚转换为F32了,我的Linux盘上应该有Grub的映象,不过那个能用来映射软盘吗?
Thanks, I also thought about the steps you wrote, but my C drive is in Ntfs format, but I just converted the F drive to F32 a few days ago in order not to burn a CD to install Linux. There should be a Grub image on my Linux drive, but can that be used to map a floppy disk?
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
只要硬盘上存在着 FAT32,ext2 等分区,就可以用上述方法。需要做的,仅仅是把 boot/grub/*.* 放在 GRUB 所支持的 FAT32,ext2 等分区上,其它都没什么了。
只有 grub for dos 0.1.x 以后的版本才支持仿真软盘的功能。一般的 LINUX 发行版所带的 GRUB 是不支持软盘仿真的。
As long as there are partitions such as FAT32, ext2 on the hard disk, the above method can be used. All that needs to be done is to place boot/grub/*.* on the FAT32, ext2 partitions supported by GRUB, and there is nothing else. Only versions of grub for dos 0.1.x and later support the function of emulating a floppy disk. The GRUB that comes with general Linux distributions does not support floppy disk emulation.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
我刚才试过了,我先是用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不支持?(不好意思,我英文不大好,一时没弄明白那意思。)
I just tried it. First, I used the add startup item function in System Commander 7.05, which writes the MBR file to C:\, but it doesn't start successfully in SC705. However, it succeeds when I write it to boot.ini. Also, in the GRUB installed on the Linux partition, I can execute:
map (hd0,6)/knoppix/boot.img (fd0)
chainloader (hd0,6)/knoppix/boot.img
But I can't execute
rootnoverify (fd0)
It seems like something about BIOS not supporting it? (Sorry, my English is not very good, I didn't understand the meaning for a while.)
|
|
2004-1-12 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
rootnoverify (fd0)
这条命令总是可以执行成功的,不可能失败。它显示的信息不是失败信息。
执行 rootnoverify (fd0) 后,接着再执行
boot
就行了。
rootnoverify (fd0)
This command always executes successfully and cannot fail. The information it displays is not a failure message.
After executing rootnoverify (fd0), then execute
boot
and that's it.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-12 00:00 |
|
|
spitfirebay
初级用户
 
积分 141
发帖 14
注册 2004-1-10
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
我那样做了,但显示 boot fail
I did that, but it shows "boot fail"
|
|
2004-1-13 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
如果这两条命令
map (hd0,6)/knoppix/boot.img (fd0)
chainloader (hd0,6)/knoppix/boot.img
都没有出错信息的话, 那就是因为 boot.img 本身, 不适合于用 grub 仿真的方法来启动.
当 boot.img 启动一个 LINUX 内核之后, 如果这个内核还要读取 /dev/fd0 的内容, 那将是失败的. 这在 grub 的说明网页上已经说的很清楚了.
If these two commands
map (hd0,6)/knoppix/boot.img (fd0)
chainloader (hd0,6)/knoppix/boot.img
have no error messages, then it is because the boot.img itself is not suitable for booting using the grub emulation method.
When the boot.img starts a LINUX kernel, if the kernel still needs to read the content of /dev/fd0, it will fail. This is clearly stated on the grub documentation webpage.
|

因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-13 00:00 |
|
|