我想要我的第四个!

我想要我的第四个!

背景

我来自使用 Gentoo,基于源代码的发行版。考虑到这一点,并且我的 PC 中有 4 个硬盘,我决定进行试验,并可能切换到 FreeBSD。我写这个问题的来源是:

操作系统规格

% cat /etc/os-release 
NAME=FreeBSD
VERSION=12.2-RELEASE-p3
VERSION_ID=12.2
ID=freebsd
ANSI_COLOR="0;31"
PRETTY_NAME="FreeBSD 12.2-RELEASE-p3"
>snip<

在ports树中运行KDE-5版本,并将synth作为包管理器

问题

正确安装了上述所有内容后,我正在微调项目。我非常习惯编辑配置文件,因为这是 Gentoo 的主要机制。我遇到了一个我最终无法自己解决的问题,主要是因为 FreeBSD 文档已经严重过时了。看:Bug 235040 - 基于 Lua 的 loader(8) 无法获取 /boot/loader.rc.local


问题

  1. 让 loader.efi 指向 loader_4th.efi 可以解决该问题。

这只是一个符号链接吗?我想在创建之前知道,因为列表中没有链接

# ls -al /boot/loader*
-r-xr-xr-x  3 root  wheel  372736 Jan  3 18:40 /boot/loader
-r-xr-xr-x  1 root  wheel  327680 Jan  3 18:40 /boot/loader_4th
-r-xr-xr-x  1 root  wheel  428032 Jan  3 18:40 /boot/loader_4th.efi
-r-xr-xr-x  1 root  wheel  327680 Nov 28 17:18 /boot/loader_4th.old
-r-xr-xr-x  3 root  wheel  372736 Jan  3 18:40 /boot/loader_lua
-r-xr-xr-x  2 root  wheel  490496 Jan  3 18:40 /boot/loader_lua.efi
-r-xr-xr-x  1 root  wheel  372736 Nov 28 17:18 /boot/loader_lua.old
-r-xr-xr-x  1 root  wheel  278528 Jan  3 18:40 /boot/loader_simp
-r-xr-xr-x  1 root  wheel  367616 Jan  3 18:40 /boot/loader_simp.efi
-r-xr-xr-x  1 root  wheel  278528 Nov 28 17:18 /boot/loader_simp.old
-r--r--r--  1 root  wheel    7492 Jan  3 18:40 /boot/loader.4th
-rw-r--r--  1 root  wheel     179 Feb 26 18:23 /boot/loader.conf
-r-xr-xr-x  2 root  wheel  490496 Jan  3 18:40 /boot/loader.efi
-r--r--r--  1 root  wheel     468 Jan  3 18:40 /boot/loader.rc
-rw-r--r--  1 root  wheel      28 Feb 27 16:18 /boot/loader.rc.local
  1. 切换到 会有12.2-RELEASE帮助12.2-STABLE吗?我不知道,因为除了如何切换分支之外,没有出现任何谷歌结果

我在以下位置使用nvidia-driverblob x11/nvidia-driver(由于没有 DRM 内核模块,因此该驱动程序没有 KMS 选项):

device     = GP107 [GeForce GTX 1050 Ti] 

半解/恶化

如果我启动到 UEFI Shell 并使用该mode命令,FreeBSD 加载程序将正确显示。我还可以在加载程序加载后(以错误的分辨率)选择选项 3 以转义到加载程序提示符并使用gop set,但我必须在每次重新启动时使用任一选项,因为我的系统默认为 1024x768。有没有办法强制 UEFI 永久默认为新设置?

答案1

实际上,我尽可能彻底地阅读了这个问题。 3次。每次读我都会变得更加困惑。

您花时间描述您的设置。但你真正的根本问题是什么?为什么你一定要坚持这样做呢?您为什么这样解释错误报告? (我有不同的解释)。该文档实际上并没有那么糟糕,但我确实同意在一些关键的地方它应该更好。但我们似乎在追逐另一只兔子。

我不运行 Gentoo 所以“操作系统规格”对我来说很陌生(我希望如此uname -a)。启动系统的方法有很多种,但似乎很长,所以我们不需要深入探讨。

但 FreeBSD 正处于从基于 loader 的过渡阶段向前到一个基于卢阿。 FreeBSD 已经使用 Forth 加载器很多年了,所以很多人都会引用它。 Lua 加载器在 11 中引入,并在 12 中默认。参见LUA 加载器默认打开

再次,由于它已经使用了很长时间,一些 Forthism 已经悄然渗入/boot/loader.rc.local。这是 Kyle Evans 和 Warner Losh 试图在您引用的错误报告中进一步解释的内容。

在现代 FreeBSD 系统上你应该不是篡改/boot/loader.rc.local.它的存在是出于遗留原因。它只会被 Forth 加载器读取,而不会被 Lua 加载器读取。

我想要我的第四个!

