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

[原创] GRUB4DOS for UEFI

   火... [复制链接]
发表于 2023-4-4 20:50:02 | 显示全部楼层
chen463 发表于 2023-4-4 10:07
另外后学实机重复开关机操作,发现ROOT会有互换的现象,接下来(方案1)菜单uuid(hdx,y)操作就会出现问题。 ...
另外后学实机重复开关机操作,发现ROOT会有互换的现象,接下来(方案1)菜单uuid(hdx,y)操作就会出现问题。

你应该用 find --set-root 查找标志文件来确定磁盘分区号,比如
  1. find --set-root /Windows/System32/notepad.exe
  2. uuid ()
复制代码
回复

使用道具 举报

发表于 2023-4-4 20:51:56 | 显示全部楼层
liuzhaoyzz 发表于 2023-4-4 15:32
感觉大佬的解释不太对呢?从时间逻辑上看不太对,因为2023-03-11放弃使用 EFI Handover Protocol 启动  ...

你太死板了。要看他具体的报错:
提示如下:
[      3.290560] ---[ end Kernel panic - not syncing: vfs: unable to mount root fs on unknown-block(0,0) ]  

他的机器上 map 是没有问题的。


回复

使用道具 举报

发表于 2023-4-4 21:46:54 来自手机 | 显示全部楼层
2011yaya2007777 发表于 2023-3-30 15:57
ubuntu-18.04.6-desktop-amd64.iso启动分析

方法1.

你这用的是哪个版本的g4e?你最新编译的最新alpha/beta测试版本吗?
ubuntu版本是18吗?
回复

使用道具 举报

 楼主| 发表于 2023-4-4 21:58:56 来自手机 | 显示全部楼层
G4E是最新版本。ubuntu有版本号。
回复

使用道具 举报

发表于 2023-4-6 15:10:15 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-4-6 15:21 编辑
wintoflash 发表于 2022-10-11 10:12
假如内核和 initrd 不在 ESP 分区,那么内核是无法通过 UEFI 读取 initrd 的。
这样就需要某个约定俗成 ...

EFI Handover Protocol/Loadfile2看了你的介绍似乎以后在linux内核方面是只能二选一是吧?

那么对于g4e,对于我们这样子的最终用户,我们期待的是不改菜单(或者少量修改),未来用最新版g4e/grub2能否自动适配两种protocol?能否兼容启动新老版本的linux内核(太老的内核除外)?理论上是否有可行性?

点评

对于 Linux 来说,它可以同时支持这两种。 对于 bootloader 来说,我们有办法知道一个内核是否支持 EFI Handover Protocol。但是,我们没办法知道一个内核是否支持 LoadFile2。 那不如像 GRUB2 一样,全部通  详情 回复 发表于 2023-4-6 19:08
回复

使用道具 举报

发表于 2023-4-6 19:08:52 | 显示全部楼层
本帖最后由 wintoflash 于 2023-4-6 19:15 编辑
liuzhaoyzz 发表于 2023-4-6 15:10
EFI Handover Protocol/Loadfile2看了你的介绍似乎以后在linux内核方面是只能二选一是吧?

那么对于g4 ...
EFI Handover Protocol/Loadfile2看了你的介绍似乎以后在linux内核方面是只能二选一是吧?

对于 Linux 来说,它可以同时支持这两种。
对于 bootloader 来说,我们有办法知道一个内核是否支持 EFI Handover Protocol。但是,我们没办法知道一个内核是否支持 LoadFile2。

那么对于g4e,对于我们这样子的最终用户,我们期待的是不改菜单(或者少量修改),未来用最新版g4e/grub2能否自动适配两种protocol?能否兼容启动新老版本的linux内核(太老的内核除外)?理论上是否有可行性?

那不如像 GRUB2 一样,全部通过 32 位传统协议启动,什么版本的都支持。
“理论上” 自动适配(甚至支持非常老的内核)是可行的。但是很复杂,我很懒,不想费这个脑子来写。
对于你们最终用户来说,要么用最新版内核,要么自己给 G4E 提交补丁加上这些功能,要是还不服就憋着。
test.jpg

点评

看了你的介绍,32/64-bit Boot Protocol实现起来太复杂了,虽然能够支持非常古老的内核,但也感觉没什么必要。 Handover协议目前还是很多linux发行版支持的,Loadfile2协议可能是未来发行版即将支持的。 当前g  详情 回复 发表于 2023-4-6 23:50
不得不说隔壁不点老大说的是对的,linux缺个类似于ntldr的普世玩意……当然我盲猜可能跟linux的文件系统什么的太多了有关系……其实一直很想问问方便如果支持EFI Handover就优先Handover否则loadfile2吗……不过开发  详情 回复 发表于 2023-4-6 19:46
回复

使用道具 举报

发表于 2023-4-6 19:46:17 | 显示全部楼层
wintoflash 发表于 2023-4-6 19:08
对于 Linux 来说,它可以同时支持这两种。
对于 bootloader 来说,我们有办法知道一个内核是否支持 EF ...

不得不说隔壁不点老大说的是对的,linux缺个类似于ntldr的普世玩意……当然我盲猜可能跟linux的文件系统什么的太多了有关系……其实一直很想问问方便如果支持EFI Handover就优先Handover否则loadfile2吗……不过开发者没精力那就算了……
回复

使用道具 举报

发表于 2023-4-6 21:06:21 | 显示全部楼层
1. linux6.2变更vmlinuz,   致 引导提交准备 及 bios入口 变化
   原来:为 efi handover(efi移交方式)
   现在:为 loadfile2 方式

2. g4e启动linux方式  变更:
    g4e2023-3-11以前版本,
          启linnux6.2内核以前版:直用:kernel
          启linnux6.2内核以后版:直用:不能
    g4e2023-3-11以后版本(
建议用 新版),
          启linnux6.2内核以前版:更为:chainloader /vmlinuz initrd=initrd
          启linnux6.2内核以后版:直用:kernel

3. 用法类似 ntloader V2


(暂时 理解,不知 对不对)
回复

使用道具 举报

发表于 2023-4-6 21:10:11 | 显示全部楼层
变化  是 有的 ,固定下来

        要不 ,以后新版linux的用户多了, 也会出现 很多人问。
回复

使用道具 举报

发表于 2023-4-6 23:50:30 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-4-7 07:50 编辑
wintoflash 发表于 2023-4-6 19:08
对于 Linux 来说,它可以同时支持这两种。
对于 bootloader 来说,我们有办法知道一个内核是否支持 EF ...

看了你的介绍,32/64-bit Boot Protocol实现起来太复杂了,虽然能够支持非常古老的内核,但也感觉没什么必要。

Handover协议目前还是很多linux发行版支持的,Loadfile2协议可能是未来发行版即将支持的。

当前g4e需要做的似乎就是用某个可靠的办法判断linux kernel是否支持Handover协议,如果支持的话g4e就尝试用Handover协议启动,如果不支持的话就尝试用Loadfile2协议启动。看起来你对两个协议颇有研究啊,Loadfile2协议是你引入g4e的吧,希望未来还是由你加个判断,解决新老内核兼容性匹配问题(太老的≤4.xx内核kernel panic那种就不用考虑了)。

我怀疑的是,2021-11-05到2023-3-11之间的handover协议版本有些问题。

原以为是个小问题,结果是个大的十字路口。
回复

使用道具 举报

发表于 2023-4-18 13:07:29 | 显示全部楼层
首先,感谢楼主的奉献,已用上.谢谢,进而想学习一下,图形模式及Unicode字体实现,发现在surface上,显示在左上角一小块
回复

使用道具 举报

发表于 2023-4-18 15:30:09 | 显示全部楼层
又有新作品了,下载支持
回复

使用道具 举报

发表于 2023-4-20 09:56:09 | 显示全部楼层
谢谢分享!!
回复

使用道具 举报

 楼主| 发表于 2023-4-22 18:20:03 | 显示全部楼层
图形模式及Unicode字体实现,发现在surface上,显示在左上角一小块

这是因为屏幕分辨率高,但是在菜单里,设置的背景图尺寸小,字体尺寸小。
回复

使用道具 举报

发表于 2023-4-26 12:36:01 | 显示全部楼层
最新版的hotkey真的不知道怎么用了。
setmenu /efi/grub/ext/hotkey [F9] reboot
或者
hotkey [F9] reboot
setmenu --/efi/grub/ext/hotkey [F9] reboot
都没有用
另外发现ext文件夹下有很多拓展命令,没有个教程,没有个说明啥的。对小白来说一点都不知道怎么用。
回复

