grub4dos 非UEFI版,有没有 efi loader mod?
1457384613gh opened this issue · 16 comments
grub4dos 非UEFI版,有没有 efi loader mod?
我想实现
BIOS->MBR->PBR->grub4dos->refind_x64.efi
没看懂。
你是想 BIOS 下加载类似 DUET 的东西来模拟 UEFI 吗?
那跟 GRUB4DOS 本身没啥关系,你直接在 GRUB4DOS 下启动 DUET 之类的东西不就行了?
对,就是给旧主板模拟 UEFI。
那个 DUET 具体叫什么?
我百度搜索了一下,有好多东西都叫 DUET。
对,就是给旧主板模拟 UEFI。 那个 DUET 具体叫什么? 我百度搜索了一下,有好多东西都叫 DUET。
DUET 是 EDK2 里面的一个组件,早就停止开发了。https://github.com/tianocore/tianocore.github.io/wiki/DuetPkg
Clover 和 OpenCore 的 UEFI 模拟就是基于它开发的。
你可以用 GRUB4DOS 启动 Clover 或 OpenCore。
你可以用 GRUB4DOS 启动 Clover 或 OpenCore。
Legacy BIOS 启动的 GRUB4DOS 可以加载 CLOVERX64.efi 或 OpenCore.efi 吗?
前面说了,你要用 Clover 或 OpenCore 的模拟 UEFI 功能,所以你要加载的是 Clover / OpenCore 的 MBR 或 PBR。
GRUB4DOS 没有模拟 UEFI 的功能,也不会添加模拟 UEFI 的功能。
好的,谢谢,顺便问另一个问题。
GRUB4DOS 可以使用 改编自 grub2的 主题吗?
GRUB4DOS 可以使用 改编自 grub2的 主题吗?
这似乎不是一个有意义的问题。你如果 "改编" 成 GRUB4DOS 的外观设置了,那当然可以在 GRUB4DOS 上用。
你想问的问题也许应该是 "如何 自定义 GRUB4DOS 的视觉效果"
GRUB4DOS 和 GRUB2 在主题外观方面的配置方法是完全不同的,可能并不能实现相同的效果。
目前也没有比较详细的文档来介绍 GRUB4DOS 如何自定义外观风格,可以参考 GRUB4DOS 开发者 @yaya2007 的帖子:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=369720
有的有缺陷的显卡,加载主题会出现分辨率异常的现象。
有一个关于 Arrandale 显卡 分辨率的问题。
Arrandale GPU
的情况
-
如果 Legacy BIOS 启动 GRUB4DOS 并且加载主题,
Arrandale GPU
能够使用1366x768
的分辨率,和显示器分辨率一样,并且高于1024x768
; -
如果 UEFI 启动 GRUB4DOS for UEFI 并且加载主题,
Arrandale GPU
最大只能使用1024x768
的分辨率,低于显示器分辨率,并且会造成 图形界面横向拉伸,主题变丑不美观。
有解决方案的先例
为了防止图形界面横向拉伸,CloverBootloader
的团队已经开发了 CsmVideoDxe.efi
; OpenCore
的团队已经开发了 BiosVideo.efi
,能够在 UEFI 模式下, 以 CSM 或 Legacy 模式加载 Arrandale GPU
的方式 加载Arrandale GPU
,使得 UEFI 的图形界面能够使用 来自 CSM 或 Legacy 模式 的更高的分辨率,使得 UEFI 图形界面的分辨率能够与 显示器的分辨率保持一致,防止主题失真。
链接中是 efi 图形驱动 的源代码。
https://github.com/CloverHackyColor/CloverBootloader/tree/master/CloverEFI/BiosVideo
https://github.com/acidanthera/OpenCorePkg/tree/master/Legacy/BootPlatform/BiosVideo
希望
- 我希望 GRUB4DOS for UEFI 的图形界面也能够达到这种效果。
然而,GRUB4DOS for UEFI 无法 像 加载CrScreenshotDxe.efi
那样直接加载CsmVideoDxe.efi
或BiosVideo.efi
,grub2 也不能够做到。
很可能是因为CsmVideoDxe.efi
或BiosVideo.efi
都需要 被配置文件中的特殊字符串激活,然而 配置文件肯定是不一样的。
提问
- 有没有什么 通用的 能够让 至少GRUB4DOS for UEFI 或者 grub2 的图形界面 达到那种效果的 EFI 图形驱动?
- 还有其他方式达到这种效果吗?
- 可不可以 根据上述链接中的源代码 改编一个 UEFI图形界面通用的驱动?
就是那种,让拥有Arrandale GPU
以及类似 GPU 的用户 自己手动添加一行load xxxx.efi
就加载 该驱动 的效果。
Arrandale GPU
的信息
然而,GRUB4DOS for UEFI 无法 像 加载 CrScreenshotDxe.efi 那样直接加载 CsmVideoDxe.efi 或 BiosVideo.efi,grub2 也不能够做到。
很可能是因为 CsmVideoDxe.efi 或 BiosVideo.efi 都需要 被配置文件中的特殊字符串激活,然而 配置文件肯定是不一样的。
你在 grub 中执行 load /xxx/CsmVideoDxe.efi
之后,再执行 chainloader /path/to/grub4dos.efi
,重新加载一次 grub 试试。
你在 grub 中执行
load /xxx/CsmVideoDxe.efi
之后,再执行chainloader /path/to/grub4dos.efi
,重新加载一次 grub 试试。
试了 grub 和 refind 加载 CsmVideoDxe.efi,没什么效果。
我看了 CsmVideoDxe.efi
的代码,它就是个普通的 UEFI 显示驱动,只是把 GOP 的一些调用转成了 Legacy 的。
按理说加载之后各种 bootloader 应该都用的,我不知道为什么只有 OpenCore / Clover 能用。
是不是 OpenCore / Clover 在加载它之前,屏蔽了所有的 UEFI 显示驱动?
如果你用 OpenCore / Clover 修改分辨率生效之后,再启动 GRUB,这个显示分辨率是否依然有效?
😆😆😆大佬,你这么快,就看完 CsmVideoDxe.efi的源代码,并且了解工作原理了吗?
真厉害呢!
那也就是说,CsmVideoDxe.efi 是很有希望兼容的,BiosVideo.efi 出入很大咯。
有可能是操作有问题,我多试几次。
有没有可能,我给你发送的源代码发错了?
有没有可能,不是 CsmVideoDxe.efi的源代码,是 DUET 图形界面的源代码?
它们的原理都是一样的,没啥区别。
只是非 BIOS 模拟 UEFI 的情况下,要调 LegacyRegion 之类的协议 patch VBIOS。
反着来的类似的东西也有,就是用来在纯 UEFI 下启动 Win7 的 (https://github.com/manatails/uefiseven)
有没有什么 通用的 能够让 至少GRUB4DOS for UEFI 或者 grub2 的图形界面 达到那种效果的 EFI 图形驱动?
没有。
有关 grub4dos 的问题,可以在 Discussions 里面讨论。