无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: zhaohj
打印 上一主题 下一主题

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
3091#
发表于 2023-10-16 15:40:44 来自手机 | 只看该作者
系统字体是16,你的字体是20,当然不一样高了!你的字库应当把英文和数字带上。搜一搜,本板块很多字库制作,都可以带上。

点评

我用的就是论坛里大佬的制作方法  详情 回复 发表于 2023-10-16 22:06
字库里包含英文和数字  详情 回复 发表于 2023-10-16 22:05
回复

使用道具 举报

3092#
发表于 2023-10-16 22:05:18 来自手机 | 只看该作者
2011yaya2007777 发表于 2023-10-16 15:40
系统字体是16,你的字体是20,当然不一样高了!你的字库应当把英文和数字带上。搜一搜,本板块很多字库制作 ...

字库里包含英文和数字
回复

使用道具 举报

3093#
发表于 2023-10-16 22:06:01 来自手机 | 只看该作者
2011yaya2007777 发表于 2023-10-16 15:40
系统字体是16,你的字体是20,当然不一样高了!你的字库应当把英文和数字带上。搜一搜,本板块很多字库制作 ...

我用的就是论坛里大佬的制作方法
回复

使用道具 举报

3094#
发表于 2023-10-18 01:13:46 来自手机 | 只看该作者
本帖最后由 游鱼摆尾 于 2023-10-18 01:45 编辑

报告大大,关于闪屏问题经过我反复仔细排插,问题出现在这两条命令上,没有这两条命令是正常的转屏不闪屏。闪屏有规律,总共闪屏4次,即快闪慢闪快闪慢闪,这两条命令每加一条快闪和慢闪一次。单独加上其中一条则闪屏2次,即快闪慢闪一次。

splashimage /boot/grub/BG/bg.bmp

font terminal --font-spacing=1:16


回复

使用道具 举报

3095#
发表于 2023-10-18 01:14:48 来自手机 | 只看该作者
本帖最后由 游鱼摆尾 于 2023-10-18 01:43 编辑

default 3
timeout 10pause
graphicsmode -1 1024 || graphicsmode -1 -1 -1 24:32
splashimage /boot/grub/BG/bg.bmp
font /boot/grub/FONTS/unifont.hex
terminal --font-spacing=1:16

在timeout 10下面这一行加上pause,则屏幕上显示一行信息为:
graphics mode number set to 0x118

在其它地方加pause屏幕灰屏,无任何信息

回复

使用道具 举报

3096#
发表于 2023-10-18 06:42:34 来自手机 | 只看该作者
谢谢定位。因为这个是在特定的主板发生的,我这里无法复现,所以不一定能排除。也许这是特定主板的问题。
回复

使用道具 举报

3097#
发表于 2023-10-18 10:33:56 | 只看该作者
看了一下相关代码,由于splashimage及terminal这两个函数,都有控制台模式与图形模式的切换,可能是切换引起的屏幕闪烁。
虽然感觉不爽,但是不影响使用,凑乎吧。
回复

使用道具 举报

3098#
发表于 2023-10-18 22:55:15 来自手机 | 只看该作者
暂时只能这样了,不过UEFI版本的没问题,就是BIOS版本我的两台电脑会闪屏
回复

使用道具 举报

3099#
发表于 2023-10-19 00:03:36 来自手机 | 只看该作者
另外我想问一下大大,关于这句graphicsmode -1 1024,只需定义水平像素,不需要加上768吗?为什么这样写呢
回复

使用道具 举报

3100#
发表于 2023-10-19 06:32:22 来自手机 | 只看该作者
一般情况,只有1024*768,没有其他组合。你的背景图是这个尺寸,如果分辨率没有1024,就执行下一句。
回复

使用道具 举报

3101#
发表于 2023-10-19 08:38:36 来自手机 | 只看该作者
哦,也就是说,不加上768是为了兼容一些超宽屏吗,还是说一般情况下只有1024*768这个分辨率,就可以只需写1024,不用加上768。效果等同于1024*768

点评

写上 graphicsmode -1 1024,就是说,能够适应 768 行的像素行数,也能适应其他任意的行数。但列数是固定的,是 1024 个列。  详情 回复 发表于 2023-10-19 09:16
回复

