![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 00:37 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS启动盘 & LOGO技术 (启动盘室) » 请教不点,有关GRLDR的U盘写入问题 |
| 可打印版本 4,148 / 20 |
| 第1楼 neiljoy | 发表于 2006-07-27 22:34 |
| 初级用户 发帖 58 积分 132 | |
|
请教不点,有关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中? |
|
| 第2楼 fujianabc | 发表于 2006-07-27 22:40 |
| 金牌会员 发帖 1,616 积分 3,467 | |
|
usb如果模拟的是zip,就应该不含mbr,你可以找一些格式化工具重新格式化,使之不包含mbr,u盘的第一个扇区就是dbr。
usboot可以做这样的格式化。 |
|
| 第3楼 neiljoy | 发表于 2006-07-27 23:16 |
| 初级用户 发帖 58 积分 132 | |
|
我的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 ] |
|
| 第4楼 不点 | 发表于 2006-07-28 07:06 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
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 上的启动代码后,才有可能获得成功。 |
|
| 第5楼 neiljoy | 发表于 2006-07-28 08:14 |
| 初级用户 发帖 58 积分 132 | |
|
用 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个扇区中。这样应当更安全些。不知是否行得通? |
|
| 第6楼 neiljoy | 发表于 2006-07-28 08:37 |
| 初级用户 发帖 58 积分 132 | |
|
我用
chainloader (fd0)/io.sys 试过了,回车后即出现: Will boot MS-DOS 7.x from drvive=0x0 grub> 就结束了(没有死机),并没有进入DOS。当然,我在U盘的根目录下肯定有完整的DOS文件。 看来又遇到麻烦了。 |
|
| 第7楼 neiljoy | 发表于 2006-07-28 10:28 |
| 初级用户 发帖 58 积分 132 | |
|
竟然没有键入boot!
可是键入BOOT后却提示: Type the name of the command Tnterpreter, 而在U盘根目录下和内存盘符下均有这一命令呀! |
|
| 第8楼 不点 | 发表于 2006-07-28 11:38 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
估计 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 个扇区,不多也不少)。 这样就好了。 |
|
| 第9楼 neiljoy | 发表于 2006-07-28 14:28 |
| 初级用户 发帖 58 积分 132 | |
|
我用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盘的试验我没有进行。即便这样作了,如你所说,同样会失望的。 |
|
| 第10楼 neiljoy | 发表于 2006-07-28 16:32 |
| 初级用户 发帖 58 积分 132 | |
|
看来不是我的BIOS或者是U盘的问题,因为我用真实软驱试验,也同样如此,是不是有其它问题呢?
|
|
| 第11楼 不点 | 发表于 2006-07-28 19:19 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
我也料到会是这样的情况的。猜测可能是因为 IO.SYS 以这种方式启动就无法访问 A: 盘吧。你试着在 C: 盘上放一个 command.com ,然后当询问时回答 c:\command.com 看看行不行。如果能进入 DOS,你再看能否访问 A:盘。如果 A: 盘不能访问,那么 A:盘上的 msdos.sys, config.sys 也都不能访问。所以,你放进 A:\CONFIG.SYS 里面的命令就无法获得执行。
|
|
| 第12楼 neiljoy | 发表于 2006-07-28 21:09 |
| 初级用户 发帖 58 积分 132 | |
|
我试验过了,如果将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环境,那当然是最好不过了。 |
|
| 第13楼 不点 | 发表于 2006-07-29 18:28 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
用qemu虚拟机的测试结果是,所有这些都正常。GRUB4DOS中有一个fat12grldr.img文件,就是一个可启动的软盘映像。由于MSDOS不是随便可以发布的,所以,我不能把它包括在GRUB4DOS里面;又由于FreeDOS还不够成熟,所以,我也不想把FreeDOS包括进来。但是,你可以把win98的io.sys 和command.com拷贝到软盘映像fat12grldr.img中。把它制作成真实软盘,或者在虚拟机下测试。我的测试是成功的,如果你的不成功,估计又是由于BIOS的某个BUG造成的(当然MSDOS也可能有BUG)。不过这次我就无能为力了,因为BIOS是硬件厂家的事情,而MSDOS又是软件大亨的杰作,实在不好下手。
|
|
| 第14楼 neiljoy | 发表于 2006-07-29 21:51 |
| 初级用户 发帖 58 积分 132 | |
|
我用fat12grldr.img在真实软驱上试用,可以找到command.com,还没有来得及作进一步的测试。不过,经过对比,我发现昨天的问题出在何处:原来是在使用
bootlace.com --floppy 0x00 时,将原来的第一扇区的引导代码由EB 3C 90 改成了EB 3C 0E! 只要将昨天的引导代码改过来,就可以找到command.com了。 因此,7月22日的和7月25日的bootlace.com估计有bug.不知我的看法是否正确? |
|
| 第15楼 neiljoy | 发表于 2006-07-29 22:17 |
| 初级用户 发帖 58 积分 132 | |
|
我检查了你的bootlace.com,发现确实为EB 3C 90,但不知为什么经
bootlace.com --floppy 0x00 后就变成了EB 3C 0E! |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |