无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
广告位招租系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: 2011yaya2007777

[发布] 增强 GRUB4DOS 菜单编辑功能,支持动画,支持精简字库,支持图形菜单

    [复制链接]
发表于 2015-8-13 21:09:16 来自手机 | 显示全部楼层
直接抄了楼主的菜单,菜单字体颜色怎么设置也无效果,看到楼主的回复才知道是 entryhelp= 参数引起的,删掉就好了,不知道这个参数为什么会使颜色设置失效?
回复

使用道具 举报

 楼主| 发表于 2015-8-13 22:00:16 | 显示全部楼层
不知道这个参数为什么会使颜色设置失效?

后来删除了这个参数。回头我修改一下菜单示例。
回复

使用道具 举报

发表于 2015-8-14 00:49:43 来自手机 | 显示全部楼层
哇,看图片已经支持哪是阿拉伯文?蒙文?
回复

使用道具 举报

 楼主| 发表于 2015-8-14 18:35:55 | 显示全部楼层
今天上传的版本,已经可以加载内置菜单的字库.
内置菜单的头部需有:
DotSize=20
是20*20 点阵字库.
回复

使用道具 举报

发表于 2015-8-14 19:56:31 | 显示全部楼层
32 * 32 的也可以哦

QQ截图20150814195551.png
回复

使用道具 举报

 楼主| 发表于 2015-8-16 12:15:25 | 显示全部楼层
若支持32*32点阵字体,需要 0x800000 字节空间。
若支持48*48点阵字体,需要 0x1200000 字节空间。

目前 UNI 字体开始于 0x1800000,可用空间 0x700000。
GRUB_MOD_ADDR(builtins.c)占用 0x1f00000,长度 0x100000。
cmd_buffer(cmdline.c)命令缓存占用 0x1ff0000,长度 0x10000。

若支持到 32*32,则可以把 GRUB_MOD_ADDR 及 cmd_buffer 挪到其它地方。
若支持到 48*48,则只能把 UNI 字体移动到 0x2020000 ,即 PRINTF_BUFFER(cmdline.c)打印缓存之后。
请不点及 chenall 定夺。
回复

使用道具 举报

发表于 2015-8-16 17:15:11 | 显示全部楼层
本帖最后由 chenall 于 2015-8-16 17:22 编辑

可以考虑使用动态分配内存,一劳永逸.

但是需要先完善malloc和free函数

另外一点,如果这些功能占用的空间比较大,可能的话可以考虑用外部命令来实现,内核尽量不要太大.

点评

外部命令方式不错,没用外部命令就默认还是16 *16 字体,如果有外部命令的情况就根据外面命令的设定来显示菜单,自定义的字体只需在用在菜单上外部命令可以自带字体(或者用一个尾续的批处理带上字体外部命令和字体  详情 回复 发表于 2015-8-16 22:23
回复

使用道具 举报

发表于 2015-8-16 22:23:38 | 显示全部楼层
chenall 发表于 2015-8-16 17:15
可以考虑使用动态分配内存,一劳永逸.

但是需要先完善malloc和free函数

外部命令方式不错,没用外部命令就默认还是16 *16 字体,如果有外部命令的情况就根据外面命令的设定来显示菜单,自定义的字体只需在用在菜单上外部命令可以自带字体(或者用一个尾续的批处理带上字体外部命令和字体),命令行还是固定为16 * 16 字体。
回复

使用道具 举报

发表于 2015-8-17 02:32:19 | 显示全部楼层
大家都谈了看法。我也说说我的观点。观点就是观点,不要拘泥于观点,不要太注重某个人的观点。开发者应该以自己的判断作为主要参考点。

字体字模占用的空间较大,动辄几十 M,上百M,都是很常见的。什么宋体、楷体、隶属、草书,多了去了。如果都装到内存,占用空间太庞大。所以,我同意楼上所说,用外部命令来实现新的字体。




最近我在研究 grub2,想移植它里面的一些驱动。硬盘驱动和键盘驱动已经有点眉目了,有可能成功移植过来。

如果硬盘驱动移植成功,那么 USB 驱动也应该一样可以移植成功。只是我个人的重点偏向于硬盘和键盘,而不是 usb 驱动。所以,我不去做 usb 的移植工作。

需要说明的是,移植以后,目的是让 grub4dos 摆脱 1M 实模式内存的限制,让 grub4dos 隐藏在扩展内存顶部。如此一来,驱动程序的空间就很大了,以后就不怕“常规内存不够用”的问题了。

目前的 grub4dos,其键盘和硬盘都是调用 BIOS,这使得 grub4dos 无法干净利索地隐藏在扩展内存顶部。如果我们不再调用 bios 了(因而不再占用低端常规内存了;只是 int13 处理程序占用几个 KB 的顶端常规内存),那就可以彻底地隐藏在扩展内存顶部了。

隐藏在扩展内存顶部之后,可以编写很大的 int13 处理程序,供 DOS 以及旧版的 Windows 使用。甚至还可以有足够的空间来编写(或移植) int21 的代码,让 grub4dos 直接能够运行 16 位的 DOS 程序。

这个工作完成以后,当然会与现在的 grub4dos 存在一些不兼容。普通用户可能感觉不到不兼容现象,但是,由于程序结构的变化,第三方开发者会感觉到不兼容现象。




目前的 grub4dos 有什么缺点?

很明显,内存管理、进程管理都有缺点,而且是最致命的缺点。有这样的缺点存在,它会给 grub4dos 的进一步开发造成阻力,产生瓶颈。我希望能够移植一个好的进程管理和内存管理系统,可以从 grub2 上移植,也可以从 Linux、Minix、BSD、kolibri 等系统上移植过来。

我对这些工作都不熟悉,所以,如果都由我一人来做,那可能需要很多年(需要学习相关知识才行,因此快不了)。所以,我私自意淫:假如 bean、chenall、Roy、yaya、karyonix 等一大批人都来一起干这事,那恐怕就比较顺利了。

点评

如果移植成功了,是否意味着grub4dos离uefi启动就不远了。  详情 回复 发表于 2015-8-17 08:10
回复

使用道具 举报

发表于 2015-8-17 02:58:41 | 显示全部楼层
g4d越来越牛,不点大人保重身体。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-7-22 21:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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