无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
661#
 楼主| 发表于 2023-4-30 20:24:21 来自手机 | 显示全部楼层
2773#的两张截图似乎重复,然而下一屏幕后续内容又没有抓取,遗漏了重要信息。

点评

了解了,是要按到最后面就跳出GRUB的画面是吧!附上  详情 回复 发表于 2023-4-30 20:56
回复

使用道具 举报

662#
 楼主| 发表于 2023-4-30 21:06:55 | 显示全部楼层
很好!谢谢!明天研究一下。
回复

使用道具 举报

663#
 楼主| 发表于 2023-5-1 14:16:24 来自手机 | 显示全部楼层
截图是2020年的

点评

截图是今天的,是 grubfm 用 map 方式加载 ISO 时,出现的提示。应该是 grubfm 内嵌的 grldr 版本号。刚才我用 grub4dos-0.4.6a-2022-08-23 启动 grubfm.iso,加载某些 PE.ISO 出错的提示是一样的。用 2021.0516版本  详情 回复 发表于 2023-5-1 14:44
回复

使用道具 举报

664#
 楼主| 发表于 2023-5-1 18:59:02 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-5-1 21:04 编辑
了解了,是要按到最后面就跳出GRUB的画面是吧!附上

试一试这个。如果仍然有问题,截图反馈。

BOOTX64.rar

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

点评

还是无法显示菜单,使用Qemu测试是OK的,实机测试不行。  详情 回复 发表于 2023-5-2 23:52
回复

使用道具 举报

665#
 楼主| 发表于 2023-5-2 09:42:54 来自手机 | 显示全部楼层
上传grubfm.iso及PE.ISO(2003PE),以便复现问题。
回复

使用道具 举报

666#
 楼主| 发表于 2023-5-3 18:16:01 | 显示全部楼层
还是无法显示菜单,使用Qemu测试是OK的,实机测试不行。

试一试这个。Qemu及实机测试截图。谢谢!
2794#截图很好。

BOOTX64.rar

145.35 KB, 下载次数: 9, 下载积分: 无忧币 -2

点评

后学请教,G4E是否对NTFS分区支持兼容性没有像GRUB2那么完美,可否借镜于GRUB2。 如果主板支持NTFS启动,想把UEFI安装在NTFS分区,可以的。 测试外挂U固态盘是NTFS分区,UEFI菜单是可以启动的。 G4E菜单藉由使  详情 回复 发表于 2023-5-4 09:22
回复

使用道具 举报

667#
 楼主| 发表于 2023-5-4 08:07:13 | 显示全部楼层
还是无法显示菜单,使用Qemu测试是OK的,实机测试不行。

再试一试这个。由于没有重现的条件,只能盲猜。

BOOTX64.rar

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

回复

使用道具 举报

668#
 楼主| 发表于 2023-5-4 10:40:27 | 显示全部楼层
哈哈哈!终于蒙到了,SD卡启动G4E成功,攻克G4E启动SD卡堡畾,恭喜!

这两张图各表示什么?
第一张包含usb,是5月3日的?
第二张怎么没有usb?
5月4日的包含usb再测试一下,谢谢。

点评

从PCIe盘、SATA盘、USB盘、SD卡、CF卡,外挂U固态SDD盘分区是NTFS启动UEFI全部都替换408KB新G4E启动檔,一切OK成功启动。 54没有成功启动,也有截图。  详情 回复 发表于 2023-5-4 11:11
回复

使用道具 举报

669#
 楼主| 发表于 2023-5-4 10:46:10 | 显示全部楼层
老毛桃的 XP.PE,用  grubfm.iso 能完全启动加载工具,用 SISO 或 ventoy 加载,能启动到 XP.PE,但加载不上工具。2003PE 3种方式都可以。

问题找到了。是由于当年为了配合SVBus,调整了存储碎片数据的位置。grubfm没有跟进,替换新的grub.exe。
替换grubfm源码中的grub.exe,重新编译即可。

点评

grubfm 现在已经停止开发了,最新版就是 7.4,看来要使用 grubfm,只能使用旧版的 G4D 了。重新编译我不会。  详情 回复 发表于 2023-5-4 13:12
回复

使用道具 举报

670#
 楼主| 发表于 2023-5-4 12:30:15 来自手机 | 显示全部楼层
明白了。QEMU识别U盘为Ata设备。谢谢测试。
回复

使用道具 举报

671#
 楼主| 发表于 2023-5-5 08:56:55 | 显示全部楼层
grubfm 现在已经停止开发了

今天编译了一个新的。

grubfm.part3.rar

498.99 KB, 下载次数: 23, 下载积分: 无忧币 -2

grubfm.part2.rar

3 MB, 下载次数: 28, 下载积分: 无忧币 -2

grubfm.part1.rar

3 MB, 下载次数: 26, 下载积分: 无忧币 -2

点评

