中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: Grub For Dos 问题,请帮忙 上一主题 | 下一主题
SunSpring
初级用户




积分 166
发帖 20
注册 2004-1-2
状态 离线
『楼 主』:  Grub For Dos 问题,请帮忙

用Winimage7.0将MS-DOS写入U盘,可以启动,再将Grub For Dos的所有文件和几个有用的*.img文件Copy到U盘,在用U盘启动后运行Grub.exe,成功载入Grub:
1)map --read-only (fd0)/boot98.img (fd0)
   map --hook
   chainloader (fd0)+1
   rootnoverify (fd0)
   boot
可以成功,但原来A:>里的内容被新的img文件所替代.
2)map --read-only (fd0)/boot98.img (fd1)
map --hook
chainloader (fd0)/boot98.img
rootnoverify (fd1)
boot
失败,不知是什么原因?
有没有办可以启动新的img文件,但不替代原来的A:>里面的内容.
关于map的用法不是太明白,可否讲解一下.谢谢.


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

不甘寂寞的人


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

删除了

[此贴子已经被作者于2004-11-3 18:06:24编辑过]






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

不甘寂寞的人


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

1) 原来A:里的内容被新的img文件所替代

这是当然的了. map 的功能就是干这个的嘛.

2) 这个用法是错误的, 因而失败.

rootnoverify (fd1) 这一句不合适. 原因是, B 盘不能用作启动盘. 只有 A 盘和 C 盘才可以用来引导操作系统.就是说, BIOS 只查找 A 和 C, 不查找别的. 因此后来的操作系统都设计为可从 A 和 C 启动, 一般都不支持从别的盘启动.换句话说, 只能从 0x00 号 和 0x80 号启动. 因此, 在 boot 之前, 只能有两种选择, 一种是

rootnoverify (fd0)

另一种是

rootnoverify (hd0)

写其它的磁盘号码, 都可能会产生错误.

3)  有没有办可以启动新的img文件,但不替代原来的A:里面的内容.
上述 2) 的解释已经说了, 只能从 A 和 C 启动. 因此, 你要想从 img 启动, 必须将 img 映射为 A 或者 C, 如果你的IMG 不含分区表, 它只能映射为 A 而不能映射为 C, 如果 IMG 含有分区表, 则它只能映射为 C 而不能映射为 A.

在你的具体情况中, 你只能将 IMG 映射为 A, 因为 你的 IMG 中没有分区表.
同时, 当 IMG 映射为 A 之后, 系统中原来的 A 就被隐藏了.

你如果想获得 原来的 A, 必须同时使用另外一个映射:

map (fd0) (fd1)

这样, 当你访问 fd1 时, 你实际上访问的是 fd0, 也就是你的 A.

需要说明, 这时你的真实的 B 将不可访问了. 还需要说明, 你的系统中如果没有真实的 B, 则这个办法或许不起作用.

如果你的系统中没有 B, 而你又想用 map (fd0) (fd1) 这条命令, 那就得手动修改 BIOS 数据区中的软盘个数字节了, 将 0x410 处的字节改成 0x67, 就表示系统中有两个软盘了. 当它是 0x27 时表示只有一个软盘.

grub for dos 0.2.0pre13 有一条 write 命令, 可以用来修改内存中的数值, 你可以试试. 注意, write命令一次修改一个长整数, 四个字节, 而不是一个字节. 你用 read 命令读出内存, 然后用 write 命令写入内存.

4) 关于map的用法不是太明白,可否讲解一下

map 没什么特殊的问题, 关于 map,  我写的那篇文章(grub for dos 磁盘仿真命令简介)应该说的差不多了, 你可能已经看过了那篇文章. 你的问题似乎不是在 map, 而是在别的地方, 正如上面所讨论过的那样.






因为我们亲手创建,这个世界更加美丽。
2004-11-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SunSpring
初级用户




积分 166
发帖 20
注册 2004-1-2
状态 离线
『第 4 楼』:  

不点:谢谢你的回复,终于明白是什么原因了.正在试你说的方法.1)用map (fd0) (fd1)解决不了问.2)正在用read&write命令在试,可不可以将read&write用到menu.lst文件里?如何写才可以?3)还有一个问题想请教.用Winimage70将MS-DOS的img文件写到U盘可以启动,但是将安装有Grub的img文件写到U盘无法成功启动.不知道什么原因?

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

