无忧启动论坛

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

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

    [复制链接]
391#
发表于 2023-1-29 12:09:36 | 只看该作者
本帖最后由 求道者 于 2023-1-29 12:11 编辑
sunsea 发表于 2023-1-29 12:08
g4d用的lzma必须要求记录文件原始大小。好像当年采用lzma时说的一个意义就是文件大小在开头,很方便。zst ...

UEFI下可能zstd的实现可能都要重新写。
但grub2有现成的。

不如说grub2有一堆现成的新特性。
但缺少对旧事物兼容。

回复

使用道具 举报

392#
发表于 2023-1-29 12:14:21 | 只看该作者
本帖最后由 求道者 于 2023-1-29 12:22 编辑
2011yaya2007777 发表于 2023-1-29 08:57
highlight=0x00e7efff000000ce    前4位是背景色,后4位是前景色
末尾增加一个空格

猜到了,但后续都加空格就很繁琐。
没有选择框的风格似乎也挺不错。
就放弃了。
上面已经回答。我喜欢高亮字符没有背景色,而前景色要明显区别于未选菜单项。第二张图差别太小。
高亮选择 highlight=0xce 挺好,你可以试一试


从鹿身上取了个色。
应该是这样。
原图也是对比度并不高。
深蓝色和淡蓝色。


回复

使用道具 举报

393#
发表于 2023-1-29 12:15:57 | 只看该作者
求道者 发表于 2023-1-29 12:09
UEFI下可能zstd的实现可能都要重新写。
但grub2有现成的。

大概是用习惯了,我感觉现有g4d这样比grub2舒服很多,命令也比较精简。
回复

使用道具 举报

394#
发表于 2023-1-29 12:23:48 | 只看该作者
求道者 发表于 2023-1-29 11:56
直接重构GFXMENU嘛,反正新的图形库移植了,怎能不试试?
但这显然没啥优先度。
G4D的特性与兼容手段移 ...

主线是不接受这些想法的。以前bean移植过lua,进了主线。后来官方又把lua从主线里面删了,弄得bean很不高兴。
你所说的g4d的特性,也就是bios下的map吧,这个超出了我的能力。
其他我没看出有啥特别的。
回复

使用道具 举报

395#
发表于 2023-1-29 12:24:33 | 只看该作者
sunsea 发表于 2023-1-29 12:08
g4d用的lzma必须要求记录文件原始大小。好像当年采用lzma时说的一个意义就是文件大小在开头,很方便。zst ...

uefi下不存在这个问题。
回复

使用道具 举报

396#
发表于 2023-1-29 12:25:32 | 只看该作者
sunsea 发表于 2023-1-29 12:15
大概是用习惯了,我感觉现有g4d这样比grub2舒服很多,命令也比较精简。

所以说不能用复杂点的语法。
dos系跳转就是goto。
编程上也不推荐goto。

现代语言都用if。
可读性好些。
而且更不容易犯错。
我不喜欢DOS语法。
回复

使用道具 举报

397#
发表于 2023-1-29 12:28:02 | 只看该作者
wintoflash 发表于 2023-1-29 12:23
主线是不接受这些想法的。以前bean移植过lua,进了主线。后来官方又把lua从主线里面删了,弄得bean很不高 ...

从保守的角度来讲。
这种破坏性的更新,那是不可能会出现在小更新里的。
怕不是下个大版本才有可能。

点评

bean移植lua的时候grub2的版本是1.9x,在2.0发布前被官方删了。他们都是一些gnu旧时代的老古董,比较排斥非gnu的东西。  详情 回复 发表于 2023-1-29 12:47
回复

使用道具 举报

398#
发表于 2023-1-29 12:29:04 | 只看该作者
本帖最后由 sunsea 于 2023-1-29 12:40 编辑
求道者 发表于 2023-1-29 12:25
所以说不能用复杂点的语法。
dos系跳转就是goto。
编程上也不推荐goto。

我个人感觉还行。反正这个环境也不能要求太高,以短小精悍为主,cmd系语法挺够用的。有更多需求那就是外部命令了。不能拿正经编程要求脚本。不过正经搞起来lua什么的确实还行,但我估计开发者没这个精力。

