|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『楼 主』:
请教不点,有关GRLDR的U盘写入问题
今天我试着用bootlace.com将GRLDR的引导程序写入到USB_ZIP上。在写之前,我就在想,USB_ZIP在GRUB中是认作FD,但它实际上又有着类似硬盘的MBR和DBR,那么用bootlace写入引导程序时,它会记录在MBR上呢,还是会记录在DBR上。如果写入在DBR扇区上,那么当U盘从GRUB启动后,就进入不了U盘的DOS状态了。果然,这样的情况发生了。
我的问题是,对于USB_ZIP模式的U盘,能否用什么办法将GRLDR写入到MBR中,而不是写入到DBR中?
|
|
2006-7-27 22:34 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
2 楼』:
usb如果模拟的是zip,就应该不含mbr,你可以找一些格式化工具重新格式化,使之不包含mbr,u盘的第一个扇区就是dbr。
usboot可以做这样的格式化。
|
|
2006-7-27 22:40 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
3 楼』:
我的U盘在BIOS中是认作USB_ZIP的,而且只有这个USB的启动项,所以要从U盘启动,必须将它格式为USB_ZIP。
还有,我用了不少格式化工具,格式化后的U盘BIOS都不认,还就是惠普的U盘格式工具才行。
另外,你可能还不太明白我的意思,我就是想让GRUB的引导程序写入MBR,这样从GRUB启动后,也可以进入到U盘的DOS环境下。
[ Last edited by neiljoy on 2006-7-27 at 23:19 ]
|
|
2006-7-27 23:16 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
4 楼』:
neiljoy 已经说明了,用 bootlace 将 GRLDR 安装在 DBR 是可行的,我是说,它可以成功启动到 GRUB 状态。我猜想你写入的操作是这样的:在 DOS 下执行
bootlace.com --floppy 0x00
只要你能进入 GRUB,你就可以用 GRUB 的
chainloader (fd0)/io.sys
boot
来启动 U 盘上的 DOS 了,很简单的。
你的 U 盘 BIOS 不支持 USB-HDD 启动,因此,你的 U 盘上的 MBR 失去了它的作用,就像它不存在一样。所以,你就不要设想着把 GRLDR 安装到它上面去了。如果你很感兴趣,想彻底弄明白的话,你倒是可以试试看。然而,如果你安装到 MBR 之后没有达到它的效果,你就不要感到失望了。安装到 U 盘 MBR 的方法其实很简单:把系统启动到一个可以访问 U 盘 MBR 的状态,比如进入了 Windows,然后进入 DOS 提示符状态,执行:
bootlace.com 0x80
然后记住把 GRLDR 拷贝到 U 盘的根目录。
这是假定此时 U 盘被系统确定为 0x80 号硬盘。你用win98 的 fdisk 命令可以发现 U 盘的 BIOS 号码。一般是 0x80, 0x81, 0x82, 或者0x83。
不过,由于 你的 U 盘 BIOS 存在缺陷,GRLDR 在 MBR 的启动也有可能失败,所以,你还得等待我修复了 GRLDR 在 MBR 上的启动代码后,才有可能获得成功。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-28 07:06 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
5 楼』:
用 bootlace 将 GRLDR 安装在 DBR 是可行的,我是说,它可以成功启动到 GRUB 状态。我猜想你写入的操作是这样的:在 DOS 下执行
bootlace.com --floppy 0x00
只要你能进入 GRUB,你就可以用 GRUB 的
chainloader (fd0)/io.sys
boot
来启动 U 盘上的 DOS 了.
我正是这样作的。但进入DOS这部分我是直接利用menu.lst来执行的。我真疏忽,竟忘记用命令行来进入DOS了。不过,菜单中的
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2
也应当是可以执行的呀。我过一会儿试一下。
另外,你说的在“Windows,然后进入 DOS 提示符状态,执行:
bootlace.com 0x80
然后记住把 GRLDR 拷贝到 U 盘的根目录”
我担心是否会把U盘认作0X80,万一是我的第一硬盘呢?
我想如果试的话,最好是将我U盘MBR中的0x01b8至0x01ff复盖到GRLDR.MBR的0x01b8至0x01ff,然后再将新生成的grldr.mbr复盖到U盘的头12个扇区中。这样应当更安全些。不知是否行得通?
|
|
2006-7-28 08:14 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
6 楼』:
我用
chainloader (fd0)/io.sys
试过了,回车后即出现:
Will boot MS-DOS 7.x from drvive=0x0
grub>
就结束了(没有死机),并没有进入DOS。当然,我在U盘的根目录下肯定有完整的DOS文件。
看来又遇到麻烦了。
|
|
2006-7-28 08:37 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
7 楼』:
竟然没有键入boot!
可是键入BOOT后却提示:
Type the name of the command Tnterpreter,
而在U盘根目录下和内存盘符下均有这一命令呀!
|
|
2006-7-28 10:28 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
8 楼』:
估计 IO.SYS 把其他盘当作启动盘了。你试试在Type the name of the command interpreter 时敲入 A:\command.com
这个问题我也记住了,并在以后找机会解决。
关于安装 GRLDR 到U盘MBR的问题,你可以按照如下步骤操作:
1。把 U 盘最开头的 63 个扇区(当然第一扇区是MBR了),硬拷贝到一个文件中,比如叫做 U_MBR_63
2。用 bootlace.com U_MBR_63 将 GRLDR 安装到 U_MBR_63 上。
3。用 16 进制编辑器观察一下 U_MBR_63 的内容,看看有无异常(应该没有异常)。
4。把 U_MBR_63 再写回到 U 盘上(硬拷贝到 U 盘上,正好覆盖 U 盘最开头的 63 个扇区,不多也不少)。
这样就好了。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-28 11:38 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
9 楼』:
我用A:\command.com 以及在config.sys中使用
shell=a:\command.com /P /E:640或shell=command.com /P /E:640
均试过,仍然找不着command.com,估计这与DBR中U盘参数部分(BPB)有关,因为GRUB获取的参数与DOS获取的参数不尽相同(柱面数不同,因而总扇区数也不同),从而影响了文件的读取。把它作为一个遗留问题吧。反正我可以在DOS下进入GRUB。
另外,我对两个U_MBR_63文件(bootlace前后)作了比较,发现在63个扇区中,仅前面12个扇区不同,但第一扇区(MBR)中分区表部分是没有变化的。
我想文件的读取主要由DBR中BPB部分所决定,而不是MBR,因此复盖U盘的试验我没有进行。即便这样作了,如你所说,同样会失望的。
|
|
2006-7-28 14:28 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
10 楼』:
看来不是我的BIOS或者是U盘的问题,因为我用真实软驱试验,也同样如此,是不是有其它问题呢?
|
|
2006-7-28 16:32 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
11 楼』:
我也料到会是这样的情况的。猜测可能是因为 IO.SYS 以这种方式启动就无法访问 A: 盘吧。你试着在 C: 盘上放一个 command.com ,然后当询问时回答 c:\command.com 看看行不行。如果能进入 DOS,你再看能否访问 A:盘。如果 A: 盘不能访问,那么 A:盘上的 msdos.sys, config.sys 也都不能访问。所以,你放进 A:\CONFIG.SYS 里面的命令就无法获得执行。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-28 19:19 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
12 楼』:
我试验过了,如果将command.com放到某个分区的根目录下,是可以找到的,当然,这个分区必须是FAT分区。但是,即使找到了command.com,如果键入
A:\>dir
显示:File not found.
可见,此时的系统(应是DOS系统)虽然认软盘,却不能访问A盘上的文件。
启动过程按先后顺序是io.sys、config.sys、msdos.sys、command.com、autoexec.bat…,所以,在config.sys中设置command.com的路径应该是有效的,但问题是此时根本无法访问A盘。
我觉得,解决这一问题还是有实际意义的,现在U盘(包括移动硬盘等)的使用愈来愈普遍。从U盘的GRUB启动后,如果还能够进入U盘的DOS环境,那当然是最好不过了。
|
|
2006-7-28 21:09 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
13 楼』:
用qemu虚拟机的测试结果是,所有这些都正常。GRUB4DOS中有一个fat12grldr.img文件,就是一个可启动的软盘映像。由于MSDOS不是随便可以发布的,所以,我不能把它包括在GRUB4DOS里面;又由于FreeDOS还不够成熟,所以,我也不想把FreeDOS包括进来。但是,你可以把win98的io.sys 和command.com拷贝到软盘映像fat12grldr.img中。把它制作成真实软盘,或者在虚拟机下测试。我的测试是成功的,如果你的不成功,估计又是由于BIOS的某个BUG造成的(当然MSDOS也可能有BUG)。不过这次我就无能为力了,因为BIOS是硬件厂家的事情,而MSDOS又是软件大亨的杰作,实在不好下手。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-29 18:28 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
14 楼』:
我用fat12grldr.img在真实软驱上试用,可以找到command.com,还没有来得及作进一步的测试。不过,经过对比,我发现昨天的问题出在何处:原来是在使用
bootlace.com --floppy 0x00
时,将原来的第一扇区的引导代码由EB 3C 90 改成了EB 3C 0E!
只要将昨天的引导代码改过来,就可以找到command.com了。
因此,7月22日的和7月25日的bootlace.com估计有bug.不知我的看法是否正确?
|
|
2006-7-29 21:51 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
15 楼』:
我检查了你的bootlace.com,发现确实为EB 3C 90,但不知为什么经
bootlace.com --floppy 0x00
后就变成了EB 3C 0E!
|
|
2006-7-29 22:17 |
|