|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
211 楼』:
wangsea:
> 能否开发一个精简的Grub版本
我目前的答复是,不能。原因前面说过,要真正大规模精简,就得转向汇编语言,有可能将 GRUB 精简至 30K 以内。不过,你可以尝鲜 gandalf 新近创作的 avldr.exe。
> 功能:Grub XXX.img 命令行功能的版本(不需要menu.lst)
此处的问题是(前面也曾经提到过),XXX.img 要装入扩展内存的话,有可能失败。如果此时没有 himem等内存管理程序,那么这有可能实现,但是,在有 himem 等内存管理程序存在的情况下,这将变得很复杂,很困难了。也就是说,把 XXX.img拷贝到物理内存的顶端,这个目的恐怕达不到,拷贝过程有可能会失败(比如如果覆盖掉已经分配了的关键的 XMS内存的话)。如果谁能详细研究 XMS等等这些 DOS下的扩展内存规范,能够顺利实现拷贝的话,那么,他就可能制作出你所说的这种工具。我支持有人做,但我没有时间,也没有兴趣做,即使不考虑内存管理程序的影响,我也不想做(我认为其意义不是很大)。
如果你说的是脱离扩展内存,只使用磁盘介质的仿真(相当于没有 --mem 参数),并且假定 XXX.img 是连续的。这样可以实现你的要求,但是,仍然存在下面的问题:
如果你说的是用 grub 命令实现仿真,然后退回到-------原来的------ DOS,那么,这可是在欺骗 DOS,注意 DOS 有时可以被欺骗,有时它不能被欺骗。
如果你的系统中有一个真实的软驱,你用 XXX.img 仿真(fd0)软盘,这是可以欺骗 DOS 的。如果你的系统中有 n 个硬盘,而你用XXX.img 仿真第 n + 1 个硬盘,这恐怕不行,即使你同时修改了 BIOS 数据区中的软盘和硬盘个数字节,也不行。这是因为,DOS在启动时已经确定了磁盘的总数,在启动之后新增加的磁盘,它都可能不承认的。
还有一个问题是,此时很容易死机,我能想到的死机原因,大致有以下两个方面:
1. 如果仿真程序没有处理好 DOS 常规内存的 arena 结构,则 直接就死掉。
2. 如果仿真了当前 DOS 正在使用的磁盘,则当仿真之后 DOS 可能因为找不到原来真实磁盘上的内容而出错,甚至死掉。
有鉴于以上这些复杂的原因,所以,我不主张别人去做这样的开发。当然了,如果确实有 DOS 高手愿意做,那么这些问题可能都会得到解决的,虽然很不容易。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2005-4-28 00:00 |
|
|
wangsea
中级用户
积分 445
发帖 110
注册 2004-5-28
状态 离线
|
『第
212 楼』:
不点:
我想可能是我没把意思表达清楚,比如我有一个批处理:menu.bat
grub.exe --config-file=(hd0,0)/test/menu.lst
我的menu.lst是这样的:
timeout 0
default 0
kernel (hd0,0)/test/memdisk.gz
initrd (hd0,0)/test/Grub.zip
boot
上面的批处理的内容仅仅是启动一个仿真的磁盘进入系统(不再退回),所以我想如果能去掉menu.lst(如果俺只是想仿真一个磁盘,不使用Grub的菜单功能,那么何必又要写menu.lst呢?),直接地在命令行输入:grub.exe -mem -fdo xxx.img 多好啊。
既然grubfordos可以在批处理中调用menu.lst直接仿真磁盘,那么命令行直接给参数应该可以的吧?(即便有一些目录路径限制这么做也值得的呀!)
[此贴子已经被作者于2005-4-28 13:08:39编辑过]
|
|
2005-4-28 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
213 楼』:
你的意思是将菜单或者命令直接嵌入到命令行中。这个有点意思,应该可以实现。谢谢你提供此建议。请你关注 grub.exe 的开发。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2005-4-28 00:00 |
|
|
wangsea
中级用户
积分 445
发帖 110
注册 2004-5-28
状态 离线
|
『第
214 楼』:
谢谢不点,期待grub的新功能。
|
|
2005-4-28 00:00 |
|
|
gmy
版主
操作系统爱好者
积分 1113
发帖 392
注册 2002-11-11
状态 离线
|
『第
215 楼』:
GRUB菜单中加入引导U盘,不知能否做到?关键在于BIOS对U盘引导的支持不规范,有的形同虚设(USB-FDD,USB-HDD,USB-HDD)
|
DOS之家 http://doshome.com 站长 葛明阳 |
|
2005-4-29 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
216 楼』:
有些BIOS不支持从U盘启动,GRUB能不能从U盘启动?(这当然需要在GRUB里事先加载U盘驱动的)
另,GRUB现在能不能支持多光驱?
[此贴子已经被作者于2005-4-30 1:11:49编辑过]
|
|
2005-4-30 00:00 |
|
|
dato
高级用户
积分 916
发帖 377
注册 2004-3-8
状态 离线
|
|
2005-4-30 00:00 |
|
|
hnlyzhd
高级用户
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
218 楼』:
Quote: | 以下是引用gmy在2005-4-29 23:38:13的发言:
GRUB菜单中加入引导U盘,不知能否做到?关键在于BIOS对U盘引导的支持不规范,有的形同虚设(USB-FDD,USB-HDD,USB-HDD) |
|
USB-ZIP是最有希望的一种可以引导的方式,不过有的BIOS不支持GRUB引导,你可以用安装到软盘的方法以,把GRUB安装到U盘,然后测试,我仅在ASUS和IBM的机子上成功启动
|
我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-4-30 00:00 |
|
|
GONGXP
初级用户
积分 184
发帖 31
注册 2005-3-13
状态 离线
|
『第
219 楼』:
还是关于从netware下远程启动的dos(6.22或者7.1)无法使用grub.exe的问题,试过Avldr情况也一样。netware下远程启动的dos改变了bios向量,int19,和int13,不知可否改改善grub for dos, 能够在这些“污染”了bios的dos中使用?
|
|
2005-4-30 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
220 楼』:
gmy和GOTOmsdos的U盘/光盘相关问题,本人以前说过,无能力解决。
GONGXP的问题,也许将来我们可以一并解决,但是,现在我本人没有开发计划。将来如果改进我们的探测算法,就可能顺便把该问题解决掉。我本人不会专门为了这一个问题而去着手解决它。探测算法的改进,是一个巨大的变化,有相当大的开发难度,是不会优先开发它的。如果2006年年底时能做好就很不错了。如果你不能等待,你可以自己尝试修改 dosstart.S 来实现你的目的。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2005-4-30 00:00 |
|
|
hnlyzhd
高级用户
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
|
2005-5-20 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
222 楼』:
最近都在搞 wangsea 所提到的 grub.exe 的功能增强。真没想到这很麻烦,有许多困难需要克服,不过现在已经完成,在 0.4.1pre5 中实现了。
具体的实现是这样的:并未给 GRUB.EXE 增加新的命令行参数,而是仍旧沿用旧的 --config-file=FILE 格式,不过,对FILE 有新的解释。当 FILE 是以 左括号 "(" 或者 斜杠"/" 或者加号 "+"开头的时候,就仍旧像以前那样,解释为一个配置文件的名字。当 FILE 不是以上述三个字符之一开头的时候,认为 FILE是命令序列,也就是认为把配置文件的内容直接嵌入到 FILE 处了。注意,写在 FILE处的命令如果多于一条,应当用分号分隔开来,GRUB.EXE 会把“分号”自动转换成“换行符”,然后才交给 GRUB 的主程序。最好在 FILE的两边加上双引号。举例如下:
grub.exe --config-file="root (hd0,0);chainloader +1"
你注意到最后的一条 boot 命令是可以省略的。你甚至可以用
grub.exe --config-file="halt"
来关机,或者用
grub.exe --config-file="reboot"
来重启动机器。
也就是说,在 FILE 的位置,你可以填入任何 GRUB 可以识别的命令。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2005-5-26 00:00 |
|
|
Gandalf
中级用户
CPU
积分 362
发帖 96
注册 2004-7-8 来自 北京
状态 离线
|
|
2005-5-26 00:00 |
|
|
wangsea
中级用户
积分 445
发帖 110
注册 2004-5-28
状态 离线
|
『第
224 楼』:
感谢不点,在第一页提供的Grub地址中下吗?真有些迫不及待想试啦。有个建议: 能不能单独开发一个版本的grubfordos或是gurb带上某个参数后就可实现默认启动与grubfordos同一目录的img,不用填写root (hd0,0)这样的绝对磁盘路径(让程序来完成这个操作)。如果路径指定失败,返回一个错误提示后不再启动Gurb, 感觉这样更方便些。
|
|
2005-5-26 00:00 |
|
|
wangsea
中级用户
积分 445
发帖 110
注册 2004-5-28
状态 离线
|
『第
225 楼』:
刚才做了个测试,成功启动了镜像
偶的参数:
grub.exe --config-file="map --mem (hd0,0)/gxms.img (fd0);map --hook;chainloader (fd0)+1"
使用的镜像是偶写的ghost完美中文shell (http://wangsea.ys168.com/ ghost完美中文shell目录下的gxms_hpa.rar)
发现有个问题:
1:第一次因我忘了指定(hd0,0)/gxms.img ,而直接写的是gxms.img,结果菜单出来后我编辑正确并启动镜像后在偶写的图形界面中死机。
2:参数如果第一次就指定正确进入镜像没有问题。
但不管参数正确与否,grub未启动镜像前软驱都一直在响,,直至屏幕上出现参数时才停止。
再次感谢不点提供了这么好一功能给我们使用,期待提供方法避免这个问题。
另外,因dos命令行的字符限制问题,还是我楼上想说的,能否有个默认当前路径,这样可以写更多的命令参数。
[此贴子已经被作者于2005-5-26 21:09:10编辑过]
|
|
2005-5-26 00:00 |
|