谢谢大师!可以在新版 grub4dos BIOS 启动下,用 grubfm 加载原先无法启动的PE了。 你更新的 grubfm,少了一个 【Boot VHD(memdisk)】,ksafei 在原基础上又添加了【vboot 启动 VHD】,主要依靠 grubf  详情 回复 发表于 2023-5-5 11:16
回复

使用道具 举报

672#
 楼主| 发表于 2023-5-5 11:29:27 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-5-5 11:53 编辑

我是从官网下载的,自然没有那个补丁了。你请他打吧,我没有补丁。

点评

官网上确实没有这两个选择项,随着软硬件的进展,你们这些大师与时共进作进一步开发,我们使用者再次感谢你们!  详情 回复 发表于 2023-5-5 11:50
回复

使用道具 举报

673#
 楼主| 发表于 2023-5-5 12:54:34 来自手机 | 显示全部楼层
看见了,人家昨天就重现编译了,我不知道。
回复

使用道具 举报

674#
 楼主| 发表于 2023-5-7 10:54:23 | 显示全部楼层
Handover协议目前还是很多linux发行版支持的,Loadfile2协议可能是未来发行版即将支持的。

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

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

我觉得现阶段仍然需要同时支持Handover协议和Loadfile2协议(不支持Handover协议内核版本<20b)。
我做了一个补丁,kernel 函数增加 --handover 和 --loadfile2 参数,以便强制使用Handover或LoadFile2协议。没有参数,则内核版本<20f,使用Handover协议,内核版本>20e,使用LoadFile2协议。可能不严谨。不知到其他方法。

BOOTX64.rar

145.43 KB, 下载次数: 3, 下载积分: 无忧币 -2

点评

2818楼的这个版本,试了几个linux.iso,都不能启动,包括上面测试的ubuntu-18.04.6-desktop-amd64.iso,截图同上。  详情 回复 发表于 2023-5-7 18:27
逻辑似乎有误。是否支持 Handover 是可以判断出来的 伪代码:  详情 回复 发表于 2023-5-7 11:53
回复

使用道具 举报

675#
 楼主| 发表于 2023-5-7 12:19:53 来自手机 | 显示全部楼层
我想知道,这样是判断uefi固件支持不支持,还是判断所加载的那个linux镜像的内核支持不支持?

点评

判断内核是否支持。  详情 回复 发表于 2023-5-7 13:44
回复

使用道具 举报

676#
 楼主| 发表于 2023-5-7 14:23:41 | 显示全部楼层
因此放弃使用 EFI Handover Protocol 启动 Linux,改用 LoadFile2 提供 initrd 加载功能。
此更新会带来不兼容,请注意:
  不再支持 x64 UEFI 下启动 32 位内核 (或者反过来)。
  不再支持 ntloader v1 版本,请使用 ntloader v2 版本。(下载)

请教一个问题:
是不是说使用 EFI Handover Protocol 启动 Linux,
  支持 x64 UEFI 下启动 32 位内核 (或者反过来)?

点评

只要linux内核开了对应的选项(EFI Mixed Mode),就可以。  详情 回复 发表于 2023-5-7 15:06
回复

使用道具 举报

677#
 楼主| 发表于 2023-5-7 15:45:15 | 显示全部楼层
只要linux内核开了对应的选项(EFI Mixed Mode),就可以。

IS_UEFI_xx  这是当前 EFI 环境。
lh.xloadflags 这是允许启动的内核位?比如 h.xloadflags=4,允许启动 32 位内核?那当前启动的 Linux 是多少位?从那里获知?

点评

struct linux_kernel_header 就是linux内核的文件头。xloadflags就是它给bootloader提供的信息,告诉bootloader它有哪些特性。  详情 回复 发表于 2023-5-7 15:58
这是伪代码。 判断uefi位数,用#ifdef宏就行了。 xloadflags是按位表示内核的一些特性的。  详情 回复 发表于 2023-5-7 15:52
回复

使用道具 举报

678#
 楼主| 发表于 2023-5-7 17:03:53 | 显示全部楼层
按 wintoflash 提供的逻辑,重新编译的。请测试。

BOOTX64.rar

145.46 KB, 下载次数: 11, 下载积分: 无忧币 -2

点评

文件名称: BOOTX64.EFI文件大小: 412.00 KB (421,888 字节)修改时间: 2023年05月07日,16:50:56MD5: 3DDDEA8AAF6BFCDAFF339E1A7E6CAF02 ubuntu.iso记不清是从哪里下载的,大概是清华大学镜像站吧。https://  详情 回复 发表于 2023-5-7 17:56
回复

使用道具 举报

679#
 楼主| 发表于 2023-5-7 19:12:56 来自手机 | 显示全部楼层
菜单第一行增加  debug 3,initrd 前增加暂停。

点评

好像是map导致的死机 title /linux/ubuntu/ubuntu-14.04.6-desktop-amd64.iso debug 3 find --ignore-floppies --ignore-cd --set-root /linux/ubuntu/ubuntu-14.04.6-desktop-amd64.iso pause map map /linu  详情 回复 发表于 2023-5-7 19:23
回复

使用道具 举报