使用道具 举报

3102#
发表于 2023-10-19 09:16:08 | 只看该作者
游鱼摆尾 发表于 2023-10-19 08:38
哦,也就是说,不加上768是为了兼容一些超宽屏吗,还是说一般情况下只有1024*768这个分辨率,就可以只需写1 ...

写上 graphicsmode -1 1024,就是说,能够适应 768 行的像素行数,也能适应其他任意的行数。但列数是固定的,是 1024 个列。

点评

明白了,谢谢不点大师的解答  详情 回复 发表于 2023-10-19 09:19
回复

使用道具 举报

3103#
发表于 2023-10-19 09:19:32 | 只看该作者
不点 发表于 2023-10-19 09:16
写上 graphicsmode -1 1024,就是说,能够适应 768 行的像素行数,也能适应其他任意的行数。但列数是固定 ...

明白了,谢谢不点大师的解答

点评

graphicsmode -1 这条命令的意思,就是选择主板 VBE 系统所支持的最高分辨率。 graphicsmode -1 1024 的意思,就是选择主板 VBE 系统所支持的列数为 1024 列的最高分辨率。 graphicsmode -1 1024 768 的意思,  详情 回复 发表于 2023-10-19 09:47
回复

使用道具 举报

3104#
发表于 2023-10-19 09:47:04 | 只看该作者
本帖最后由 不点 于 2023-10-19 10:02 编辑
游鱼摆尾 发表于 2023-10-19 09:19
明白了,谢谢不点大师的解答

graphicsmode -1 这条命令的意思,就是选择主板 VBE 系统所支持的最高分辨率。

graphicsmode -1 1024 的意思,就是选择主板 VBE 系统所支持的列数为 1024 列的最高分辨率。

graphicsmode -1 1024 768 的意思,就是选择主板 VBE 系统所支持的列数为 1024 列、并且行数为 768 行的最高分辨率。

graphicsmode -1 1024 768 24 的意思,就是选择主板 VBE 系统所支持的列数为 1024 列、行数为 768 行、并且色彩深度为 24 位的最高分辨率。这其实就只有一种可能性了。

如果主板不支持所指定的参数,那么这条命令就相当于找不到指定的分辨率,所做的选择 “落空” 了,因此,什么也不做。


其他例子还有:


graphicsmode -1 800:1024 600:768 16:24


意思是,选择主板 VBE 系统所支持的列数位于 800~1024 之间,行数位于 600~768 之间,并且色深位于 16~24 位之间的最高的那个分辨率。



graphicsmode -1 800,1024 600,768 16,24


意思是,选择主板 VBE 系统所支持的列数为 800或1024,行数为 600或768,并且色深为 16 位 或 24 位的最高的那个分辨率。



graphicsmode -1 640,800:1024 480,600:768 8,16:24




意思是,选择主板 VBE 系统所支持的列数为 640 或位于 800~1024 之间,行数为 480 或位于 600~768 之间,并且色深为 8 位 或位于 16~24 位之间的最高的那个分辨率。


逗号表示 “或”,分号表示一个区间。x:y 表示位于 x 和 y 之间的数。逗号和分号两边不可以有空格。空格是语法分隔符,不可以出现在表示 “整数集合” 的表达式中。


以下是整数集合的例子,方便大家理解:


3,4,5 等价于 3:5


3,4,5,8,9 等价于 3:5,8:9


3,4,5,8,9,10,11 等价于 3:5,8:11


100,200,300 不等价于 100:300,前者是只有三个数的集合,后者是有 201 个数的集合,即:100,101,102,103,等等,一直到 300。



点评

谢谢不点大师,讲的太系统了,那这句的意思:graphicsmode -1 -1 -1 24:32应该就是选择主板所支持的最高行数和列数的最高分辨率,并且色深为 24 位 或 32 位的最高的那个分辨率,是吗?比如说显示器分辨率是1920x108  详情 回复 发表于 2023-10-19 10:09
回复

使用道具 举报

3105#
发表于 2023-10-19 10:09:18 | 只看该作者
不点 发表于 2023-10-19 09:47
graphicsmode -1 这条命令的意思,就是选择主板 VBE 系统所支持的最高分辨率。

