无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6999|回复: 18
打印 上一主题 下一主题

求助:map方式无法启动软盘镜像文件,memdisk却可以!

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-11 09:49:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助:map方式无法启动软盘镜像文件,memdisk却可以!
现在才发现GRUB4DOS的强大,目前正在学习中,这是我自己编写的一个启动菜单。
为了测试,我制作了1.44M的软盘镜像,利用bootlace把MBR写进了该镜像中,在VMWARE中加载该软盘镜像做为第一启动媒体,可以正常启动GRUB4DOS。
但是我编写的下面四个菜单中,头两个始终都没有办法启动,后面的两个MEMDISK方法却可以。
不知是我哪里出了错,烦请坛里的高人指点!
先谢谢了!
菜单如下:
color black/cyan yellow/cyan
timeout 30
default /default

title 0.Dos MODE 1 (map)
map --mem (fd0)/win98se.imz
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 1.Dos MODE 2 (map)
map --mem (fd0)/win98se.imz (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 2.Dos MODE 3 (memdisk)
kernel (fd0)/memdisk
initrd (fd0)/win98se.imz

title 3.Dos MODE 4 (memdisk)
kernel (fd0)/memdisk c=80 h=2 s=18 floppy
initrd (fd0)/win98se.imz

另我发现,头两个菜单报错的文字不一样。
而且第二个(1.Dos MODE 2)这一菜单如果在GRUB4DOS里连续启动两次,报错的信息又不一样。
现在把截图传上。
如果需要,我可以把我的软盘镜像上传。

[ 本帖最后由 jmwjy 于 2008-6-11 09:52 AM 编辑 ]

1.gif (2.67 KB, 下载次数: 96)

启动MOD1时出错始终一样

启动MOD1时出错始终一样

2.gif (2.22 KB, 下载次数: 91)

第一次启动MOD2时的出错

第一次启动MOD2时的出错

3.gif (2.16 KB, 下载次数: 99)

第二次启动MOD2时的出错

第二次启动MOD2时的出错
2#
发表于 2008-6-11 11:59:53 | 只看该作者
第一个菜单属于语法错误,map 缺少 仿真磁盘号 (fd0)

第二个之所以失败,是因为你采用了 ZIP 格式的压缩映象。grub 不支持 ZIP 格式的压缩映象,只支持 gz 格式的压缩映象。你可以不压缩(即把 ZIP 解压),或者解压后再用 gzip 压缩工具重新压制成 gz 格式的映像,这样 grub 就可以识别了。

第三、四项之所以成功,是因为 memdisk 支持 ZIP 格式的压缩映象。事实上,memdisk 同时支持 ZIP 和 gz 两种压缩格式。

所以,综合看来,gz 格式的映像具有更好的兼容性。
回复

使用道具 举报

3#
 楼主| 发表于 2008-6-11 12:05:15 | 只看该作者
感谢之至!
真想不到荣获不点大师亲自指点!真的很兴奋!
云雾顿开!

[ 本帖最后由 jmwjy 于 2008-6-11 12:09 PM 编辑 ]
回复

使用道具 举报

4#
发表于 2008-6-11 16:31:20 | 只看该作者
正如电视上看到的奔赴四川参与抗震救灾的人员一样,大家都是一家人,为的是共同的目标。每个人都可能在不同的岗位上贡献自己的力量,有人甚至在瓦砾下为了他人而献出自己的生命。就我来说,能够答复问题是我的幸运,我的机会,我当然会珍惜。如果确实解决了别人的问题,我当然也很兴奋。谢谢你!但不要把我当成英雄,我自知距离英雄还差很远。请把我当成普通兄弟吧。
回复

使用道具 举报

5#
发表于 2008-6-11 16:41:33 | 只看该作者

回复 #4 不点 的帖子

请教不点大师一个问题:GRLDR最少需要占多少个0磁道上的扇区?因为我很想在将要编写的MBR中加入启动GRUB的选项(是不是把这些扇区加载到7C00H及后面的内存空间并跳转过去就可以了?)。

[ 本帖最后由 netwinxp 于 2008-6-11 04:44 PM 编辑 ]
回复

使用道具 举报

6#
发表于 2008-6-11 18:40:57 | 只看该作者
grldr 安装在 MBR 上的只是一个引导头,这个引导头目前是 17 个扇区,但今后可能会增加,直到把整个磁道都用光。

因此,当你确认 grldr 已经安装到 mbr 时,你只要把 0 磁道全部加载到 7c00 处并递交控制权便可。

grldr 的引导头会经过一个查找过程,装载整个grldr文件到内存。所以,你也可以直接装载 grldr 文件到内存,从而达到启动 grub4dos 的目的,而不必装载 MBR 上的引导头。把 GRLDR 装载在任何内存处都可以,只要这个内存处是按照 16 字节对齐的(也就是可以作为某个段的基地址)。

如果你是直接装载整个 grldr 到内存,在传递控制到 grldr 之前,你需要设置好 DX 寄存器的值。其中 DL 是代表启动盘的 BIOS 磁盘号码(00h 是软盘,80h 是硬盘)。而 DH 是 GRLDR 所在分区的号码(如果 GRLDR 在软盘或者光盘上,则请设置 DH=FFh),分区号 0,1,2,3 分别表示硬盘上的四个主分区, 分区号 4,5,6,…… 表示硬盘上的逻辑分区。
回复

使用道具 举报

7#
 楼主| 发表于 2008-6-11 21:11:30 | 只看该作者
原帖由 不点 于 2008-6-11 04:31 PM 发表
正如电视上看到的奔赴四川参与抗震救灾的人员一样,大家都是一家人,为的是共同的目标。每个人都可能在不同的岗位上贡献自己的力量,有人甚至在瓦砾下为了他人而献出自己的生命。就我来说,能够答复问题是我的幸 ...


聪惠的人真的很谦虚!

我接触电脑是从DOS6.22之末,windows95之时开始的,但却一直没有任何作为,所以,不点、猫兄、蛙前辈、啊文、还有时空论坛里的Gandalf等等……(恕我愚昧,不能指出更多的人)在我眼里都是技术英雄,都是对技术有自己独到见解、有过人之处的!像不点大师更是中国人骄傲!在技术上我是绝对崇拜的!

你们的帖子看了很多很多,对我起了很多指点。现在自己用得上的知识,很多也是从你们的帖子里得来的。呵呵,当然崇拜啦!授我业嘛!
回复

使用道具 举报

8#
 楼主| 发表于 2008-6-11 21:18:34 | 只看该作者
说到SYSOFT时空论坛,很奇怪,都好几年了,我都注册不了,不能成为里面的用户……
回复

使用道具 举报

9#
发表于 2008-6-15 22:38:21 | 只看该作者
我很想进步。。。
天天都认真看论坛。。。
然后实操。。。
理解能力太低了我。。。。
回复

使用道具 举报

10#
发表于 2008-6-29 16:01:30 | 只看该作者
最近碰到了和楼主类似的问题,不过我没你那么复杂,用的是Wengier老大的DOS7的软盘镜像,MENU.LST部分内容
如下

# boot from dos.img

map --mem /dos71.img(fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

结果提示 Error 1: Filename must be either an absolute pathname or blocklist


哪位高人也帮偶看看出错的原因啊,谢谢

[ 本帖最后由 sdbbsdbb 于 2008-6-29 04:02 PM 编辑 ]
回复

使用道具 举报

11#
发表于 2008-6-29 16:08:29 | 只看该作者
map --mem /dos71.img(fd0)  需要留一空格吧!换成

map --mem /dos71.img (fd0)
回复

使用道具 举报

12#
发表于 2008-6-29 16:18:36 | 只看该作者
原帖由 xypcmac 于 2008-6-29 04:08 PM 发表
map --mem /dos71.img(fd0)  需要留一空格吧!换成

map --mem /dos71.img (fd0)



是写错了,我的MENU。LST现在已经精简到就这么一句话的程序,可还是提示ERROR1。。。。。


PS:
1、我把GURB.EXE 、MENU.LST 、Edit.exe、dos.img 这四个文件都放在C盘根目录下,应该没啥设置上的问题了吧;

2、刚才又去看了那本“GRUB For DOS 应用教程”,里面曾有说到在DOS下的安装方法是bootlace 0x80,但我执行后变成电脑一启动就进入GRUB界面,用BACK TO DOS 都回不去,只好通过 FDISK/MBR来恢复之。顺便问一问,DOS下使用GRUB不用规定放在什么目录下吧?
回复

使用道具 举报

13#
发表于 2008-6-29 16:29:20 | 只看该作者
再作试验,map --mem /dos71.img (fd0) 改为
     map -- mem /dos71.img (fd0) ,结果提示由ERROR1变成了Error11:unrecognized device string。。。看来今天不是黄道吉日,所以偶手气大大滴不顺。。。。。
回复

使用道具 举报

14#
发表于 2008-6-29 16:46:34 | 只看该作者
文件名和路径写对了吗?

另:bootlace 0x80  这是安装GRUB到硬盘MBR,当然就直接启动GRUB了。

假设你的 DOS71.img 放在C盘根目录,menu.lst可以这么写

title 0. boot MS-DOS71
find --set-root /DOS71.img
map --mem /DOS71.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1

[ 本帖最后由 xypcmac 于 2008-6-29 04:55 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2008-6-29 17:04:27 | 只看该作者
谢谢楼上的兄弟啊,不过现在还是先试试最基本的MAP命令,刚才在DOS.IMG之前加了一个“/”符号,就没出错提示,但又出现如下提示“FAT12 BPB found with 0xEB(jmp) leading the boot sector.probed C/H/S=80/2/18 , probed total sector=2880”,然后屏幕一闪,又回到了GRUB菜单下去了(那个提示还是用了暂停键才看明白滴),不知是啥原因啊
回复

使用道具 举报

16#
发表于 2008-6-29 19:11:32 | 只看该作者
问题已经解决,15楼的问题根本不是问题----自己把后续的语句给删了,当然无法看到结果啦,今天折腾了半天,就差DOS.IMG 前面那个“/”符号,不知为何这个符号这么重要啊?
回复

使用道具 举报

17#
发表于 2008-6-30 09:33:33 | 只看该作者
似乎GRUB4DOS对文件名的大小写也很敏感(UNIX和LINUX是这样的),大小写不同,也会找不到文件——我曾经用EASYBOOT做一个光盘启动菜单,里面有加载GRUB4DOS的项目,MENU.LST里面的文件名先是用了小写(因为我在XP下将文件名改成小写了),结果却提示找不到文件;后来将MENU.LST里面有关的目录、文件名都改成大写,就成功了。补充说明一下,我在EASYBOOT中并没有选择强制为大写(或许文件名一到CD上就强制成大写的了)。
回复

使用道具 举报

18#
 楼主| 发表于 2008-7-3 10:54:16 | 只看该作者

回复 #10 sdbbsdbb 的帖子

你应该去发新贴
在这提问,很容易沉掉的

我想你出错的原因,根你提出的Filename must be either an absolute pathname or blocklist
有关,你的map --mem /dos71.img(fd0) 没有指明dos71.img放在哪里,写成这样:
map --mem (hd0)/dos71.img      (fd0)             //(hd0)这里应该根据你的实际情况写
或者在这一句前面加一句:
find --set--root /dos71.img
去试试吧
回复

使用道具 举报

19#
发表于 2011-8-17 11:05:30 | 只看该作者
GRUB4DOS 看来还是要从基础学起呀!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-25 22:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表