680#
 楼主| 发表于 2023-5-7 19:21:42 来自手机 | 显示全部楼层
2818#不用测试了。其实主要内容都一样,只是判断使用哪个协议的逻辑不同。我测试ubuntu-18.04.6-desktop-amd64.iso,以ubuntu-22.04.2-desktop-amd64.iso都可以正常启动。在QEMU虚拟机及实机测试的。
回复

使用道具 举报

681#
 楼主| 发表于 2023-5-7 19:45:02 来自手机 | 显示全部楼层
谢谢测试,明天我查一下。
回复

使用道具 举报

682#
 楼主| 发表于 2023-5-8 09:37:47 | 显示全部楼层
好像是map导致的死机,pause map这一句执行结果看到了,pause  hook这一句没看到。


我今天从清华大学网站下载了 ubuntu-14.04.6-desktop-amd64.iso ,使用你提供的菜单,在 QEMU、VMware® Workstation 16 Pro、实机测试,都正常。
奇怪了,你的虚拟机是什么版本?我怎样才能重现问题?

点评

中午抽空实体机上试了下,ubuntu14 16都可以启动,为啥vm虚拟机就不行?为啥2021-10-21可以虚拟机启动?奇怪了。。。 还没有深入测试,很奇怪。  详情 回复 发表于 2023-5-8 13:54
https://liuzhaoyzz.lanzoum.com/b00nnn5uf 我用的是这个版本。12.5.7  详情 回复 发表于 2023-5-8 11:00
回复

使用道具 举报

683#
 楼主| 发表于 2023-5-8 14:46:50 | 显示全部楼层
我用的是这个版本。12.5.7

我下载了这个版本的虚拟机。第一次测试似乎卡在map。后来又测试了两次,都正常。怀疑第一次出现map时,回车不起作用,焦点不在虚拟机。后两次都是用鼠标点一下虚拟机中心,再按回车键。

点评

新建了个vmware虚拟机,彻底解决了“发生错误,导致虚拟cpu关闭状态”的问题。 BOOTX64.EFI2023-05-07+vmware12.5.7 1、ubuntu-14.04.6-desktop-amd64.iso可以启动√。 2、ubuntu-16.04.7-desktop-amd64.iso可以  详情 回复 发表于 2023-5-8 19:33
回复

使用道具 举报

684#
 楼主| 发表于 2023-5-8 20:07:30 来自手机 | 显示全部楼层
把这个MX-19.3_KDE_x64.iso发给我吧

点评

好像清华大学镜像站有吧?电脑被熊孩子抢了  详情 回复 发表于 2023-5-8 20:14
回复

使用道具 举报

685#
 楼主| 发表于 2023-5-8 20:37:02 来自手机 | 显示全部楼层
确实奇怪。你明天发给我吧。测试要在同一环境。
回复

使用道具 举报

686#
 楼主| 发表于 2023-5-9 07:43:10 | 显示全部楼层
正在上传,需要23分钟大概。

今天测试 MX-19.3_KDE_x64.iso ,使用你提供的菜单,在 QEMU、VMware® Workstation 、实机测试,都是菜单执行完 boot,进入 linux ,然后提示按 r 重启,按 p 关机。

点评

你的菜单,是不是抄错了?find xxx.iso后面有 ;; uuid () ;; echo %?_UUID%不能漏掉了。 我去清华大学镜像站重新下载了最新版本的MXlinux,可以启动,包括Antix分支和MX分支。 antix启动菜单 title /linux/mxli  详情 回复 发表于 2023-5-10 22:26
回复

使用道具 举报

687#
 楼主| 发表于 2023-5-11 06:49:57 | 显示全部楼层
GRUB2 官方也准备统一 UEFI 下 Linux 的启动方式了,统一用 LoadFile2 的那个方法

昨天推送了一个补丁,到今天 build-push 仍然没有反应。是 ubuntu-18.04 落伍了吗?

点评

重试了好几次,还是没有反应。不知道是怎么回事。  详情 回复 发表于 2023-5-11 13:49
回复

使用道具 举报

688#
 楼主| 发表于 2023-5-12 20:10:36 来自手机 | 显示全部楼层
我一开始猜想就是18.04落伍了。今天换成20.04.6,又说gcc4.8找不到还是什么的,奇怪了,你不是打了支持gcc高版本的补丁了吗?

点评

没推送。 而且目前efi打上之后是有问题的。  详情 回复 发表于 2023-5-12 20:16
回复

使用道具 举报

689#
 楼主| 发表于 2023-5-12 20:30:43 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-5-12 20:33 编辑

2865#那个网址我现在打不开。
那是不是把18.04改为20.04就行了?

点评

20.04没有gcc-4.8了。  详情 回复 发表于 2023-5-12 20:32
回复

使用道具 举报

690#
 楼主| 发表于 2023-5-12 20:35:30 | 显示全部楼层
那只能跟进了,出现问题再说。

点评

g4d 打上补丁后,用高版本 gcc (  详情 回复 发表于 2023-5-12 20:53
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-18 11:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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