如果我理解正确的话,你会从源代码构建所有内容,包括 FreeBSD 本身。在这种情况下,您可以编辑/etc/src.conf和设置:

WITH_FORTH="yes"
WITHOUT_LUA="yes"

然后选择您使用的加载程序。

现代方式

多年来更改加载器设置的正确方法一直在使用加载器.conf(5)。该文件由两个加载器读取并解析。

你只需要把你的“半解”和错误 235040

编辑/boot/loader.conf(这是“用户定义的”)并添加以下内容:

exec="gop set 0"
exec="gop set 2"

/boot/loader.conf.local工作原理相同,但适用于具有共同点的站点的机器特定设置loader.conf

尽可能编写您自己的 Lua 脚本,但它不适合常见用途。

默认分辨率

您写道您的分辨率默认为 1024x768。而不是使用gop set你也许可以使用efi_max_resolution(再次加载器.conf(5))。

Value        Resolution
480p         640x480
720p         1280x720
1080p        1920x1080
2160p        3840x2160
4k           3840x2160
5k           5120x2880
WidthxHeight WidthxHeight

所以/boot/loader.conf你可以尝试:

efi_max_resolution="1080p"

英伟达驱动程序

同样,目前还不清楚您到底遇到了什么问题。您声明您正在使用x11/nvidia-driver.这仅与 X11 相关。在启动过程中VT(4)控制台驱动程序应该启动。当进行 BIOS 启动时,如果您没有 KMS 驱动程序(像您一样),它将切换到 640x480x16。对于 UEFI,我假设它会保持分辨率,因为它已经从文本模式切换到图形模式。

该驱动程序将仅在启动 X11 时使用。不需要任何配置,因为它应该被自动检测。这应该将您带入图形登录管理器,例如苗条的或直接进入桌面。

在 RELEASE 和 STABLE 之间切换

如果您想过上更活泼的生活方式,那么您可以切换到稳定的。或者完全疯狂地享受当前的生活。但如果我理解了你的问题,那就没有什么区别了。

24.4。跟踪开发分支

FreeBSD 的三个版本有什么区别? (当前、发布和稳定)

答案2

问题

我找到了 @Claus Anderson 在 FreeBSD 论坛的旧帖子中提到的大部分内容,但无论我调整什么设置,我的efifb(VT)分辨率都停留在 1024x768。这对我来说是不可接受的,因为我更喜欢使用控制台而不是 GUI 终端(Alt + Fn 与 Konsole)。因为这只是个人喜好,所以我不断挖掘并最终找到了解决方案,以防它可以帮助其他读者/访问者。

解决方案

我的电脑是由 OEM 定制的,包含一个微星 Z270-A PRO。当我开始安装多个操作系统时,我使用了 UEFI 设置实用程序并关闭了 UEFI Only 模式,在实用程序的启动设置菜单中称为UEFI + 传统但更广为人知的名称是 CSM,随着时间的推移,我将所有安装完全迁移到 UEFI。

事实证明,启用 CSM 会禁用该主板的 Windows 8.1/10 WHQL 支持功能,即使在我迁移了所有操作系统后,该功能仍然被禁用。见下面的照片:

[MSI WHQL 设置

禁用此选项,即使在启动设置中启用了 Pure UEFI,也会禁用对上图中底部 2 个选项的访问:

  1. 内部 GOP 配置
  2. 安全启动

虽然我不使用安全启动(个人偏好),但在修改多个变体后,我确实发现,如果禁用对 GOP 配置的访问,则启动的任何操作系统或 EFI 存根都会停留在 1024x768 的基本分辨率。换句话说,如果没有打开 WHQL 支持,GOP 设置将在 NVRAM 中标记为只读即使对于与 Windows 无关的操作系统也是如此。我不知道为什么会这样,因为 WHQL 旨在提供驱动程序安全性仅限 Windows确保安装的驱动程序经过数字签名并经过质量控制测试。我不知道为什么需要对非 Windows 操作系统的分辨率更改进行测试。


这意味着无论我通过 FreeBSD 加载程序的设置是什么,我总是在支持 1920x1080/1080p @ 60Hz 的本机分辨率的显示器上获得 1024x768 的屏幕尺寸,除非我使用引导加载程序选项 3,这发生在 UEFI 完成引导至 rEFInd 后,并且 NVRAM 被标记为读/写。

我现在已exec mode 0打开boot/loader.confWindows 8.1/10 WHQL 支持,并且本机控制台分辨率为 1080p。作为正确设置的副作用,rEFInd 也会启动到本机分辨率。

在找到上述解决方案之前我尝试过的事情

我不推荐这些,但为了完整性我会在这里列出它们

  1. 更新了我的显卡固件,型号和 OEM 相同,但版本较新。
  2. 更新了我的 GOP 协议,认为我的视频卡固件有问题。

相关内容