不甘寂寞的人


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

如果 1) 解决不了的话, 2) 应当可以了, 没问题的. 在 menu 中也能用 read 和 write.

例如:

read 0x410 读出 0x410 处的长整数值, 把它以 16 进制的形式显示在屏幕上. 假定显示的是:

0x7f004427

然后, 你就可以用

write 0x410 0x7f004467

来将 0x7f004467 写入 0x410 处了.

3) 中的问题我不很明白, 关键是不知道你是采用什么技术来启动 DOS 的,

如果你的 BIOS 直接可以把U盘当作0x00或者0x80之类的磁盘号码来交给操作系统的引导程序,那么,这样的情况下启动GRUB是没问题的.

如果你的 BIOS 不把 U 盘当作磁盘号码来处理, 而你启动 DOS 时使用了特殊的 U 盘驱动程序, 那么, 你可能在启动 GRUB 时会遇到某些困难.

关键在于 BIOS 了. 好的 BIOS 和不好的 BIOS , 差别很大的.









因为我们亲手创建,这个世界更加美丽。
2004-11-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SunSpring
初级用户




积分 166
发帖 20
注册 2004-1-2
状态 离线
『第 6 楼』:  

1)都试过了,好像都不行,不过用Memdsik可以解决A:>内容被替代的问题,但Memdisk对有的img文件支持得不够好,有的img文件启动不了.2)如何才能知道BIOS用什么技术启动DOS.我用的是ASUS P4P800主板,BIOS里面有关于USB启动的选项(AutoFloppy,HDD,ZIP等),我选择的是Auto.启动完成后,如何知道BIOS用了那种启动方法?

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

不甘寂寞的人


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

看来我说的可能都不符合你的实际, 抱歉无能为力了.
DOS/GRUB这类系统, 都不直接访问磁盘控制器命令, 而是通过 int13 接口来访问磁盘设备. 如果 BIOS 支持通过 int13来访问 U 盘, 那么 DOS 以及 GRUB 是无法察觉到这和真实的磁盘有什么不同的. 只要你遇到任何问题, 任何异常, 这都说明 BIOS没有正确地将 U 盘连接到 int13 接口上来.

关于 你的华硕主板的启动选项(Auto,Floppy,HDD,ZIP等)我无法提供建议, 我从未接触过有 U 盘启动能力的机器. 你自己可以尝试 Floppy 等选项, 看是否会成功.





因为我们亲手创建,这个世界更加美丽。
2004-11-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cwy
初级用户




积分 145
发帖 4
注册 2002-12-17
状态 离线
『第 8 楼』:  

不点朋友高手,钦佩!请教:老主板不支持U 盘启动,无新的BIOS驱动升级,是否真的没有办法使的老主板支持U 盘启动了,能否有什么变通办法?

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

不甘寂寞的人


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

我没有接触过这类事情,因此不可能有经验。我只能凭空想象一下了:-) 我的意见只能作为参考。

所谓主板,所谓 BIOS,以及所谓的 升级,无非都是把 ROM 程序修改一下罢了。如果由于某种原因我们无法修改 ROM 程序,我们还有另外一个办法,那就是对 BIOS 进行“马后炮”式 的修补。

DOS 其实也可以看成是 BIOS 的一个补丁,只不过这个补丁大了点。这是题外话。

转到正题上。 可以替 BIOS 写一段 U 盘驱动程序,BIOS 启动硬盘或软盘之后,让这个补丁运行,并驻留在常规内存的高端,也就是病毒喜欢驻留的地方。

这个补丁所做的全部工作,就是把 U 盘的操作定向到某个磁盘号码,比如软盘号码 0x00。假定这一切都在 DOS 下完成。这时,你运行GRUB.EXE 就可以从你的 U 盘引导某个系统了。 注意此时的 U 盘就是 int13 所能够识别的某个磁盘,例如是 软盘 0x00。

当然了,这足够罗嗦的,很费事,所以,这只是理论上行得通,实际上很不容易实现。主要是那个 补丁不容易写出来。

我们应当向前看,毫不留情地淘汰那少数旧的机器。在它们上面劳神是不值得的。








因为我们亲手创建,这个世界更加美丽。
2004-11-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cwy
初级用户




积分 145
发帖 4
注册 2002-12-17
状态 离线
『第 10 楼』:  

不点朋友高见,谢谢!

2004-11-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: