无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1844|回复: 14
打印 上一主题 下一主题

[讨论] 疑问:G4E不支持ubuntu X86版启动? g4d(bios)和grub2(uefi)是可以的。

[复制链接]
跳转到指定楼层
1#
发表于 2024-6-17 17:05:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wuwuzz 于 2024-6-18 15:48 编辑

一、环境描述
1、存在方式
U盘只有1个主分区,FAT32格式。以Live USB方式启动Linux ISO,设置了persistent持久化语句。MBR上装了g4d 0.4.6a、FAT32分区EFI文件下装了g4e 20240226、grub2 2.05。G4E/GRUB2可互切菜单。

2、linux版本限定
linux选型是为应用软件vusbtool服务。该应用软件依赖 ubuntu 18/16改版linux平台,因此暂只考虑启动这些发行版。已测试、能适配应用软件的发行版有:linux-mint V19.X、linux-lite V3.X-V4.X 、ubuntu-mate 16/18、ubuntu-gnome 16、kubuntu 16/18...等的对应X86/X64版本。
(注:为什么不用更新的基于Ubuntu 19/20/22/24的对应新改版,因为它们缺失python-GTK、theme等组件,也无法apt install安装,不能完美支持应用软件GUI界面,ubuntu版本最新≠最合适≠最好。因此,不考虑、不讨论Ubuntu 19-24版。至于这个应用软件是个什么性质的东西,读者如有需求,我再详细解释)

主要菜单语句:g4d(BIOS)/g4e(UEFI)
kernel /path_linuxiso/vmlinuz boot=casper iso-scan/filename=/path_linuxiso/linuxver.iso  noprompt  persistent persistent-path=/path_linuxiso/ locale=zh_CN.UTF-8  
initrd /path_linuxiso/initrd
boot

grub2 2.05 (UEFI)
linux /path_linuxiso/vmlinuz boot=casper iso-scan/filename=/path_linuxiso/linuxver.iso  noprompt  persistent persistent-path=/path_linuxiso/ locale=zh_CN.UTF-8  
initrd /path_linuxiso/initrd
以上linuxver.iso、vmlinuz、initrd是统称,实际一一对应相应版本的linux,均单独存放在自己的文件夹,不与其他版本linux混淆。

3、参试PC:Intel X64平台。海尔S4、清华同方T43等笔记本,AMI UEFI/CSM。

二、问题症状
以上改版的X86/X64版本可以用g4d 0.4.6a(BIOS/UEFI CSM环境)、grub2 2.05(UEFI环境)正常启动进入。其X64版,G4E能正常启动进入,但X86版,G4E不能正常启动进入。以ubuntu-mate 18为例,debug 3的截图如下,执行kenel、initrd时有暂停。--handover  --loadfile2选项都试了。





三、另@liuzhaoyzz:CrScreenshotDxe.efi截屏模块,G4E下不能正常保存截图(载入时、Ctrl+ALT+F12时,左上角有光标块闪烁提示,但U盘FAT32分区无PNG截图)。由于我的U盘G4E/GRUB2菜单可互切,退出G4E,转到grub2环境,截屏模块又能正常保存截图了。







点评

辛苦了  发表于 2024-6-17 17:31

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

2#
发表于 2024-6-17 17:22:01 | 只看该作者
loadfile2 不支持 efi mix mode (32->64/64->32)
handover 支持 32->64 (kernel自带转模式代码) 不支持 64->32。

点评

谢谢W大的解答。这样的话,handover选项还是有希望把X86版跑起来。 “kernel doesn't support 64-bit CPUS”-怀疑G4E的判断逻辑不够完善,线条有点画粗了。  详情 回复 发表于 2024-6-17 18:09
回复

使用道具 举报

3#
发表于 2024-6-17 17:31:03 | 只看该作者
谢谢分享
回复

使用道具 举报

4#
 楼主| 发表于 2024-6-17 18:09:26 | 只看该作者
wintoflash 发表于 2024-6-17 17:22
loadfile2 不支持 efi mix mode (32->64/64->32)
handover 支持 32->64 (kernel自带转模式代码) 不支持 64 ...

谢谢W大的解答。这样的话,handover选项还是有希望把X86版跑起来。

“kernel doesn't support 64-bit CPUS”-怀疑G4E的判断逻辑不够完善,线条有点画粗了。

点评

不是。这是内核的局限。内核只考虑了32位启动64位内核的情况,没有考虑反过来的情况,因为正常情况下不会这么反过来用。  详情 回复 发表于 2024-6-17 18:41
回复

使用道具 举报

5#
发表于 2024-6-17 18:41:12 | 只看该作者
wuwuzz 发表于 2024-6-17 18:09
谢谢W大的解答。这样的话,handover选项还是有希望把X86版跑起来。

“kernel doesn't support 64-bit  ...

不是。这是内核的局限。内核只考虑了32位启动64位内核的情况,没有考虑反过来的情况,因为正常情况下不会这么反过来用。
回复

使用道具 举报

