无忧启动论坛

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

grub4dos-0.4.5c-2012-12-13(set timeout back to 1. set safe_mbr_hook to 0)

  [复制链接]
跳转到指定楼层
1#
发表于 2012-9-21 14:55:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
grub4dos-0.4.5c-2012-10-05


解决与 grubutil、bootice 等外部菜单修改工具的兼容性问题。

试试看,解决了没有?



更新到 17 日的版本,方便大家下载测试。

[ 本帖最后由 不点 于 2012-12-13 19:07 编辑 ]

grub4dos-0.4.5c-2012-10-17_2.7z

259.25 KB, 下载次数: 1512, 下载积分: 无忧币 -2

支持扩展键 F11、F12

grub4dos-0.4.5c-2012-10-22.7z

262.97 KB, 下载次数: 533, 下载积分: 无忧币 -2

代码清理

grub4dos-0.4.5c-2012-11-11.7z

263.97 KB, 下载次数: 955, 下载积分: 无忧币 -2

考虑15M内存孔洞。开放 PXE。

grub4dos-0.4.5c-2012-11-12.7z

264.71 KB, 下载次数: 429, 下载积分: 无忧币 -2

增加 map --in-situ=FLAGS 用法

grub4dos-0.4.5c-2012-11-23.7z

258.8 KB, 下载次数: 465, 下载积分: 无忧币 -2

minor fixes on geometry_func and others

grub4dos-0.4.5c-2012-12-13.7z

255.3 KB, 下载次数: 461, 下载积分: 无忧币 -2

set timeout back to 1. set safe_mbr_hook to 0.

2#
发表于 2012-9-21 14:58:58 | 只看该作者
给介绍一下,好吗?
我这边时空上不去。
回复

使用道具 举报

3#
 楼主| 发表于 2012-9-21 15:08:47 | 只看该作者
原帖由 2011czmxbb52 于 2012-9-21 14:58 发表
给介绍一下,好吗?
我这边时空上不去。


9月8日引入了一个 bug,这次是修复 9月8日的 bug 的。

以前的版本不受影响。如果 9 月 8 日以前的旧版本够用,无需下载新版本。

对于 9月8日以后发布的版本,如果有下载的,必须更新为刚才发布的版本。
回复

使用道具 举报

4#
发表于 2012-9-21 16:22:07 | 只看该作者
还在用0.4.4 。
回复

使用道具 举报

5#
发表于 2012-9-21 21:07:18 | 只看该作者

回复 #3 不点 的帖子

这个地方有个工具,可对较新版本的  GRLDR 进行改名和内置菜单的导入、导出操作:

http://code.google.com/p/grubutils/downloads/list  。

工具名为:grubinst-1.3  。

经测试,现在,这个工具对 2012-09-21 版的 GRLDR 可以改名,但不能对内置菜单进行导入和导出的操作


(这个工具对 Grub4DOS 2012-06-19 之前版本的改名和菜单的导入、导出均无问题。之后的版本,一直到 2012-09-21 之前的版本未经测试)

错误提示信息:

D:\>grubmenu -r export grldr menu.lst
grubmenu: read fails (pmenu)

请问,内置菜单的位置是不是改变了?

[ 本帖最后由 blank007 于 2012-9-21 21:11 编辑 ]
回复

使用道具 举报

6#
 楼主| 发表于 2012-9-21 21:30:59 | 只看该作者

回复 #5 blank007 的帖子

新的测试版主要有两项比较大的改进:

1、支持 lzma 压缩格式的内置菜单。
2、支持在菜单尾部附加一些 font 行。

具体的讨论在时空论坛,希望时空论坛尽快恢复正常。

旧版的 grubinst 不能支持 lzma 压缩格式的内置菜单。但是应该支持未压缩的内置菜单。

回复

使用道具 举报

7#
发表于 2012-9-21 21:58:59 | 只看该作者
grub4dos-0.4.5c-2012-06-19.7z
grub4dos-0.4.6a-2012-06-19.7z
可以用 BOOTICE & grubmenu 來編輯菜單
但樓上的附件 grub4dos-0.4.5c-2012-09-21.7z 卻不行編輯菜單。
回复