graphicsmode -1 1024  ...

谢谢不点大师,讲的太系统了,那这句的意思:graphicsmode -1 -1 -1 24:32应该就是选择主板所支持的最高行数和列数的最高分辨率,并且色深为 24 位 或 32 位的最高的那个分辨率,是吗?比如说显示器分辨率是1920x1080,它就会选择1920x1080这个分辨率执行。还有这句graphicsmode -1 -1 -1 24:32的效果是否可以等同这句:graphicsmode -1 呢?

点评

从程序设计的角度来看,这是很容易实现的。因为只要规定了 “整数集合” 如何表示,那就万事大吉了。有了明确的规范,那么大家使用起来就得心应手,可以根据自己的需要,自由地、精确地进行控制。控制权完全掌握在用  详情 回复 发表于 2023-10-19 10:54
回复

使用道具 举报

3106#
发表于 2023-10-19 10:54:30 | 只看该作者
本帖最后由 不点 于 2023-10-19 16:49 编辑
游鱼摆尾 发表于 2023-10-19 10:09
谢谢不点大师,讲的太系统了,那这句的意思:graphicsmode -1 -1 -1 24:32应该就是选择主板所支持的最高 ...

从程序设计的角度来看,这是很容易实现的。因为只要规定了 “整数集合” 如何表示,那就万事大吉了。有了明确的规范,那么大家使用起来就得心应手,可以根据自己的需要,自由地、精确地进行控制。控制权完全掌握在用户自己手上。

graphicsmode -1 ,
此处 -1 不是一个真正的模式号码,只是表示 “我想要进入某个 VBE 图形模式,即,满足某个条件的具有最高分辨率的那个图形模式。我不知道这个图形模式的准确号码值,但我【模模糊糊地】知道像素点阵的宽度、高度以及色彩深度【的大致范围】,请你帮我找出这样一个模式的号码【我并不关心这个号码的具体数值,你自己知道就行,不必告诉我】,并让显卡立刻进入这个模式”。如果参数不是 -1 而是别的一个数,这个数就应该是主板 VBE 系统所支持的一个合法的模式号码。那么,命令的含义就变成 “我想要进入这个指定的模式”。这个模式号码可能是某个文本模式的模式号码,也可能是某个图形模式的模式号码。这就了解到,graphicsmode 命令其实也可以用来进入文本模式,尽管大家很少这样去用。如果用这条命令进入文本模式,它会使用新的 VBE 标准进入文本模式,而不是用旧的 VGA 标准进入文本模式。这个模式号码(如果它不是 -1)就代表一个实实在在的模式,因此,这个号码不可以随便乱写;如果胡乱写一个模式号码,而你的主板 VBE 碰巧又不支持这个模式,那可能会死机的。

graphicsmode -1 -1 末尾的 -1 表示像素列数是任意的,选择进入最高分辨率。

graphicsmode -1 -1 -1 末尾的 -1 表示像素行数是任意的,选择进入最高分辨率。

graphicsmode -1 -1 -1 -1 末尾的 -1 表示色彩深度是任意的,选择进入最高分辨率。

graphicsmode -1 -1 -1 24:32 表示色彩深度是 24,25,26,27,28,29,30,31或32,选择进入最高分辨率。由于主板 VBE 的 BIOS 系统在实际上只存在 8 位、15 位、16 位、24 位、32 位 等少数几个色彩深度,因此,这也就跟 graphicsmode -1 -1 -1 24,32 的实际效果是一样的了。

graphicsmode -1 -1 -1 24:32 的效果与 graphicsmode -1 不等价。

graphicsmode -1 -1 -1 -1 与 graphicsmode -1 是等价的,当然也与 graphicsmode -1 -1 等价,也与 graphicsmode -1 -1 -1 等价。

从实际效果来说,graphicsmode -1 的实际效果,还与 graphicsmode -1 -1 -1 8:32 等价,也与 graphicsmode -1 -1 -1 1:32 等价,甚至与 graphicsmode -1 -1 -1 0:10000 也是等价的,这是因为,前面说了,实际上只存在少数几种色深。 当然,安全起见,还是不要使用 0:10000 这种不太正常的色深控制参数,因为,将来的开发者有可能检查参数合法性,把那些看起来 “离谱” 的参数,判定为 “非法” 参数,从而拒绝执行命令。


而 graphicsmode -1 -1 -1 24:32 限定了色深必须在 24 至 32 之间,所以与 graphicsmode -1 不等价。


此处还要解释一下,何为 “最高分辨率”。


像素列数 * 像素行数 * 色彩深度 这三者的乘积,作为判定依据。乘积最大者,就是 “最大分辨率”。

点评

十分感谢不点大师专业而系统的解答,这下子完全明白了  详情 回复 发表于 2023-10-19 13:38
回复

使用道具 举报

3107#
发表于 2023-10-19 13:38:14 来自手机 | 只看该作者
不点 发表于 2023-10-19 10:54
从程序设计的角度来看,这是很容易实现的。因为只要规定了 “整数集合” 如何表示,那就万事大吉了。有了 ...

十分感谢不点大师专业而系统的解答,这下子完全明白了
回复

使用道具 举报

3108#
发表于 2023-10-30 23:01:28 来自手机 | 只看该作者
我想问一下yaya大大,grub4dos启动文件必须放在U盘第一分区且分区格式必须为fat格式吗?我用bootice写入引导,当分区格式为exfat格式时启动不了,但是通过grub2调用grldr文件时可以启动。或者我把U盘分为两个区,第二个区为UEFI区,分区格式为fat32,我把启动文件放在这个区里,用bootice写入引导也启动不了。
回复

使用道具 举报

3109#
发表于 2023-10-30 23:09:36 来自手机 | 只看该作者
但是我看ventoy第一个分区就是为exfat格式,它的bios启动方法是不是通过将启动文件写入分区前的1m间隙空间里来达到启动的目的,那么grub4dos是否也可以在exfat分区前弄弄一个1m间隙放grub4dos的启动文件来达到在exfat分区里也能启动grub4dos呢?另外,我看见有的pe把grub4dos放在第二个分区,分区格式为fat32,也就是说bios启动文件和uefi启动文件都放在第二个区,bios模式也能启动,不知道是怎么做到的?
回复

使用道具 举报

3110#
发表于 2023-10-31 10:24:02 | 只看该作者
我想问一下yaya大大,grub4dos启动文件必须放在U盘第一分区且分区格式必须为fat格式吗?

bios模式:
1. grub.mbr启动:任意。
2. grub.pbr启动:1)在mbr激活引导分区。2)在pbr使用grub4dos引导代码。3)分区根目录有grldr.

uefi模式:
1. 启动分区一般必须是fat格式,除非你主板的启动芯片支持从其他格式的分区启动,或者你自己注入驱动。
2. 在启动分区有 efi -> boot -> bootx64.efi(即G4E)
回复

使用道具 举报

3111#
发表于 2023-11-3 22:44:57 来自手机 | 只看该作者
谢谢yaya大佬解答,那我如果是通过别的引导器引导它,是否也可以放在盘任意分区呢还是只能放在第一分区?
回复

使用道具 举报

3112#
发表于 2023-12-8 07:48:53 | 只看该作者
论坛级别不够,发不了新贴,如何反馈BUG?
回复

使用道具 举报