另外挺好奇g4e下面那些原来在0x82XX的内部变量啥的现在在哪,要是能系统性整理下这些文档化不太够的内部变量啥的在哪挺好。

回复

使用道具 举报

399#
发表于 2023-1-29 12:29:29 | 只看该作者
wintoflash 发表于 2023-1-29 12:24
uefi下不存在这个问题。

那就挺好。
回复

使用道具 举报

400#
发表于 2023-1-29 12:47:09 | 只看该作者
求道者 发表于 2023-1-29 12:28
从保守的角度来讲。
这种破坏性的更新,那是不可能会出现在小更新里的。
怕不是下个大版本才有可能。

bean移植lua的时候grub2的版本是1.9x,在2.0发布前被官方删了。他们都是一些gnu旧时代的老古董,比较排斥非gnu的东西。
所以bean后来不鸟官方了,弄了个burg。

点评

难说,毕竟在过国外许可证问题是真的会引来官司。  详情 回复 发表于 2023-1-29 13:07
回复

使用道具 举报

401#
发表于 2023-1-29 13:07:24 来自手机 | 只看该作者
本帖最后由 求道者 于 2023-1-29 13:33 编辑
wintoflash 发表于 2023-1-29 12:47
bean移植lua的时候grub2的版本是1.9x,在2.0发布前被官方删了。他们都是一些gnu旧时代的老古董,比较排斥 ...


难说,毕竟在国外许可证问题是真的会引来官司。
大清自有国情在此。
开源协议有没法律效力。
只是道德层面的约束,当然没人在意许可证。
这是很大的问题。
如果许可证没法律效应就不可会有openwrt。

甚至说Linus选择GNU协议也是为了项目的延续。
钱不钱的我不在乎,就是不喜欢非自由。
你用了我的库还非自由?
nmsl!
你能赚钱更好,我只关注开源,贡献代码能让项目活得更好,让商业也能驱动开源。
而不是为爱发电。
国内很多项目就是因为国情在此,还在纠结钱的那点鸡毛蒜皮的小事,没办法做大的。
Linus是北欧人,吃穿不愁,当然是更多的想到了项目的未来,为爱发电必然无法长久,特别是linus这种体量的项目。
国内的人diss GNU就让我觉得很搞笑,层次还是低。
商业公司选择bsd许可证,不是为了方便开发者。
是方便自己随时闭源。
这种事太多了。

国内这个环境唯一的好处大概是可以无视许可证乱搞吧。
不过你真拿微软泄漏的源代码搞东西,微软搞死你也是分分钟的事吧,只看愿不愿意。

点评

grub官方不接受lua不是许可证的问题。 他们就是不想在项目的关键部分引入一个外部的项目。(虽然说lua就是适合这种情况的) 比如Linux的使用这么广泛,GNU他们就是看不顺眼,觉得Linux还是不够“清真”,非得再搞  详情 回复 发表于 2023-1-29 14:38
回复

使用道具 举报

402#
发表于 2023-1-29 13:58:39 | 只看该作者
sunsea 发表于 2023-1-29 12:08
g4d用的lzma必须要求记录文件原始大小。好像当年采用lzma时说的一个意义就是文件大小在开头,很方便。zst ...
话说uefi下应该不存在实模式下内存限制导致尽可能砍代码的问题吧?

看到 sunsea 版主提到这个问题,我得解释一下。在解释之前,首先说明,下面这个解释并不重要,因为无论怎么解释,其结果都是要 “砍代码”,只不过 “砍代码” 的原因,不是由实模式造成的,而是因 grub1 缺乏内存分配机制造成的。

legacy bios 下,原始的 grub legacy 确实是受到实模式内存的限制。但 grub4dos 后来把代码从 0M 向上平移,挪动到 3M 的位置。也就是说,此后,本质上是可以使用任意多的内存的。但问题是,grub legacy 缺乏内存分配机制,没有内存分配函数,所以,grub4dos 的各个开发者都是用自己的方式来(任意)使用固定地址的内存,然后公布自己使用了哪些内存地址,以便让别的开发者了解,这样来减少发生冲突的可能性。这就是为什么在 grub4dos 中存在很多内部变量,它们有着固定地址。一个典型的固定地址内存的例子是,多国语言文字的点阵字模,占用好多 MB 的空间,使用的就是固定地址。别的变量空间就不可以与这里的点阵字模空间发生重叠。