使用道具 举报

8#
 楼主| 发表于 2012-9-21 22:09:33 | 只看该作者

新的 LZMA 压缩格式内嵌菜单的设计思路(复制时空论坛的帖子)

jianliulin 在无忧论坛提到 font 续尾的问题,我觉得这个问题有可能解决,但是在设计方面,还是需要仔细考虑的。现有的菜单是处于 GRLDR / GRUB.EXE 的尾部,因此,这个 font 可以与菜单一并处理。

初步设想如下。

对于未压缩的菜单,依旧保持以前的格式,放在内存 0x800 处,最大长度 4K。

对于 LZMA 压缩的格式,放在 1M 处。

此时,菜单的尾部可以附加一个小的字库。

LZMA 格式的菜单在 GRLDR / GRUB.EXE 文件中的位置也与以前一样。但它的长度没有限制,只要符合 GRLDR / GRUB.EXE 文件的总长度限制就行。

菜单程序之后紧跟着精简的 unifont.hex 格式的字库。它们其实都是文本格式,中间没有 00 字节。菜单处理程序很容易识别出 font,在遇到 font 时会自动把它当作菜单结束的标志。

同理,font 处理程序也会忽略菜单开头的程序代码,自动找到 font 的开头进行处理。

注意,菜单和font都是文本文件,因此,它们是做成一个文件的,然后经由 lzma 压缩。压缩之后,放在 GRLDR / GRUB.EXE 的尾部。

对于未压缩的菜单,不支持在尾部附加 font,依旧是按照以前的处理办法。压缩和未压缩,是识别新旧格式的一种标志或手段。

另外,也不支持 GZ 压缩。因为 GZ 格式有缺陷,不方便用于这个地方。

附件中是一个前期的工作,这个工作仅仅让 LZMA 格式不受文件后缀的约束。就是说,LZMA 能够以其文件头部的格式来作为标志,无需文件名的后缀 .LZMA。

但是,对这个 LZMA 格式做了一定的限制。字典的大小应该是 2 的 n 次方,否则不认为是合法的 LZMA 格式。未压缩文件的原始大小应该不是 -1,否则也不认为是合法的 LZMA 格式。
回复

使用道具 举报

9#
 楼主| 发表于 2012-9-21 22:22:17 | 只看该作者
LZMA 格式有一个缺陷,就是它不像 gz 那样在文件开头有个标志。

LZMA 没有明显的标志,只能靠它本身的结构给出间接的标志。

它的开头第一个字节是 “特性”字节,最大取值是 0xE0。

接下来的四个字节是字典大小。通常字典都是 2 的 n 次方的形式。所以,以前的镜像通常都满足这个要求。我们主要利用这点来区分是否合法的 LZMA 格式。

接下来的 8 个字节是原始未压缩文件的大小。有些 LZMA 制作工具制作出来的  LZMA 格式总是用 -1 来表示原始未压缩文件的大小是未知的。我们不支持这样的情况。因为这种情况把 LZMA 的最重要的优点抹杀了,所以,它制作出来的 LZMA 文件对 grub4dos 来说就是无用的。所以我们不支持那样的工具软件。

这就是 LZMA 格式开头 13 个字节的意义。用 hex 工具打开 LZMA 文件一看便知。
回复

使用道具 举报

10#
 楼主| 发表于 2012-9-21 22:42:19 | 只看该作者
测试版来了。

不过对一楼的计划稍微作了一点改动,压缩菜单的内存位置是 0x110000,即 1M+64K 处。

这是因为 1M 以上的 64K 已经被用得很多了,所以,向后挪动到不容易引起冲突的地方。

压缩菜单的最大长度是 256K,因此,用文件的表示法,它可以这样表示:(md)0x880+0x200。

但是,GRLDR 文件的长度是有限制的,它好像不能够超过 384K,所以,为了安全稳定,你应该保证 GRLDR 在 384K 以内。

你需要把你的内置菜单和 font 做成一个文件。菜单在头部,font 在尾部。然后用 LZMA 压缩工具进行压缩。压缩工具应该与 grub4dos 兼容,正如前面提到的。