6#
发表于 2024-6-17 19:45:07 | 只看该作者

谢谢分享
回复

使用道具 举报

7#
发表于 2024-6-17 20:02:50 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
发表于 2024-6-17 21:49:32 来自手机 | 只看该作者
32位的ubuntu旧版本?真的必须用这一版?

点评

不是这个意思。 用X64版当然可以。一楼已经说了,版本限定,主要集中在16/18,而不是X64/X86。 回到本帖启动主题,如果不支持X86版启动,适用范围就少了一半,影响较大。因为这不只一个Ubuntu发行版,而是linu  详情 回复 发表于 2024-6-18 03:58
回复

使用道具 举报

9#
发表于 2024-6-17 23:42:17 | 只看该作者
这就像某特色一样有特务,不会比日本鬼子差
回复

使用道具 举报

10#
 楼主| 发表于 2024-6-18 03:58:47 | 只看该作者
本帖最后由 wuwuzz 于 2024-6-18 10:09 编辑
plutoshen 发表于 2024-6-17 21:49
32位的ubuntu旧版本?真的必须用这一版?

不是这个意思。

用X64版当然可以。一楼已经说了,版本限定,主要集中在16/18,而不是X64/X86。

回到本帖启动主题,如果不支持XXXubuntu 16/18的X86版启动,适用范围就少了一半,影响较大。因为XXX不只一个Ubuntu发行版,而是代表linux-mint、linux-lite...等N个发行版。我的疑问是,同样一个X86版ISO/X64 CPU,UEFI环境下,grub2可以支持启动进入,G4E不支持。那么,G4E能否修改支持。如果不打算修改支持,那么到一楼这种启动场景,用户就得换用grub2。

点评

难度很高,可能有很多地方要重新设计。 GRUB2 在这种情况下是通过传统协议来启动 Linux 的,你可以看下 GRUB2 这一部分的代码,很复杂。  详情 回复 发表于 2024-6-20 13:38
回复

使用道具 举报

11#
发表于 2024-6-20 13:38:41 | 只看该作者
本帖最后由 wintoflash 于 2024-6-20 13:44 编辑
wuwuzz 发表于 2024-6-18 03:58
不是这个意思。

用X64版当然可以。一楼已经说了,版本限定,主要集中在16/18,而不是X64/X86。
G4E能否修改支持

难度很高,可能有很多地方要重新设计。
GRUB2 在这种情况下是通过传统协议来启动 Linux 的,你可以看下 GRUB2 这一部分的代码,很复杂。
如果不打算修改支持,那么到一楼这种启动场景,用户就得换用grub2。

支持这一场景的,只有 GRUB2 和 Limine (存疑)。

点评

一、谢谢W大的指点解答。 难度很高的话,G4E不必花力气大修改,毕竟投入产出比有限。目前实际应用中,启动U盘主力用的g4d 0.4.6a(BIOS环境)、 grub2 2.05(UEFI环境),g4e作为辅助。 二、题外话(汇报兼解释):这  详情 回复 发表于 2024-6-20 20:02
回复

使用道具 举报

12#
 楼主| 发表于 2024-6-20 20:02:06 | 只看该作者
本帖最后由 wuwuzz 于 2024-6-20 20:03 编辑
wintoflash 发表于 2024-6-20 13:38
难度很高,可能有很多地方要重新设计。
GRUB2 在这种情况下是通过传统协议来启动 Linux 的,你可以看 ...

一、谢谢W大的指点解答。
难度很高的话,G4E不必花力气大修改,毕竟投入产出比有限。目前实际应用中,启动U盘主力用的g4d 0.4.6a(BIOS环境)、grub2 2.05(UEFI环境),g4e作为辅助。

二、题外话(汇报兼解释):这里做USB启动测试,主要还是想尽量扩大vusbtool(一个python-gtk应用软件)的Linux运行平台范围。目前已经有足够多的Ubuntu衍生版可以完美支持vusbtool,win10上也可以运行vusbtool(有些GUI在MS Windows上无法实现,但不影响主要功能)。G4E没必要为此做很多修改。

vusbtool的主要作用:“击破BIOS/UEFI黑箱,研究USB启动”的必要工具。
主要就是用Ellisys硬件USB协议分析仪+我家神兽写的USB Mass Storage存储设备类解码器,完成上电、USB启动期间,对目标的监听抓包、解码,从而“直观”看到U盘<-->UEFI/BIOS间底层会话具体内容(也就是解决g4d/fbinst/g4e...开发历史上曾经遇到的障碍,增强观察分析手段)。



回复

使用道具 举报

13#
发表于 2024-6-25 14:37:38 | 只看该作者
wintoflash已经解释的很清楚了。

CrScreenshotDxe.efi截屏模块,G4E下不能正常保存截图。
具体原因我也不清楚,大部分时间是可用的,例外的事情说不好。
回复

使用道具 举报

14#
发表于 2024-11-5 13:22:50 | 只看该作者
赞赞
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 14:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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