中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: Grub安装到USB移动硬盘的问题 上一主题 | 下一主题
wlidan
新手上路

网络幽灵


积分 15
发帖 7
注册 2006-8-29
状态 离线
『楼 主』:  Grub安装到USB移动硬盘的问题

我有一块USB接口的移动硬盘,硬盘型号是FUJITSU MHT2040AH,40G,分3个区,主分区1.9G FAT32,已安装DOS系统,能正常引导并运行DOS下的软件
在DOS的CONFIG.sys中用“device=grub.exe --config-file="/boot/grub/menu.lst"”引导至
Starting cmain()... 时死机,键盘无响应。
DOS启动后在dos提示符下运行grub.exe也是在 Starting cmain()... 时死机,dos启动时未加载emm386.exe,Config.sys文件配置见后,启动详情如下图:



我又试图将GRUB安装到USB移动硬盘的MBR来引导,在dos下运行 bootlace 0x80, MBR上安装正常完成,提示:
Disk geometry calculated according to the partition table:
Sectors per track=63, Number ot heads=255
Success
但重启后系统运行至 Verfying DMI Pool Data......... 时死机,之后我将硬盘从移动盒中取出通过大小硬盘转接卡直接连到主板IDE1口,GRUB能正常从MBR引导,启动menu.lst中菜单,菜单中的每一个启动项均能正常运行。

GRUB我用的是grub_for_dos-2006-11-26最新版,GRUB的相关文件如menu.lst,stage1,stage2等文件均在移动硬盘\boot\grub\下,grldr在移动硬盘根目录下,

不知为何在USB上却不能启动,郁闷啊....

我的menu.lst文件内容如下:
########################################################################
# Grub 0.95 中文版配置文件样例, by Gandalf(f22_storm@163.com)
#  2004 -  07 - 15 (midified 13:13 2004-11-13)
#

# 默认延迟时间(秒)
timeout 30

# 第一项为默认值
default 5

# Fallback to the second entry.
fallback 1

# 设置动画图形菜单文件
gfxmenu /boot/grub/grub_chs.msg

# 设置中文支持的字体文件
fontfile /boot/grub/fonts

# 设置图形背景文件
splashimage /boot/grub/bj2008.xpm.gz

# 使用 TFTP 协议从网络启动一个软盘镜像
# 手工设置
#    address = ip 地址
#    mask = 子网掩码
#    gateway = 网关
#  
#  tftpserver  tftp 服务器地址
#  你可以修改 win99.img 为你的软盘镜像,注意:
#  可以使用 winzip 压缩,原始大小必须是 1.44/2.88MB
# title 从网络软盘镜像文件启动
# ifconfig --address=192.168.200.1
# ifconfig --mask=255.255.255.192
# ifconfig --gateway=192.168.200.5
# tftpserver 192.168.200.5
# kernel (nd)/memdisk.gz
# initrd (nd)/win99.zip

# 启动另一个功能强大的引导器。注意:
#   在它里面界面里,不要做任何保存!!!!!
title 运行 Smart BootManager
kernel /boot/grub/memdisk.gz
initrd /boot/grub/sbm.bin


# 本地软盘镜像的使用方法之一。还可使用 4DOS 的功能
#   即 map (xxx)/win98.img (fd0) 的方法。本版本支持。
title 启动本地 Win98 软盘镜像文件
kernel /boot/grub/memdisk.gz
initrd /boot/grub/win99.zip

# 转到光盘启动
title 从光盘启动系统
scdrom --bootcd

title 启动本地 NTFS 软盘镜像文件
kernel /boot/grub/memdisk.gz
initrd /boot/grub/ntfs.img

# 从本地磁盘的主分区启动
title 从硬盘第一分区启动
rootnoverify (hd0,0)
makeactive
chainloader  +1

# 从移动硬盘主分区启动
title 从移动硬盘启动MS-DOS
chainloader (hd0,0)+1

# Change the colors.
title 改变菜单颜色
color light-green/brown blink-red/blue

######################################################################

Config.sys文件配置如下:
##################################################################
[menu]
menuitem=M1, Boot with UMBPCI [Real Mode]
menuitem=M2, Boot with EMM386(NOEMS) [Protected Mode]
menuitem=M3, Boot with CD-ROM support [UMBPCI]
menuitem=M5, DOS Tools with VDISK
menuitem=M6, Boot with GRUB
menuitem=M7, Boot only
menucolor=15,1
menudefault=M1,10

[M1]
device=himem.sys /testmem:off /q
device=umbpci.sys
devicehigh=qdma.sys /l

[M2]
device=himem.sys /testmem:off /q
device=emm386.exe noems
devicehigh=qdma.sys /l

[M3]
include M1
devicehigh=VIDE-CDD.SYS /D:IDE-CD

[M5]
include M2

[M6]
device=grub.exe --config-file="/boot/grub/menu.lst"

[M7]
device=himem.sys /testmem:off /q

[COMMON]
DOS=HIGH,UMB,AUTO
FCBSHIGH=4,0
FILESHIGH=30
BUFFERSHIGH=20,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z
NUMLOCK=ON
SET PATH=C:\; C:\HXR\BIN\; C:\HXGUI\BIN\

############################################################

请大侠们指点迷津!!!

2006-11-30 04:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
artisticidea
新手上路





积分 16
发帖 8
注册 2006-11-13
状态 离线
『第 2 楼』:  

不管怎样配置,grub在你的机器上都是无法启动的
grub目前基本上很难应用在USB的启动上
再新的grub版本也是一样的
因为这并不是grub本身的问题
其原因在于目前 bios 存在的一个漏洞,目前只有极少数的主板能够支持grub在usb上作引导

我曾经耗费很大的精力用很多U盘、移动硬盘在十几台主板配置不同的机器上进行过grub的测试——只有在某一次成功的、应该是奇迹般的出现了grub的启动菜单,并且将我U盘上的Linux引导成功,是在一台近期新配的机器上,也就是目前离我左边五六米处的对面寝室同学的电脑,由于对grub失望,也没记下主板类型,不好意思。

2006-11-30 11:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 3 楼』:  

谢谢详细的报告。在试图解决它之前,先猜测一下问题会在何处。

从显示的信息来看,查询磁盘参数的 int13 调用都通过了。它们是:功能 08,48,41,4B。

那么问题应该是发生在读文件的时候了,也就是说,是功能 02(CHS常规读盘) 或者 42(LBA扩展读盘)。

你的 U 盘 BIOS 不支持 LBA,所以无法用 LBA 来访问 U 盘。但是硬盘 81 支持 LBA。

在 DOS 下你可以正常操作,因为 CHS 模式的访问是经典的,不容易出错。

硬盘 81 虽然支持 LBA,但恰恰可能就是因为这个而死机。也就是说,在由 LBA 模式来访问硬盘 81 时,死机了。

虽然硬盘单独使用的时候不曾发生过问题,但是,经由 U 盘启动时,U 盘的 BIOS 起作用。U 盘 BIOS 的错误,就导致访问硬盘 81 时死机。

你可以先拔掉硬盘 81 的连接线,试试看用单一的 U 盘可否进入 GRUB。

另外,从 U 盘启动 DOS 后,你能否在 DOS 下操作硬盘 81 呢?硬盘 81 的大小如何?分区情况如何?

如果纯 DOS 能操作硬盘 81,我们的 GRUB 就有希望。注意,纯 DOS 是指没有 config.sys 和 autoexec.bat 存在的干净 DOS。在纯 DOS 下能否用 copy 命令在 U 盘和硬盘之间互拷?

-----------------

当然还可能是这样一种情况:U 盘 BIOS 提供的几何参数是错误的。GRUB 使用的就是由 BIOS 提供的参数。如果是这样,问题就简化了。我们可以修改 GRUB,使它读取 U 盘的引导扇区,决定一个合适的 CHS 值,从而躲过 BIOS 的 BUG。请你关注一下近期的发布。

刚刚上载了新的 grub.exe 文件在 http://grub4dos.jot.com/ 请下载测试。从你提供的信息来看,GRLDR 从 MBR 启动的方法,目前估计还难以成功。先看看 GRUB.EXE 是否成功再说。

[ Last edited by 不点 on 2006-12-1 at 12:02 AM ]



因为我们亲手创建,这个世界更加美丽。
2006-11-30 12:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wlidan
新手上路

网络幽灵


积分 15
发帖 7
注册 2006-8-29
状态 离线
『第 4 楼』:  

首先要谢谢不点大师的详细分析和指点:)。

经过下午3个小时的测试,算是小有结果。现在看来,前两天我在测试时确实疏忽了一个重要的因素,就是主板BIOS的差异问题、好坏问题。

现在我用原来昨天的配置文件和软件版本,在4台机器上做了测试,结果2台grub能完全正常的运行,另2台则不行。机器均为清华同方的P4 1.7G~2.4G,

只不过正常的2台生产较晚一点罢了。详细情况如下:

先说昨天那台机,清华同方商玑3012,主板BIOS日期2002-1-10,Award V6.00PG,版本THTF L4S5M Ver 1.1a,硬盘40G,IBM IC35L040AVVN07-0,

