无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
1#
发表于 2023-12-8 07:48:53 | 显示全部楼层
论坛级别不够,发不了新贴,如何反馈BUG?
回复

使用道具 举报

2#
发表于 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
回复

使用道具 举报

3#
发表于 2023-12-8 10:49:53 | 显示全部楼层

0.4.6a (Legacy BIOS)
回复

使用道具 举报

4#
发表于 2023-12-8 15:13:43 | 显示全部楼层

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

点评

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

使用道具 举报

5#
发表于 2023-12-11 17:29:44 | 显示全部楼层
不点 发表于 2023-12-8 15:29
下载次数为 0,——咦?—— 难道说,积分少的人,没法下载?嗯??

想到一个办法,用 email。

使用的是grub4dos.chenall.net下载的grldr,编译时间是2022-01-18.
你新编译的我试一下,有无问题我再反馈。

点评

编译者是 yaya 大神,不是我。我只是个无拘无束、随便插话的过路人。耐心等着 yaya 来解决你的问题。  发表于 2023-12-11 17:58
2023-11-27官网的grldr问题依旧,你发的grldr变了,但仍有问题。 find命令正常:(hd0,0)一直到(hd0,14),共15个分区,输出正常。 vol和uuid命令:(hd0,0)一直到(hd0,9)正常,后面输出(hd0,b),(hd0,c),(hd0,d),(hd0  详情 回复 发表于 2023-12-11 17:49
回复

使用道具 举报

6#
发表于 2023-12-11 17:49:06 | 显示全部楼层
2011xnsfgw 发表于 2023-12-11 17:29
使用的是grub4dos.chenall.net下载的grldr,编译时间是2022-01-18.
你新编译的我试一下,有无问题我再 ...

2023-11-27官网的grldr问题依旧,你发的grldr变了,但仍有问题。
find命令正常:(hd0,0)一直到(hd0,14),共15个分区,输出正常。
vol和uuid命令:(hd0,0)一直到(hd0,9)正常,后面输出(hd0,b),(hd0,c),(hd0,d),(hd0,e),还是少一个分区,输出仍然不正确。应该和find命令一样,输出的分区表示应为(hdx,y),x和y均为数字。(hd0,b)在grub4dos中是不认的。

点评

用find命令查找一个文件ISO等,再用vol和uuid查找label和uuid没问题。如:一个ISO文件在(hd0,13), vol (hd0,13)返回label卷标,uuid (hd0,13)返回UUID值是正确的。 但如果已知(hd0,13)的卷标为yyzz,则vol yyzz返  详情 回复 发表于 2024-1-9 09:25
回复

使用道具 举报

7#
发表于 2024-1-9 09:25:22 | 显示全部楼层
2011xnsfgw 发表于 2023-12-11 17:49
2023-11-27官网的grldr问题依旧,你发的grldr变了,但仍有问题。
find命令正常:(hd0,0)一直到(hd0,14) ...

用find命令查找一个文件ISO等,再用vol和uuid查找label和uuid没问题。如:一个ISO文件在(hd0,13),
vol (hd0,13)返回label卷标,uuid (hd0,13)返回UUID值是正确的。
但如果已知(hd0,13)的卷标为yyzz,则vol yyzz返回的值则不是(hd0,13)而是(hd0,%)等值,导致%@root%值错误。同理,如果已知uuid,则UUID xxxxx-yyyy返回的值导致%@root%值错误。
回复

使用道具 举报

8#
发表于 2024-1-12 11:10:09 | 显示全部楼层

vol和uuid返回(hd44#)这样的值,其中#是类似各种制表符的怪符号。还是有问题的。官网的只要不超过10个分区不会出错。
回复

使用道具 举报

9#
发表于 2024-1-12 18:01:02 | 显示全部楼层

十分感谢!这个已经可以了。
我关注这个功能是在实验在硬盘上安装多个linux系统并启动。其中内核参数需要boot=/dev/sda13这样的参数,但是不方便的,具体办法是查找uuid传递给内核boot=uuid=xxxxxxxx之类的。
具体办法:一、用find发现一个自己预先建立的标识文件,再用uuid查找该分区的uuid再传递给内核;二、预先设置卷标,用vol查找分区,再用uuid查找uuid值再传递给内核;三、预先查找linux分区的uuid,用变量传递给内核。其中办法二最方便,用磁盘工具给linux分区设置一个唯一卷标就行,这样安装几种linux也可以轻松启动了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 05:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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