压缩后的文件,就可以用工具放在原来 GRLDR / GRUB.EXE 的内置菜单位置了。如果目前没有工具可用,那么可以手动来做。

如果压缩后的菜单的长度超过 4K,那么必须修正 grub.exe 的 EXE 头部中的文件 “ 总扇区数 ”域。让其等于 EXE 的总扇区数(最后一个不足 512 字节的尾巴不包括在内)。菜单超过 4K 时,GRLDR 无需处理,因为它不运行在 DOS 下。

更正:根据 EXE header 的文档,位于偏移 0x04 的 “ 总扇区数 ” 应该包括 EXE 文件的最后一个不足 512 字节的扇区,即,最后一个不足 512 字节的扇区也算一个扇区,记录在 0x04 处的 “ 总扇区数 ” 中。
回复

使用道具 举报

11#
 楼主| 发表于 2012-9-21 22:45:15 | 只看该作者
jianliulin 发表于 2012-9-16 00:45
    菜单和字体文件之间需要用什么字符来分隔吗?



前面说过了,它们都是文本文件,直接连接起来就可以了。中间不要有 00 之类的分界字符。

合并后的大文件应该仍旧是一个合法的文本文件。回车符和换行符是等价的,不再区分。

多余的回车、换行符会被忽略掉。

换句话说,回车或换行字符就是天然的分界符。

既然是文本文件,那么中间就不应该有其他控制字符。除了回车换行以外,不应该有其他 00 至 1F 的 ASCII 字符。

菜单处理程序会自动忽略尾部的 font,而 font 处理程序也会自动忽略头部的菜单代码。

所以,无需分界符。
回复

使用道具 举报

12#
 楼主| 发表于 2012-9-21 23:07:34 | 只看该作者
xianglang 发表于 2012-9-16 02:34
    尾续了菜单+字库的压缩包的G4D,该怎么使用菜单和字库啊?

    另外,希望有人做个将这种压缩包尾续到G4D中去 ...



目前你可以手动续尾。

续尾之后,你无需做任何工作。既然 菜单 和 font 已经在内存了,grub4dos 在启动时会自动加载它们的。

用户只需要在内置菜单中放一条 graphicsmode -1 100:1000 100:1000 24:32 之类的命令便可进入 VBE 模式了。
回复

使用道具 举报

13#
 楼主| 发表于 2012-9-21 23:11:43 | 只看该作者
jianliulin 发表
希望有个标记字符用来分割菜单和字体以便工具单独修改菜单或者字体,另外如果用户在菜单里使用了font命令加载字体文件,字体是替代还是叠加


加载字体与以前一样,都是叠加。

分界符就不用指定了。程序很容易分辨 font 是从哪里开始。

因为 font 的格式是明确的。程序费不了多少代码就能确定。

添加特别的分隔符,有其有利的一面,但也有弊端。因为需要花费额外的心思来处理这个特殊的分界符,有时候还会带来副作用,比如,某个用户以某种方式误用了这个分界符,这就给他带来了麻烦。当能够避免这种麻烦的时候,我们从设计之初就应该考虑到这些细节,尽量照顾用户的使用体验,发挥最大的容错能力。

同样,自由格式也有利弊。它的弊端是需要程序员多写几行代码。

考虑到不要制定太多的规范、太多规范就是垃圾,所以,采用自由格式。不添加具有特殊意义的字符,不制定额外的规范。

自由格式对于程序员来说,处理稍稍麻烦那么一点,但对于用户来说,直接了当,便于理解,便于使用。

最终是要照顾用户的,而不是照顾程序员的。我觉得,任何软件都应该如此。
回复

使用道具 举报

14#
 楼主| 发表于 2012-9-21 23:38:23 | 只看该作者
原帖由 guies 于 2012-9-21 21:58 发表
grub4dos-0.4.5c-2012-06-19.7z
grub4dos-0.4.6a-2012-06-19.7z
可以用 BOOTICE & grubmenu 來編輯菜單
但樓上的附件 grub4dos-0.4.5c-2012-09-21.7z 卻不行編輯菜單。


这两个工具不能编辑菜单,倒是比较意外。等待其作者修正吧。