就是说,本质上不是实模式的限制造成的,而是缺乏内存分配机制(各个开发者都在使用固定地址的内存碎片),导致 grub4dos 中的主体代码空间被挤压,不敢随便扩大(因为主体代码增长以后,会与其他固定地址的内存碎片发生冲突)。


回复

使用道具 举报

403#
 楼主| 发表于 2023-1-29 14:31:21 来自手机 | 只看该作者
不点说得很到位。g4d的内存使用很随意。
回复

使用道具 举报

404#
发表于 2023-1-29 14:38:47 | 只看该作者
求道者 发表于 2023-1-29 13:07
难说,毕竟在国外许可证问题是真的会引来官司。
大清自有国情在此。
开源协议有没法律效力。

grub官方不接受lua不是许可证的问题。
他们就是不想在项目的关键部分引入一个外部的项目。(虽然说lua就是适合这种情况的)
比如Linux的使用这么广泛,GNU他们就是看不顺眼,觉得Linux还是不够“清真”,非得再搞个半死不活的GNU Hurd。

点评

引入二进制黑盒子确实不清真,总有人不会妥协的。 但大部分人肯定能够忍受。 比方说,商业级的GPU有SR-IOV,而消费级有芯片相同的卡。 AMD这种对开源友好的厂商,都会用驱动里二进制bold和固件锁这部分功能。 其  详情 回复 发表于 2023-1-29 18:17
回复

使用道具 举报

405#
发表于 2023-1-29 15:03:34 | 只看该作者
不知该不该插话。我曾经提交 grub4dos 的代码(当时还没有准备建立 grub4dos 项目),人家连一封回信都没有。bean 的代码能被采纳,我感觉已经可以满意了。后来又被剥离出来,也算是可以理解的吧。

大家都是自由的。软件的官方管理者有着管理的自由,他想怎么做,就怎么做。其他开发者有着自己建立新分支的自由,同样也是想怎么做就怎么做。大家是平等的。谁也管不着谁。
回复

使用道具 举报

406#
发表于 2023-1-29 15:27:57 | 只看该作者
不点 发表于 2023-1-29 13:58
看到 sunsea 版主提到这个问题,我得解释一下。在解释之前,首先说明,下面这个解释并不重要,因为无论 ...

感谢解释!那只能说这个问题算个历史包袱了吧,不过好处应该是g4d应该现在以修bug为主了不轻易加功能了,变化不大,所以也能接受……不知道g4e有没有计划清理下这种容易互相冲突的内存使用……要不然给后面又继续造成一大堆历史包袱……
回复

使用道具 举报

407#
 楼主| 发表于 2023-1-29 17:44:37 | 只看该作者
不知道g4e有没有计划清理下这种容易互相冲突的内存使用……要不然给后面又继续造成一大堆历史包袱……

这点g4e相对完善些。
回复

使用道具 举报

408#
发表于 2023-1-29 17:54:06 | 只看该作者
接着前面的闲话继续说,希望不至于冲淡了讨论的正题。

我倒是觉得,gnu 搞 hurd,应该搞下去。我唯一抱怨的,是他们 hurd 的开发进展速度太慢。我认可他们坚持搞 hurd 的做法。

linux 虽然软件丰富,已成规模,但我还是希望有别的系统来竞争,或者抗衡。我目前还是喜欢多元化。

一个项目的管理者、维护者,有着自己的偏爱。我在与 chenall 一起维护的一段时间里,就曾经拒绝采纳某个补丁。当时是有双重不放心(就是不信任):对补丁(的内容以及技术)不放心,对补丁的作者不放心。因此只能选择拒绝。而对于 grub4dos 各个时期曾经的开发、维护者,我都是完全放心,而且是双重放心:对他们的技术水平放心,对他们参与开发维护的目的放心。

