chenall / grub4dos

外部命令和工具源码:https://github.com/chenall/grubutils 下载:
http://grub4dos.chenall.net
GNU General Public License v2.0
647 stars 136 forks source link

grub4dos 非UEFI版,有没有 efi loader mod? #400

Closed 1457384613gh closed 1 year ago

1457384613gh commented 1 year ago

grub4dos 非UEFI版,有没有 efi loader mod?

我想实现 BIOS->MBR->PBR->grub4dos->refind_x64.efi

a1ive commented 1 year ago

没看懂。 你是想 BIOS 下加载类似 DUET 的东西来模拟 UEFI 吗? 那跟 GRUB4DOS 本身没啥关系,你直接在 GRUB4DOS 下启动 DUET 之类的东西不就行了?

1457384613gh commented 1 year ago

对,就是给旧主板模拟 UEFI。 那个 DUET 具体叫什么? 我百度搜索了一下,有好多东西都叫 DUET。

a1ive commented 1 year ago

对,就是给旧主板模拟 UEFI。 那个 DUET 具体叫什么? 我百度搜索了一下,有好多东西都叫 DUET。

DUET 是 EDK2 里面的一个组件,早就停止开发了。https://github.com/tianocore/tianocore.github.io/wiki/DuetPkg Clover 和 OpenCore 的 UEFI 模拟就是基于它开发的。 你可以用 GRUB4DOS 启动 Clover 或 OpenCore。

1457384613gh commented 1 year ago

你可以用 GRUB4DOS 启动 Clover 或 OpenCore。

Legacy BIOS 启动的 GRUB4DOS 可以加载 CLOVERX64.efi 或 OpenCore.efi 吗?

a1ive commented 1 year ago

前面说了,你要用 Clover 或 OpenCore 的模拟 UEFI 功能,所以你要加载的是 Clover / OpenCore 的 MBR 或 PBR。 GRUB4DOS 没有模拟 UEFI 的功能,也不会添加模拟 UEFI 的功能。

1457384613gh commented 1 year ago

好的,谢谢,顺便问另一个问题。

GRUB4DOS 可以使用 改编自 grub2的 主题吗?

a1ive commented 1 year ago

GRUB4DOS 可以使用 改编自 grub2的 主题吗?

这似乎不是一个有意义的问题。你如果 "改编" 成 GRUB4DOS 的外观设置了,那当然可以在 GRUB4DOS 上用。 你想问的问题也许应该是 "如何 自定义 GRUB4DOS 的视觉效果" GRUB4DOS 和 GRUB2 在主题外观方面的配置方法是完全不同的,可能并不能实现相同的效果。 目前也没有比较详细的文档来介绍 GRUB4DOS 如何自定义外观风格,可以参考 GRUB4DOS 开发者 @yaya2007 的帖子:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=369720

1457384613gh commented 1 year ago

有的有缺陷的显卡,加载主题会出现分辨率异常的现象。 有一个关于 Arrandale 显卡 分辨率的问题。

Arrandale GPU 的情况

有解决方案的先例

为了防止图形界面横向拉伸,CloverBootloader 的团队已经开发了 CsmVideoDxe.efiOpenCore 的团队已经开发了 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

希望

Arrandale GPU 的信息

image

a1ive commented 1 year ago

然而,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 试试。

1457384613gh commented 1 year ago

你在 grub 中执行 load /xxx/CsmVideoDxe.efi之后,再执行 chainloader /path/to/grub4dos.efi,重新加载一次 grub 试试。

试了 grub 和 refind 加载 CsmVideoDxe.efi,没什么效果。

a1ive commented 1 year ago

我看了 CsmVideoDxe.efi 的代码,它就是个普通的 UEFI 显示驱动,只是把 GOP 的一些调用转成了 Legacy 的。 按理说加载之后各种 bootloader 应该都用的,我不知道为什么只有 OpenCore / Clover 能用。 是不是 OpenCore / Clover 在加载它之前,屏蔽了所有的 UEFI 显示驱动? 如果你用 OpenCore / Clover 修改分辨率生效之后,再启动 GRUB,这个显示分辨率是否依然有效?

1457384613gh commented 1 year ago

😆😆😆大佬,你这么快,就看完 CsmVideoDxe.efi的源代码,并且了解工作原理了吗?

真厉害呢!

那也就是说,CsmVideoDxe.efi 是很有希望兼容的,BiosVideo.efi 出入很大咯。

有可能是操作有问题,我多试几次。

1457384613gh commented 1 year ago

有没有可能,我给你发送的源代码发错了? 有没有可能,不是 CsmVideoDxe.efi的源代码,是 DUET 图形界面的源代码?

a1ive commented 1 year ago

它们的原理都是一样的,没啥区别。 只是非 BIOS 模拟 UEFI 的情况下,要调 LegacyRegion 之类的协议 patch VBIOS。 反着来的类似的东西也有,就是用来在纯 UEFI 下启动 Win7 的 (https://github.com/manatails/uefiseven)

有没有什么 通用的 能够让 至少GRUB4DOS for UEFI 或者 grub2 的图形界面 达到那种效果的 EFI 图形驱动?

没有。

a1ive commented 1 year ago

有关 grub4dos 的问题,可以在 Discussions 里面讨论。

a1ive commented 1 year ago

与哪个 repo 有关,就在哪个 repo 的 discussions 或 issues 里面讨论。 与具体的 repo 无关的问题,可以在无忧论坛里面讨论,GRUB4DOS 和 Ventoy 的开发者都在。

我不喜欢用即时通讯软件讨论这些东西,因为它们不能被搜索引擎记录索引,帮助更多的人。