使用道具 举报

发表于 2023-4-26 12:38:38 | 显示全部楼层
还有 title ^H 关机 halt菜单热键也没用而且菜单中还会把^H字符显示出来。
回复

使用道具 举报

 楼主| 发表于 2023-4-26 14:46:26 来自手机 | 显示全部楼层
在菜单里  /efi/grub/ext/hotkey  xxxxxxx  加载。进入命令行输入  help  hotkey  可以查看详细帮助

点评

另外我下载最新版的grub4dos for uefi ,里面的bootx64.efi文件360安全卫士会报毒说含有木马,我虽然知道误报,但是一下载下来,360就把bootx64.efi给删了,360真的蛋疼。  详情 回复 发表于 2023-4-27 04:59
您好,谢谢yaya大大的回复。按你的方法成功了。但是我按你的方法在命令行输入help hotkey,甚至把路径补全输入help /efi/grub/ext/hotkey 没反应,查不到帮助信息。另外如果把拓展命令放到grub文件夹是不是就可以直  详情 回复 发表于 2023-4-27 04:53
回复

使用道具 举报

发表于 2023-4-27 04:53:25 | 显示全部楼层
2011yaya2007777 发表于 2023-4-26 14:46
在菜单里  /efi/grub/ext/hotkey  xxxxxxx  加载。进入命令行输入  help  hotkey  可以查看详细帮助

您好,谢谢yaya大大的回复。按你的方法成功了。但是我按你的方法在命令行输入help hotkey,甚至把路径补全输入help /efi/grub/ext/hotkey 没反应,查不到帮助信息。另外如果把拓展命令放到grub文件夹是不是就可以直接用hotkey xxxxx了,不用把路径写全?因为总感觉这样的跟以前那样的比感觉怪怪的。

点评

标题里的快捷键是有效了,但是自定义快捷键还是没有用 /efi/grub/ext/hotkey command /efi/grub/myext/BGAutoChange /efi/grub/backgrounds/ /efi/grub/ext/hotkey P command /efi/grub/myext/BGAutoChange /efi  详情 回复 发表于 2023-4-27 06:04
回复

使用道具 举报

发表于 2023-4-27 04:59:55 | 显示全部楼层
2011yaya2007777 发表于 2023-4-26 14:46
在菜单里  /efi/grub/ext/hotkey  xxxxxxx  加载。进入命令行输入  help  hotkey  可以查看详细帮助

另外我下载最新版的grub4dos for uefi ,里面的bootx64.efi文件360安全卫士会报毒说含有木马,我虽然知道误报,但是一下载下来,360就把bootx64.efi给删了,360真的蛋疼。
回复

使用道具 举报

发表于 2023-4-27 06:04:19 | 显示全部楼层
游鱼摆尾 发表于 2023-4-27 04:53
您好,谢谢yaya大大的回复。按你的方法成功了。但是我按你的方法在命令行输入help hotkey,甚至把路径补 ...

标题里的快捷键是有效了,但是自定义快捷键还是没有用
/efi/grub/ext/hotkey [P] command /efi/grub/myext/BGAutoChange /efi/grub/backgrounds/       
/efi/grub/ext/hotkey P command /efi/grub/myext/BGAutoChange /efi/grub/backgrounds/       
/efi/grub/ext/hotkey [F5] command /efi/grub/myext/BGAutoChange /efi/grub/backgrounds/       
/efi/grub/ext/hotkey F5 command /efi/grub/myext/BGAutoChange /efi/grub/backgrounds/
怎么写都没有用
回复

使用道具 举报

 楼主| 发表于 2023-4-27 07:51:10 | 显示全部楼层
另外如果把拓展命令放到grub文件夹是不是就可以直接用hotkey xxxxx了,不用把路径写全?

在菜单里设置外置命令路径,使用时就不用再写路径了:
command --set-path=/EFI/grub/ext

在菜单里设置快捷热键字母颜色:
setmenu --hotkey-color=0xff00

命令要加引号:
hotkey -A [F4] "commandline"

关于热键帮助,前面说错了,应当是:
/efi/grub/ext/hotkey

点评

