无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
2731#
发表于 2023-4-3 22:14:07 | 只看该作者
chen463 发表于 2023-4-3 21:33
title 使用外部命令 NTBOOT 启动 Windows 系统\n (hd1,2)
map --mem --no-hook /efi/grub/ext/NTBOOT (h ...

"失败" 具体是怎么个失败法?

点评

另外后学实机重复开关机操作,发现ROOT会有互换的现象,接下来(方案1)菜单uuid(hdx,y)操作就会出现问题  详情 回复 发表于 2023-4-4 10:07
显示 status:oxcooooooe  详情 回复 发表于 2023-4-4 10:01
回复

使用道具 举报

2732#
发表于 2023-4-4 10:01:23 | 只看该作者
wintoflash 发表于 2023-4-3 22:14
"失败" 具体是怎么个失败法?

显示 status:oxcooooooe

20230404_08.png (985.05 KB, 下载次数: 144)

20230404_08.png
回复

使用道具 举报

2733#
发表于 2023-4-4 10:07:49 | 只看该作者
本帖最后由 chen463 于 2023-4-4 12:53 编辑
wintoflash 发表于 2023-4-3 22:14
"失败" 具体是怎么个失败法?

另外后学实机重复开关机操作,发现ROOT会有互换的现象,接下来(方案1)菜单uuid(hdx,y)操作就会出现问题
实机测试-(kernel 方案) (chainloader 方案)启动 Windows 系统,在我新笔电配备-固态SDD硬盘操作,全部(hdx,y)尝试了无法找到系统启动,(hd1,1)看不到,是被隐藏还是不存在。


2023-04-04_111.png (926.3 KB, 下载次数: 131)

2023-04-04_111.png

2023-04-04_011.png (928.58 KB, 下载次数: 139)

2023-04-04_011.png

点评

你应该用 find --set-root 查找标志文件来确定磁盘分区号,比如  详情 回复 发表于 2023-4-4 20:50
回复

使用道具 举报

2734#
发表于 2023-4-4 15:32:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2023-4-4 15:56 编辑
wintoflash 发表于 2023-4-1 09:42
操作系统调用 BS->ExitBootServices 之后,所有的 UEFI 启动服务就都不能用了,BlockIo,GOP 之类的所 ...
方法三是正确的。报错是找不到 initrd。原因是你用的 Ubuntu 版本太老了。用 Ubuntu 22.04 就没问题。
老的 linux 内核,支持 EFI Handover,不支持 LoadFile2。新的 linux 内核,支持 LoadFile2,不支持 EFI Handover。
以前 G4E 用的是 EFI Handover,现在用的是 LoadFile2。

感觉大佬的解释不太对呢?从时间逻辑上看不太对,因为2023-03-11放弃使用 EFI Handover Protocol 启动 Linux,改用 LoadFile2 提供 initrd 加载功能。但我测试成堆的grub4dos-for_UEFI,
grub4dos-for_UEFI-2021-10-21可以启动ubuntu-18.04.6-desktop-amd64.iso,√
grub4dos-for_UEFI-2021-11-05启动失败×,后面的版本我又试了,很多无法启动ubuntu-18.04.6-desktop-amd64.iso。
grub4dos-for_UEFI-2021-11-05应该是还是用的EFI Handover,这个启动ubuntu出错,不应该是 EFI Handover/ LoadFile2的问题呀?
因为2023-03-11才修改EFI Handover/ LoadFile2,在修改EFI Handover/ LoadFile2之前grub4dos-for_UEFI-2021-11-05就出错了,从时间逻辑上来说对不上啊?

2023-03-11 (a1ive)
Linux 6.2 将已废弃的 EFI Handover Protocol 设为可选项:
    https://github.com/torvalds/linux/commit/cc3fdda2876e58a7e83e558ab51853cf106afb6a
因此放弃使用 EFI Handover Protocol 启动 Linux,改用 LoadFile2 提供 initrd 加载功能。
此更新会带来不兼容,请注意:
  不再支持 x64 UEFI 下启动 32 位内核 (或者反过来)。
  不再支持 ntloader v1 版本,请使用 ntloader v2 版本。(下载)
========
本次改动应该可以解决在某些电脑上用 kernel 命令启动 ntloader 时出现的问题。
========
我偷懒了一下,目前 kernel 命令实际上就是 chainloader 命令。将来可能会添加对 wimboot 的支持。


点评

你太死板了。要看他具体的报错: 他的机器上 map 是没有问题的。  详情 回复 发表于 2023-4-4 20:51
回复

使用道具 举报

2735#
发表于 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 ()
复制代码
回复

使用道具 举报

2736#
发表于 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 是没有问题的。


回复

使用道具 举报

2737#
发表于 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吗?
回复

使用道具 举报

2738#
 楼主| 发表于 2023-4-4 21:58:56 来自手机 | 只看该作者
G4E是最新版本。ubuntu有版本号。
回复

使用道具 举报

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

使用道具 举报

2740#
发表于 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 提交补丁加上这些功能,要是还不服就憋着。

点评

看了你的介绍,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
回复

使用道具 举报

2741#
发表于 2023-4-6 19:46:17 | 只看该作者
wintoflash 发表于 2023-4-6 19:08
对于 Linux 来说,它可以同时支持这两种。
对于 bootloader 来说,我们有办法知道一个内核是否支持 EF ...

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

使用道具 举报

2742#
发表于 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


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

使用道具 举报

2743#
发表于 2023-4-6 21:10:11 | 只看该作者
变化  是 有的 ,固定下来

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

使用道具 举报

2744#
发表于 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协议版本有些问题。

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

使用道具 举报

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

使用道具 举报

2746#
发表于 2023-4-18 15:30:09 | 只看该作者
又有新作品了,下载支持
回复

使用道具 举报

2747#
发表于 2023-4-20 09:56:09 | 只看该作者
谢谢分享!!
回复

使用道具 举报

2748#
 楼主| 发表于 2023-4-22 18:20:03 | 只看该作者
图形模式及Unicode字体实现,发现在surface上,显示在左上角一小块

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

使用道具 举报

2749#
发表于 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文件夹下有很多拓展命令,没有个教程,没有个说明啥的。对小白来说一点都不知道怎么用。
回复

使用道具 举报

2750#
发表于 2023-4-26 12:38:38 | 只看该作者
还有 title ^H 关机 halt菜单热键也没用而且菜单中还会把^H字符显示出来。
回复

使用道具 举报

2751#
 楼主| 发表于 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
回复

使用道具 举报

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

使用道具 举报

2753#
发表于 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真的蛋疼。
回复

使用道具 举报

2754#
发表于 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/
怎么写都没有用
回复

使用道具 举报

2755#
 楼主| 发表于 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
回复

使用道具 举报

2756#
发表于 2023-4-28 03:29:33 | 只看该作者
2011yaya2007777 发表于 2023-4-27 07:51
在菜单里设置外置命令路径,使用时就不用再写路径了:
command --set-path=/EFI/grub/ext

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

使用道具 举报

2757#
发表于 2023-4-28 04:02:58 | 只看该作者
2011yaya2007777 发表于 2023-4-27 07:51
在菜单里设置外置命令路径,使用时就不用再写路径了:
command --set-path=/EFI/grub/ext

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

使用道具 举报

2758#
发表于 2023-4-28 22:41:56 | 只看该作者
本帖最后由 chen463 于 2023-4-28 23:22 编辑

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

使用道具 举报

2759#
 楼主| 发表于 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
回复

使用道具 举报

2760#
 楼主| 发表于 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
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-14 00:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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