3113#
发表于 2023-12-8 09:31:30 | 只看该作者
BUG反馈:
启动硬盘上的Linux系统,需要查找内核所在分区,以及向内核传递参数。kennel (hdx,y)/vmlinuz  root=/dev/sda? #或root=LABEL=%label1%  或 root=UUID=%uuid_1%
内核参数问题:
1、root=/dev/sda?这个在分区不变时没问题,但在改变分区个数(增加或减少)时,该值会发生变化,需要重新确定。
2、root=LABEL=%label1% 这个在不改变卷标时没问题,但改变或删除卷标会发生问题。
3、 root=UUID=%uuid_1%这个是最稳定的,只要不重新格式化该分区,UUID是确定的。
比如:
1、通过在安装好的linux分区建立一个空文件(如:centos9.txt),查找该文件,确定(hdx,y),如(hd0,7),再确定该分区卷标或UUID传递给Linux内核。
2、通过查找卷标,确定(hdx,y),如(hd0,7),并将卷标传递给Linux内核。
3、通过查找UUID,确定(hdx,y),如(hd0,7),并将UUID传递给Linux内核。
4、如上,root=/dev/sda?并不好用,因为是需要预先确定,而且GNU Grub2和grub4dos以及Linux内核对分区表示方法并不一致。
现在可以通过GNU Grub2的search和probe组合可以实现上述目的,而grub4dos for legacy bios最新版用find和vol以及uuid命令时发生问题,有BUG的。
因反复对分区改变,改变大小或增加分区,分区增加到10多个,grub4dos的vol和uuid命令发生错误!图片发不上来,文字描述一下!
find命令正常,可以发现(hd0,0)到(hd0,13)所有分区,--set-root是正常的。
而vol和uuid命令发生错误,可以发现(hd0,0)到(hd0,9)这些分区,而后面的分区成了如:(hd0,;),(hd0,<),(hd0,=),并丢了一个分区。也就是说这两个命令对第十一个(含)以后的分区返回的分区值是错误的。如需要截图,加QQ:1121621061,可以反馈截图。
希望修正错误!
另外,在legacy bios下的grub4dos已很好用,个人认为grub4dos for UEFI开发重点应放在和原grub4dos重要功能相同或相似功能上面,比如像a1ive grub2的map功能,以及网络功能的开发。而目前开发者对windows的VHD、wim文件的支持花费了大量精力,其实对wim的支持能够利用ipxe的wimboot即可,因为windows对自身的vhd和wim支持已相当完善,只是菜单不好看需要编辑BCD而已。也可以增加或借用ventoy的linux vhd的支持。

点评

如果因为权限问题不方便上传图片,可以去github上提issue  详情 回复 发表于 2023-12-8 16:35
回复

使用道具 举报

3114#
发表于 2023-12-8 10:42:42 | 只看该作者
本帖最后由 2011yaya2007777 于 2023-12-8 10:49 编辑
BUG反馈:

legacy bios?
uefi?

grldr.rar

175.13 KB, 下载次数: 6, 下载积分: 无忧币 -2

点评

下载次数为 0,——咦?—— 难道说,积分少的人,没法下载?嗯??  详情 回复 发表于 2023-12-8 15:29
0.4.6a (Legacy BIOS)  详情 回复 发表于 2023-12-8 10:49
回复

使用道具 举报

3115#
发表于 2023-12-8 10:49:53 | 只看该作者

0.4.6a (Legacy BIOS)
回复

使用道具 举报

3116#
发表于 2023-12-8 10:54:22 | 只看该作者
请测试

点评

分区类型有:fat32,ntfs,exfat,ext4等。  详情 回复 发表于 2023-12-8 15:13
回复

使用道具 举报

3117#
发表于 2023-12-8 15:13:43 | 只看该作者

分区类型有:fat32,ntfs,exfat,ext4等。

点评

你在打什么哑谜?  详情 回复 发表于 2023-12-8 15:27
回复

使用道具 举报

3118#
发表于 2023-12-8 15:27:08 | 只看该作者
2011xnsfgw 发表于 2023-12-8 15:13
分区类型有:fat32,ntfs,exfat,ext4等。

你在打什么哑谜?
回复

使用道具 举报

3119#
发表于 2023-12-8 15:29:20 | 只看该作者
本帖最后由 不点 于 2023-12-8 15:32 编辑

下载次数为 0,——咦?—— 难道说,积分少的人,没法下载?嗯??

想到一个办法,用 email。

点评

使用的是grub4dos.chenall.net下载的grldr,编译时间是2022-01-18. 你新编译的我试一下,有无问题我再反馈。  详情 回复 发表于 2023-12-11 17:29
回复

使用道具 举报

3120#
发表于 2023-12-8 16:12:41 | 只看该作者
分区类型有:fat32,ntfs,exfat,ext4等。

所问非所答。

你不是反馈:
“vol和uuid命令发生错误,可以发现(hd0,0)到(hd0,9)这些分区,而后面的分区成了如:(hd0,;),(hd0,<),(hd0,=)....."
这个问题解决否?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-25 09:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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