我发现了一点,不能设置字母f为快捷键。  详情 回复 发表于 2023-4-28 04:02
明白啦,有用了,谢谢大佬  详情 回复 发表于 2023-4-28 03:29
回复

使用道具 举报

发表于 2023-4-28 03:29:33 | 显示全部楼层
2011yaya2007777 发表于 2023-4-27 07:51
在菜单里设置外置命令路径,使用时就不用再写路径了:
command --set-path=/EFI/grub/ext

明白啦,有用了,谢谢大佬
回复

使用道具 举报

发表于 2023-4-28 04:02:58 | 显示全部楼层
2011yaya2007777 发表于 2023-4-27 07:51
在菜单里设置外置命令路径,使用时就不用再写路径了:
command --set-path=/EFI/grub/ext

我发现了一点,不能设置字母f为快捷键。
回复

使用道具 举报

发表于 2023-4-28 22:41:56 | 显示全部楼层
本帖最后由 chen463 于 2023-4-28 23:22 编辑

请教大大们,G4E是否不能安装在SD card-FAT16格式里面,找不到menu.lst启动,Grub2可以呀!应该说Qemu测试可以启动,实机测试似乎不认配备读卡机
回复

使用道具 举报

 楼主| 发表于 2023-4-29 07:00:06 | 显示全部楼层
G4E是否不能安装在SD card-FAT16格式里面,找不到menu.lst启动

这就是说可以进入命令行。
menu.lst是在“/efi/grub/"吗?

点评

可以进入命令行grub> menu.lst是在“/efi/grub/下 但是就是不显示菜单  详情 回复 发表于 2023-4-29 13:10
回复

使用道具 举报

 楼主| 发表于 2023-4-29 07:40:41 | 显示全部楼层
对于 Linux 来说,它可以同时支持这两种。
对于 bootloader 来说,我们有办法知道一个内核是否支持 EFI Handover Protocol。但是,我们没办法知道一个内核是否支持 LoadFile2。

ubuntu-18.04.6,内核版本20d,使用 EFI Handover Protocol 可以成功启动,但是使用 LoadFile2 失败。
ubuntu-22.04.2,内核版本20f,可以使用 EFI Handover Protocol/LoadFile2 这两种方法成功启动。

可否使用内核版本作为分界,>20e 时使用 LoadFile2?

点评

不行。 正常情况下,用 就可以保证能启动。 * 正常情况指的是正规安装的 Linux,kernel 和 initrd 都位于 FAT 分区里面。  详情 回复 发表于 2023-4-29 13:59
回复

使用道具 举报

发表于 2023-4-29 13:10:18 | 显示全部楼层
2011yaya2007777 发表于 2023-4-29 07:00
这就是说可以进入命令行。
menu.lst是在“/efi/grub/"吗?

可以进入命令行grub>
menu.lst是在“/efi/grub/下
但是就是不显示菜单
回复

使用道具 举报

 楼主| 发表于 2023-4-29 13:21:08 | 显示全部楼层
在命令行执行
root
ls
find
截图,判断一下,根目录是不是卡设备?

点评

里面是双启动安装,GRUB2菜单运行一切正常,就是G4E辨别不到SD配备。  详情 回复 发表于 2023-4-30 09:47
回复

使用道具 举报

发表于 2023-4-29 13:59:19 | 显示全部楼层
2011yaya2007777 发表于 2023-4-29 07:40
ubuntu-18.04.6,内核版本20d,使用 EFI Handover Protocol 可以成功启动,但是使用 LoadFile2 失败。
u ...
可否使用内核版本作为分界,>20e 时使用 LoadFile2?

不行。
正常情况下,用
  1. kernel (hdx,y)/xxx/vmlinuz xxx initrd=/xxx/initrd.img
  2. initrd (hdx,y)/xxx/initrd.img
复制代码

就可以保证能启动。
* 正常情况指的是正规安装的 Linux,kernel 和 initrd 都位于 FAT 分区里面。
回复

使用道具 举报

 楼主| 发表于 2023-4-29 15:52:13 | 显示全部楼层
* 正常情况指的是正规安装的 Linux,kernel 和 initrd 都位于 FAT 分区里面。

大帅,这是启动光盘镜像啊。莫非要把这两个文件复制到fat分区再加载?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-11 12:03

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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