共7个分区,分别是C:NTFS 5G Win2000Pro系统、D:NTFS 5GWin2KADVS系统、E:FAT32 4G 数据、F:FAT32 1.7G 交换临时文件、G:FAT32 9G 数据

H:FAT32 8.6G 数据  I:FAT32 5G ghost备份。

拔下该硬盘数据线后启动情况依旧,在纯DOS下与USB移动硬盘之间互拷文件正常,下载最新版的Grub依旧。

另一台清华同方超越3000D,测试情况如下

在config.sys加载运行Grub时,屏幕在闪过grub内置菜单后黑屏死机,死机前抢拍的屏幕显示如下图:



用纯DOS启动后运行Grub也是黑屏死机,抢拍的屏幕显示如下图:




用最新版Grub在纯DOS启动后运行也是死机,抢拍的屏幕显示如下图:



在另外2台超越3800D上测试,dos下运行Grub均正常,可能就是主板BIOS较新较完善的原因。

再次感谢不点!!!

2006-12-1 05:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 5 楼』:  

这次 BUG 报告,不同以往几个关于 U 盘的报告,难度显然是最高的。在 sysoft 时空论坛也有类似的报告(你们两位也可以沟通一下,互相了解情况)。我想,这么稀奇古怪的 BUG 的出现,有 BIOS 的原因,也可能有 GRUB 自己的原因。所以,最终解决掉它,可能要花费比较多的周折。

为了能够简化,请强制进入 GRUB 命令行,不要运行 menu.lst。

你传给 grub.exe 一个不存在的命令,它就会进入命令行:

grub.exe --config-file=non

不执行 menu.lst,grub 就可以减少死机的机会了。所以你先这么试试。



因为我们亲手创建,这个世界更加美丽。
2006-12-1 07:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 6 楼』:  

12 月 3 日又上载了一个版本,请继续加紧测试。这个问题不解决,我们就不发布正式版。



因为我们亲手创建,这个世界更加美丽。
2006-12-4 05:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wlidan
新手上路

网络幽灵


积分 15
发帖 7
注册 2006-8-29
状态 离线
『第 7 楼』:  

好的,在我测试之后再将情况传上来,大家一起探讨,共同促进GRUB的发展!

2006-12-4 08:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wlidan
新手上路

网络幽灵


积分 15
发帖 7
注册 2006-8-29
状态 离线
『第 8 楼』:  

由于最近很忙,12月3日Grub的版本未能做详细的测试,抽空仅在3台机器上试了一下,原来在Config.sys中用“device=grub.exe --config-file="/boot/grub/menu.lst"
”加载启动时中途死机的,现在已能正常显示menu.lst中的中文启动菜单,但进一步选择菜单中的软盘镜像启动时,屏幕显示了“kernel /boot/grub/memdisk.gz”后死机,但在另2台机器上全部正常,由于时间原因未能在更多的机器上测试。
请不点剖析原因,也希望能有更多的网友来测试,一起来促进Grub的发展!

2006-12-6 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 9 楼』:  

由于怀疑两个 int15 的中断调用引起死机,所以,在 12-03 的版本中已经把这两个调用推迟到 multiboot kernel 需要它们的时候才执行,这样你就有可能顺利进入 grub 环境了。事情果然是这样的。

但是,不幸的是,(猜测)memdisk 正好是 multi-boot kernel,所以只要运行 memdisk,就又得执行那两个 int15 中断调用。结果就在这时死机了。

你可以避免使用 memdisk,这样就可以躲过死机。我想,到这种程度,我们该结束了。进一步再研究 multi boot kernel 是否必须有这两个 int15 的执行,有点颇费力气的。而且恐怕研究的结果也仍然是“必须有”。

如果我们把 BIOS 的这一 bug 写入 readme 中,那我们就可以说完成任务了。请报告机器的型号、BIOS 厂家版本信息,以便我把它写入 readme 中。在 readme 中将这样描述:XXX BIOS 的 buggy int15 导致 multi boot kernel 不能被启动。

另外得到报告说,12-03 的 grldr 有问题,不能被 boot.ini 启动。所以现在还要解决这个问题。

[ Last edited by 不点 on 2006-12-6 at 10:06 PM ]



因为我们亲手创建,这个世界更加美丽。
2006-12-6 22:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wlidan
新手上路

网络幽灵


积分 15
发帖 7
注册 2006-8-29
状态 离线
『第 10 楼』:  

bug机器的型号是清华同方商玑3012,主板BIOS是Award V6.00PG,BIOS版本THTF L4S5M Ver 1.1a ,BIOS日期2002-1-10。

2006-12-7 22:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: