无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
751#
发表于 2011-4-15 11:23:46 | 只看该作者
原帖由 jianliulin 于 2011-4-15 09:39 发表
建议grub4dos的外部命令把编译日期记录在某个固定的位置,(比如标志前10个字符表示编译日期),原因是外部名会时不时更新,用户使用的外部命令其很难知道是什么时候的版本,出了问题也不利于反馈给作者,若有版 ...


嗯,有考虑在标志前放置这个编译日期。可能是直接字符型的像2011-04-15或类拟GRUB4DOS一样的,使用一个十进制数20110415.

不过因为这个没有强制性规定,所以...
回复

使用道具 举报

752#
发表于 2011-4-15 12:13:58 | 只看该作者
原帖由 chenall 于 2011-4-15 11:23 发表


嗯,有考虑在标志前放置这个编译日期。可能是直接字符型的像2011-04-15或类拟GRUB4DOS一样的,使用一个十进制数20110415.

不过因为这个没有强制性规定,所以...


GRUB4DOS 的十进制数在什么位置???
回复

使用道具 举报

753#
发表于 2011-4-15 13:06:53 | 只看该作者
在GRUB4DOS环境下直接读内存0X8278的值就是了。

对于文件目前的偏移位置如下(不知是不是固定的,)

GRLDR在偏移0X2078处。
GRUB.EXE在偏移0X5878。
回复

使用道具 举报

754#
发表于 2011-4-15 14:22:52 | 只看该作者

回复 #757 chenall 的帖子

新版的 grub.exe 在偏移 0x1F0 处(一个字节),存放了头部 dosstart.S 所占用的扇区数。

grldr 的头部永远占用 16 个扇区(也就是 0x2000 个字节)。

去掉头部,就是 pre_stage2 了。pre_stage2 的开头便是 asm.S 的编译结果。

[ 本帖最后由 不点 于 2011-4-15 14:24 编辑 ]
回复

使用道具 举报

755#
发表于 2011-4-15 15:22:15 | 只看该作者

回复 #758 不点 的帖子

这样就方便了,对于GRLDR
直接读取偏移0X2078的值(32位)

GRUB.EXE先读一下0X1F0处一个字节的值*512+78就是了
回复

使用道具 举报

756#
发表于 2011-4-15 15:33:56 | 只看该作者
@chenall
已有grldr,想加上一个内容尽量固定的小文件派生出grub.exe(内置菜单可以空)。
有无办法用g4d完成。
我看过它们大部分是相同的。
pe里现在两个文件都有,想节省体积。
回复

使用道具 举报

757#
发表于 2011-4-15 16:13:56 | 只看该作者

回复 #760 pseudo 的帖子

你可以自己尝试一下,根据前面的资料我们可以知道。
GRUB.EXE和GRLDR后面的内容都是一样的都是pre_stage2

GRLDR在偏移0X2000开始的内容就是pre_stage2

GRUB.EXE在先读一下0x1F0处的值再*512的偏移地址就是pre_stage2

所以只要需要截取GRUB.EXE前面的文件头内容再加上GRLDR从偏移0X2000开始处的内容就可以得到GRUB.EXE了

使用一个批处理就可以完成上面的操作。
流程如下。
1.先获取grub文件头的大小,并设为一个变量(使用扇区来表示,直接读0x1f0处的值一个字节就是了)
2.再获取grldr文件的大小,再设一个变量(使用扇区来表示).
3.计算需求空间
grub文件头的大小+grldr文件大小得到需要的扇区数量



4.map (md)+上面得到的扇区数量 (rd)

dd if=()/grub_start of=(rd)+1

dd if=()/grldr of=(rd)+1 skip=0x10 seek=grub.exe文件头大小(扇区)


如果没有什么问题的话最后的(rd)+1就是grub.exe了
回复

使用道具 举报

758#
发表于 2011-4-15 17:00:14 | 只看该作者
有点麻烦。GRUB.EXE文件头不定,似乎不能单纯基于grldr动态生成,以达到一劳永逸的目的。
可能每一次更新,都要修改这个批处理,都要重新截取GRUB.EXE文件头。
如0PE使用的话,需要在dos内核准备相应大小的“0”字节空文件……

[ 本帖最后由 zxw 于 2011-4-15 17:14 编辑 ]
回复

使用道具 举报

759#
发表于 2011-4-15 18:51:13 | 只看该作者
@zxw
事实上grub.exe的文件头基本上都是没有什么变化的。
而且一个grub.exe的文件头配合另一个版本的pre_stage2一般没有多大关系的。

所以使用GRLDR+批处理+一个grub.exe的文件头(可以在编译GRUB4DOS之后在stage2目录下找到dosstart这个就是了,或者从GRUB.EXE截取)动态生成一个GRUB.EXE是可行的。
回复

使用道具 举报

760#
发表于 2011-4-15 23:21:45 | 只看该作者
把grub.exe的头文件续尾到grldr菜单后面去,是否可行?

[ 本帖最后由 jianliulin 于 2011-4-15 23:29 编辑 ]

dosstart.rar

9.12 KB, 下载次数: 20, 下载积分: 无忧币 -2

回复

使用道具 举报

761#
发表于 2011-4-16 14:10:24 | 只看该作者
新的版本已经上传。
1.md5crypt命令支持参数。直接把参数作为字符串计算成md5.
2.支持在菜单中使用变量。

@jianliulin
也是可行的,不过没有必要,我觉得按照pseudo的想法,把这个dosstart压缩后放在镜像里面(这个基本上是不会改变的),这样至少可以节省一个GRLDR文件大小。
回复

使用道具 举报

762#
发表于 2011-4-16 16:35:57 | 只看该作者
接下来的问题:如何定位grldr?

恐怕grldr自己都不知道。很可能要从内存获取grldr或pre_stage2。
它载入内存哪里?是连续的吗?载入后动态改变了什么?
回复

使用道具 举报

763#
发表于 2011-4-16 18:57:17 | 只看该作者
从磁盘上获取 grldr 文件最可靠。内存中运行着的,有些变量已经改变了,不是启动之前未初始化的状态了。甚至连代码都移动了。
回复

使用道具 举报

764#
发表于 2011-4-21 08:40:19 | 只看该作者
回复

使用道具 举报

765#
 楼主| 发表于 2011-4-21 09:15:56 | 只看该作者
回复

使用道具 举报

766#
发表于 2011-4-21 10:16:21 | 只看该作者
诸位,问题在哪里,还是没能定位。都是猜测。要准确的定位。

比如说,在虚拟机下用同样的过程,看看有问题吗?如果有问题,那就是grldr的bug。如果在虚拟机上测试没问题,那就是真实机器BIOS的bug。

这很容易确定的,不难啊。怎么就没得到一个确定的答复呢?

对于同样内存的机器(不管是虚拟机还是真实机),只要有一台启动正常,就表明grldr没有问题(因此判断出是故障机器的 BIOS 的问题)。如果用虚拟机,请把虚拟机的内存设置为所希望的内存,与真实机器的情况一样。

如果在所有的情况下都出现问题,那就可以判断是 grldr 的问题了。

就是说,先把大的方向搞明白,确定问题的性质,然后再细化研究,是哪一部分的问题,就解决哪一部分的问题,很清晰。

而现在的情况是,大的方向不明,胡乱猜测。

[ 本帖最后由 不点 于 2011-4-21 10:42 编辑 ]
回复

使用道具 举报

767#
发表于 2011-4-22 11:07:45 | 只看该作者
@jianliulin
已经为外部命令添加编译日期。
所有的外部命令已经重新编译打包上传
文件可以在以下地址中
http://grubutils.googlecode.com/files/grub4dos_cmd-2011-04-22.zip

在可执行文件签名的前4个字节是编译日期(十进制的)
比如今天上传的外部命令,是20110422使用十六进制存放结果是56 dc 32 01

你可以试一下。
回复

使用道具 举报

768#
发表于 2011-4-22 11:49:31 | 只看该作者
原帖由 chenall 于 2011-4-22 11:07 发表
@jianliulin
已经为外部命令添加编译日期。
所有的外部命令已经重新编译打包上传
文件可以在以下地址中
http://grubutils.googlecode.com/files/grub4dos_cmd-2011-04-22.zip

在可执行文件签名的前4个字 ...



太棒了,!!!!  ,另外好像 unitest 文件日期不对,

回复

使用道具 举报

769#
发表于 2011-4-22 11:54:59 | 只看该作者
建议增强wenv对含空格文件的处理,如ls一样需要对空格添加转义符。

[ 本帖最后由 zxw 于 2011-4-22 11:56 编辑 ]
回复

使用道具 举报

770#
 楼主| 发表于 2011-4-22 12:06:10 | 只看该作者
SNAKE,贪吃蛇
VBMP,加载背景图?测试没效果

找到了:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=187671&highlight=%2Bchenall

[ 本帖最后由 zhaohj 于 2011-4-22 14:15 编辑 ]
回复

使用道具 举报

771#
发表于 2011-4-22 12:53:42 | 只看该作者
@jianliulin
unitest这个程序是用于测试unifont字体的,没有什么用处,我忘了改了。

@zxw
sorry!我没看明白你所要表达的意思?wenv都是直接调用GRUB4DOS的功能进行文件处理的。所以GRUB4DOS的要求同样对WENV生效。

@zhaohj
snake,就是一个贪吃蛇游戏,很简单的,用了直接写屏。
vbmp可以自己找一下论坛的专贴。
回复

使用道具 举报

772#
发表于 2011-4-22 13:11:25 | 只看该作者
ghostpwd 文件没有外部命令的标志
回复

使用道具 举报

773#
发表于 2011-4-22 13:29:53 | 只看该作者
OK,谢谢提醒,ghostpwd和unitest已重新编译。

上面的下载地址文件已经更新。请重新下载(可能需要清空一下缓存)
回复

使用道具 举报

774#
发表于 2011-4-22 16:15:06 | 只看该作者
原帖由 chenall 于 2011-4-22 12:53 发表
@zxw
sorry!我没看明白你所要表达的意思?wenv都是直接调用GRUB4DOS的功能进行文件处理的。所以GRUB4DOS的要求同样对WENV生效。

...




[ 本帖最后由 zxw 于 2011-4-22 16:16 编辑 ]
回复

使用道具 举报

775#
发表于 2011-4-22 17:10:00 | 只看该作者
原帖由 zxw 于 2011-4-22 16:15 发表

119015
119016


这样子就明白了。
试试这个,简单处理了一下。

wenv-20110422.zip

14.82 KB, 下载次数: 16, 下载积分: 无忧币 -2

回复

使用道具 举报

776#
发表于 2011-4-22 17:25:52 | 只看该作者

回复 #779 chenall 的帖子

问题依旧。注意:
有两个问题:
一是空格的处理;二是多了个Z。

[ 本帖最后由 zxw 于 2011-4-22 17:27 编辑 ]
回复

使用道具 举报

777#
发表于 2011-4-22 17:58:16 | 只看该作者
原帖由 zxw 于 2011-4-22 17:25 发表
问题依旧。注意:
有两个问题:
一是空格的处理;二是多了个Z。

我测试是正常的,可能是传错了。

20110422175508429.png (8.7 KB, 下载次数: 146)

20110422175508429.png

wenv-2011-04-22.zip

14.82 KB, 下载次数: 33, 下载积分: 无忧币 -2

回复

使用道具 举报

778#
发表于 2011-4-22 21:18:56 | 只看该作者

回复 #781 chenall 的帖子

OK,测试正常。..
回复

使用道具 举报

779#
发表于 2011-4-25 12:02:41 | 只看该作者
@chenall:
可否增设一个内置变量,其值保存command指向的路径?或者设置一个“通用”的内置变量,保存最后执行命令的“返回值”?
虽然可以用command命令来截取,但总觉得麻烦了一点。



[ 本帖最后由 zxw 于 2011-4-25 12:17 编辑 ]
回复

使用道具 举报

780#
 楼主| 发表于 2011-4-25 15:26:27 | 只看该作者
原帖由 zxw 于 2011-4-25 12:02 发表
@chenall:
可否增设一个内置变量,其值保存command指向的路径?或者设置一个“通用”的内置变量,保存最后执行命令的“返回值”?
虽然可以用command命令来截取,但总觉得麻烦了一点。

119297


找到了,竟然放在3~4M之间:

[ 本帖最后由 zhaohj 于 2011-4-25 15:32 编辑 ]

Snap1.jpg (44.39 KB, 下载次数: 137)

Snap1.jpg

Snap2.jpg (14.03 KB, 下载次数: 137)

Snap2.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 23:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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