当被拒绝的时候,这很可能已经表明,存在着概念层面上的差异,换句话说,两者不在一个轨道上。这种情况下,被拒绝了其实是好事。要加强自己对于真相的理解和把握。这里面没有什么 “对” 的和 “错” 的之分。要理解对方拒绝的理由,多猜一猜,会有哪些理由。猜到的理由多了,也就更接近真相了,那么,抱怨也就会减少了。
回复

使用道具 举报

409#
发表于 2023-1-29 18:17:20 | 只看该作者
本帖最后由 求道者 于 2023-1-29 18:26 编辑
wintoflash 发表于 2023-1-29 14:38
grub官方不接受lua不是许可证的问题。
他们就是不想在项目的关键部分引入一个外部的项目。(虽然说lua就 ...

引入二进制黑盒子确实不清真,总有人不会妥协的。
但大部分人肯定能够忍受。
比方说,商业级的GPU有SR-IOV,而消费级有芯片相同的卡。
AMD这种对开源友好的厂商,都会用驱动里二进制bold和固件锁死这部分功能。
其他厂家别说了。
你如果是开发这部分的码农,你也会上头,无法接受,觉得不清真。
但显然大部分人不会管这东西。

然后一些旧GPU型号通过硬刷BIOS,改驱动,安装额外模块,就能用上这些功能。
不清真的东西在Linux下多了去了。
厂家没开源的bold里多少藏了点乱七八糟的东西。
比方说INTEL的无线固件强制开启了AX210/200的LAR,无法关闭,偏偏现有驱动他们没做好,导致AX210/200无法当AP用,不然的话就有便宜WIFI6路由可以用了,但牙膏厂就是把驱动里的禁用LAR关了(5.4之后,LAR禁用开关失效),然后驱动有没整好,然后就没有然后了,遇到这种你能怎么样?这东西就是由无线网卡不开源的固件锁死的,一点办法都没有,这种东西多了去了,都不能算是不清真,简直是汤里的老鼠屎。


https://github.com/coolsnowwolf/lede/issues/9976

回复

使用道具 举报

410#
发表于 2023-1-29 18:39:14 | 只看该作者
2011yaya2007777 发表于 2023-1-29 17:44
这点g4e相对完善些。

那挺好,新开一个分支还是少给后面造成历史包袱就好。现在g4e有把各种内部变量和记录命令返回值什么的变量文档化的可能吗……?
回复

使用道具 举报

411#
发表于 2023-1-29 18:54:27 | 只看该作者
本帖最后由 求道者 于 2023-1-29 19:00 编辑

wintoflash氏,你那个grub2分支停止维护是了吧?
但是wimboot还能编译吗?
移植到更新版的GRUB2能搞吗?
似乎没法从iso9660引导BOOTMGR.EFI。

点评

我的grub2分支里面wimboot是依赖于map的,不能独立出来用。 https://github.com/Mexit/MultiOS-USB/issues/4 这里面有我单独移植的一个uefi下用的wimboot模块,官方grub2 20.4/2.06, redhat grub2 应该都可以用。  详情 回复 发表于 2023-1-29 19:00
回复

使用道具 举报

412#
发表于 2023-1-29 19:00:11 | 只看该作者
本帖最后由 wintoflash 于 2023-1-29 19:01 编辑
求道者 发表于 2023-1-29 18:54
wintoflash氏,你那个grub2分支停止维护是了吧?
但是wimboot还能编译吗?
移植到更新版的GRUB2能搞吗?

我的grub2分支里面wimboot是依赖于map的,不能独立出来用。
https://github.com/Mexit/MultiOS-USB/issues/4
这里面有我单独移植的一个uefi下用的wimboot模块,官方grub2 20.4/2.06, redhat grub2 应该都可以用。当然,功能少了很多,和原版wimboot基本上一样。

点评

顺便问一下,grub2没法从iso9660引导BOOTMGR.EFI吗? [attachimg]518851[/attachimg]  详情 回复 发表于 2023-1-29 19:02
回复

使用道具 举报

413#
发表于 2023-1-29 19:02:28 | 只看该作者
本帖最后由 求道者 于 2023-1-29 19:08 编辑
wintoflash 发表于 2023-1-29 19:00
我的grub2分支里面wimboot是依赖于map的,不能独立出来用。
https://github.com/Mexit/MultiOS-USB/issu ...

顺便问一下,grub2没法从iso9660引导BOOTMGR.EFI吗?





点评

我觉得这个帖子已经跑题了。 你这是启动loopback挂载的ISO里面的bootmgfw.efi?有啥用? 两方面的问题:1.官方grub2 chainloader加载efi时对根设备的处理有问题,这个我已经反馈给官方了,我的分支里面修了。2.  详情 回复 发表于 2023-1-29 19:13
回复

使用道具 举报

414#
发表于 2023-1-29 19:13:28 | 只看该作者
求道者 发表于 2023-1-29 19:02
顺便问一下,grub2没法从iso9660引导BOOTMGR.EFI吗?

我觉得这个帖子已经跑题了。
你这是启动loopback挂载的ISO里面的bootmgfw.efi?有啥用?

两方面的问题:1.官方grub2 chainloader加载efi时对根设备的处理有问题,这个我已经反馈给官方了,我的分支里面修了。2. bootmgfw.efi自己对光驱的处理有问题,启动后会报bcd错误。这个需要对传递的设备路径做特殊处理,我懒没做。

点评

对了这个补丁在哪? 干脆顺便编译了。  详情 回复 发表于 2023-1-29 19:45
我在做混合ISO。 用来在UEFI下做USB-CDROM启动。 现在这个情况。 wimboot能抢救吗?  详情 回复 发表于 2023-1-29 19:19
回复

使用道具 举报

415#
发表于 2023-1-29 19:19:26 | 只看该作者
本帖最后由 求道者 于 2023-1-29 19:21 编辑
wintoflash 发表于 2023-1-29 19:13
我觉得这个帖子已经跑题了。
你这是启动loopback挂载的ISO里面的bootmgfw.efi?有啥用?

我在做混合ISO。
用来在UEFI下做USB-CDROM启动。(U盘量产了一个CD-ROM的LUN)。
几乎所有的文件都塞在iso9660下。

现在这个情况。
wimboot能抢救吗?

点评

可以。我当初移植wimboot就是为的这个。  详情 回复 发表于 2023-1-29 19:27
回复

使用道具 举报

416#
 楼主| 发表于 2023-1-29 19:26:57 | 只看该作者
现在g4e有把各种内部变量和记录命令返回值什么的变量文档化的可能吗……?

基本上与g4d相同。懒得弄。需要的话,你看一看asm.s文档。
回复

使用道具 举报

417#
发表于 2023-1-29 19:27:47 | 只看该作者
求道者 发表于 2023-1-29 19:19
我在做混合ISO。
用来在UEFI下做USB-CDROM启动。(U盘量产了一个CD-ROM的LUN)。
几乎所有的文件都塞在 ...

可以。我当初移植wimboot就是为的这个。

点评

行吧,我编译看看。  详情 回复 发表于 2023-1-29 19:36
回复

使用道具 举报

418#
发表于 2023-1-29 19:36:05 | 只看该作者
wintoflash 发表于 2023-1-29 19:27
可以。我当初移植wimboot就是为的这个。

行吧,我编译看看。
回复

使用道具 举报

419#
发表于 2023-1-29 19:45:35 | 只看该作者
wintoflash 发表于 2023-1-29 19:13
我觉得这个帖子已经跑题了。
你这是启动loopback挂载的ISO里面的bootmgfw.efi?有啥用?
1.官方grub2 chainloader加载efi时对根设备的处理有问题

对了这个补丁在哪?
干脆顺便编译了。

点评

https://lists.gnu.org/archive/html/grub-devel/2022-08/msg00334.html  详情 回复 发表于 2023-1-29 20:04
回复

使用道具 举报

420#
发表于 2023-1-29 20:04:06 | 只看该作者

点评

打了补丁了似乎没用。 此BUG似乎只出现在iso9660下。 还是同样的报错。 然后我把ISO刻录到U盘上,在实体机里能启动到LBA1的GRUB里,但是GRUB似乎无法检测到iso9660。  详情 回复 发表于 2023-1-30 00:06
编译还蛮费时间的。  详情 回复 发表于 2023-1-29 21:58
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-2-17 05:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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