菜单的位置没有挪动。即使 lzma 压缩格式的菜单,也在 GRLDR 中原来的位置,只不过是 LZMA 压缩格式而已。

jianliulin 9月18 日发布的 fbinstTool 支持修改新版 grub4dos 的内置菜单,也可以导入、导出,并且支持 lzma 压缩。
回复

使用道具 举报

15#
发表于 2012-9-22 02:39:24 | 只看该作者

回复 #14 不点 的帖子

不点大师,你好!请问jianliulin 9月18 日发布的 fbinstTool,哪里可以下载?谢谢!
回复

使用道具 举报

16#
发表于 2012-9-22 09:32:23 | 只看该作者
回复

使用道具 举报

17#
发表于 2012-9-22 13:53:29 | 只看该作者
原帖由 不点 于 2012-9-21 22:42 发表
测试版来了。

不过对一楼的计划稍微作了一点改动,压缩菜单的内存位置是 0x110000,即 1M+64K 处。

这是因为 1M 以上的 64K 已经被用得很多了,所以,向后挪动到不容易引起冲突的地方。

压缩菜单的最大 ...

还好不是放什么很重要的数据
如果我没记错的话
1M后面第1个64K区域经常会被DOS拿去存放command.com
估计会被覆盖掉
回复

使用道具 举报

18#
发表于 2012-9-22 19:41:52 | 只看该作者
终于更新了
前排支持
回复

使用道具 举报

M
19#
发表于 2012-9-22 20:10:15 | 只看该作者
新版不是0.4.6C的吗?
回复

使用道具 举报

20#
 楼主| 发表于 2012-9-24 11:30:23 | 只看该作者
又有改动,试试时空论坛 9 月 24 日的版本。
回复

使用道具 举报

21#
发表于 2012-9-24 13:18:08 | 只看该作者
原帖由 不点 于 2012-9-24 11:30 发表
又有改动,试试时空论坛 9 月 24 日的版本。

其它地方可以下载吗?俺木有下载的账号。
回复

使用道具 举报

22#
发表于 2012-9-24 13:36:30 | 只看该作者
时空论坛现在基本上进不去啊!!
回复

使用道具 举报

23#
发表于 2012-9-24 15:13:40 | 只看该作者
原帖由 blank007 于 2012-9-24 13:18 发表

其它地方可以下载吗?俺木有下载的账号。

grub4dos-0.4.5c-2012-09-24.7z (267.35 KB, 下载次数: 113)

增加了 use_preset_menu 变量

[ 本帖最后由 pz 于 2012-9-24 15:18 编辑 ]
回复

使用道具 举报

24#
发表于 2012-10-3 11:53:17 | 只看该作者
谢谢提供新版本,已下载试用
回复

使用道具 举报

25#
发表于 2012-10-4 00:59:10 | 只看该作者
新版本,怎么写内置菜单呢。。
回复

使用道具 举报

26#
 楼主| 发表于 2012-10-5 09:48:40 | 只看该作者
今天已经更新,试图解决与 grubutil、bootice 的兼容性问题。

请在一楼下载测试。
回复

使用道具 举报

27#
发表于 2012-10-5 10:03:32 | 只看该作者
嘿嘿,测试了一下不点兄发布的grub4dos-0.4.5c-2012-10-05,采用老版本的grubmenu.exe已经能够顺利导入、导出菜单!
谢谢!
回复

使用道具 举报

28#
 楼主| 发表于 2012-10-5 10:10:14 | 只看该作者
非常高兴解决了。

在刚刚上载 10 分钟就接到你的好消息,谢谢你。
回复

使用道具 举报

29#
发表于 2012-10-5 12:09:41 | 只看该作者
原帖由 不点 于 2012-10-5 10:10 发表
非常高兴解决了。

在刚刚上载 10 分钟就接到你的好消息,谢谢你。


嘿嘿,不点兄搞颠倒了。应该是乡亲们谢谢你才是!由于您的辛劳与努力,大家才能够充分享受到g4d所带来的快乐。所以,再次感谢您!
回复

使用道具 举报

30#
发表于 2012-10-5 15:35:38 | 只看该作者
测试了2012-10-05版本,BOOTICE连V0.8版本都可以使用了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-23 04:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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