无忧启动论坛

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

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

    [复制链接]
发表于 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越来越牛,不点大人保重身体。
回复

使用道具 举报

发表于 2015-8-17 08:10:35 | 显示全部楼层
不点 发表于 2015-8-17 02:32
大家都谈了看法。我也说说我的观点。观点就是观点,不要拘泥于观点,不要太注重某个人的观点。开发者应该以 ...

如果移植成功了,是否意味着grub4dos离uefi启动就不远了。
回复

使用道具 举报

发表于 2015-8-17 08:55:43 | 显示全部楼层
如果只是由我来做这些工作,肯定与 EFI 无关。我所提到的上述工作,就够我做一辈子了。

假如也有其他人参与,那就有可能增加 EFI 的支持。

回复

使用道具 举报

 楼主| 发表于 2015-8-17 13:49:44 | 显示全部楼层
我很愿意协助不点做此项开发.

点评

太好了,如此一来,进度就会加快一倍。 我已经在做的工作是把硬盘、键盘驱动引进来,让 grub4dos 的内核不再需要反复调用 int13 和 int16。 如果快的话,下个月就可能投入 alpha 测试。 yaya 可以根据自己  详情 回复 发表于 2015-8-17 15:28
回复

使用道具 举报

发表于 2015-8-17 14:15:21 | 显示全部楼层
一楼附件引导时停在加载内置菜单处就不动了。下载的是15年8月14日版。下载8月7日版使用就没有问题。
回复

使用道具 举报

发表于 2015-8-17 15:28:53 | 显示全部楼层
本帖最后由 不点 于 2015-8-17 18:54 编辑
2011yaya2007777 发表于 2015-8-17 13:49
我很愿意协助不点做此项开发.


太好了,如此一来,进度就会加快一倍。

我已经在做的工作是把硬盘、键盘驱动引进来,让 grub4dos 的内核不再需要反复调用 int13 和 int16。

如果快的话,下个月就可能投入 alpha 测试。

yaya 可以根据自己的特长,选择某个领域的工作来做。




初步计划:准备为 grub4dos 的内核至少保留 256M 的内存空间,这样不至于很快用光。256M 是 grub4dos 内核的最小内存占用。不支持很低档的旧机器。
机器总内存应该至少有 1G。低档机器只能使用现在的版本。建议有 8G 以上的内存,以便加载很大的 IMG、VHD。

另外,我们仍以现在的版本为主要发行版本。新的版本主要只用于新的机器。新版本有可能缺少兼容性(需要长期锤炼以后才能作为主要版本),因此,我们仍然以目前的版本为主。




进程管理和内存管理是关键,目前我还没有自己的思路,唯一的思路就是从 grub2 以及别的操作系统移植相关的功能。

我对中断描述符表还算有点了解。将来实现的系统调用,应该可以兼容 Linux。就是说,在支持运行 16 位 DOS 程序的同时,也支持运行 32 位(甚至也支持 64 位)的 Linux 程序。

回复

使用道具 举报

 楼主| 发表于 2015-8-17 18:22:47 | 显示全部楼层
一楼附件引导时停在加载内置菜单处就不动了。

把菜单贴上来.
回复

使用道具 举报

 楼主| 发表于 2015-8-17 18:40:45 | 显示全部楼层
需要澄清一个概念。
字库本来就是外置的。无论是从菜单使用命令  font /unifont.hex.gz  显式加载,还是从菜单末尾以小字库的方式隐式加载。
小字库方式缩小了外置字库的体积,但是没有减少字库在内存的体积。
比如,小字库加载 2 个字:0x41 和 0x5940。以 32*32 点阵字符为例,内核把 0x41 存放在 0x41*0x80 处,把 0x5940 存放在 0x5940*0x80 处。似乎 2 字节应当占用 0x80*2 字节,实际结果却不是。
看来需要建立 1 种小字库存储模式,将 0x41 放在 0*0x80 处,将 0x5940 放在 1*0x80 处,等等。这并不难实现。

点评

目前的 32M 内核内存,不够使用。需要加大内核内存才行。 如果不增加内核内存占用,你可以暂时只支持 32×32 的字库,把 chenall 的 insmod 模块移动到别的地方。 或者干脆把保留内存增加到 64M 或 128M,这样  详情 回复 发表于 2015-8-17 18:59
回复

使用道具 举报

发表于 2015-8-17 18:59:46 | 显示全部楼层
2011yaya2007777 发表于 2015-8-17 18:40
需要澄清一个概念。
字库本来就是外置的。无论是从菜单使用命令  font /unifont.hex.gz  显式加载,还是从 ...

目前的 32M 内核内存,不够使用。需要加大内核内存才行。

如果不增加内核内存占用,你可以暂时只支持 32×32 的字库,把 chenall 的 insmod 模块移动到别的地方。

或者干脆把保留内存增加到 64M 或 128M,这样会给第三方应用的开发者带来某些不兼容现象。

总之,你自己决断吧。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-6-27 04:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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