背景
我来自使用 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
问题
-
让 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
- 切换到 会有
12.2-RELEASE
帮助12.2-STABLE
吗?我不知道,因为除了如何切换分支之外,没有出现任何谷歌结果
我在以下位置使用nvidia-driver
blob 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 之间切换
如果您想过上更活泼的生活方式,那么您可以切换到稳定的。或者完全疯狂地享受当前的生活。但如果我理解了你的问题,那就没有什么区别了。
答案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 支持功能,即使在我迁移了所有操作系统后,该功能仍然被禁用。见下面的照片:
[
禁用此选项,即使在启动设置中启用了 Pure UEFI,也会禁用对上图中底部 2 个选项的访问:
- 内部 GOP 配置
- 安全启动
虽然我不使用安全启动(个人偏好),但在修改多个变体后,我确实发现,如果禁用对 GOP 配置的访问,则启动的任何操作系统或 EFI 存根都会停留在 1024x768 的基本分辨率。换句话说,如果没有打开 WHQL 支持,GOP 设置将在 NVRAM 中标记为只读即使对于与 Windows 无关的操作系统也是如此。我不知道为什么会这样,因为 WHQL 旨在提供驱动程序安全性仅限 Windows确保安装的驱动程序经过数字签名并经过质量控制测试。我不知道为什么需要对非 Windows 操作系统的分辨率更改进行测试。
这意味着无论我通过 FreeBSD 加载程序的设置是什么,我总是在支持 1920x1080/1080p @ 60Hz 的本机分辨率的显示器上获得 1024x768 的屏幕尺寸,除非我使用引导加载程序选项 3,这发生在 UEFI 完成引导至 rEFInd 后,并且 NVRAM 被标记为读/写。
我现在已exec mode 0
打开boot/loader.conf
Windows 8.1/10 WHQL 支持,并且本机控制台分辨率为 1080p。作为正确设置的副作用,rEFInd 也会启动到本机分辨率。
在找到上述解决方案之前我尝试过的事情
我不推荐这些,但为了完整性我会在这里列出它们
- 更新了我的显卡固件,型号和 OEM 相同,但版本较新。
- 更新了我的 GOP 协议,认为我的视频卡固件有问题。