UEFI 解決問題
背景
我來自使用基於原始碼的發行版 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<
在埠樹中執行 KDE-5 版本,並將 synth 作為包管理器
問題
正確安裝上述所有內容後,我正在微調項目。我很喜歡編輯配置文件,因為這是 Gentoo 的主要機制。我遇到了一個我自己最終無法解決的問題,主要是因為 FreeBSD 文件已經過時了。請參閱:錯誤 235040 - 基於 Lua 的載入程序 (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
幫助嗎?我不知道,因為沒有Google結果出現,除瞭如何切換分支我正在使用來自(由於沒有 DRM 核心模組,此驅動程序沒有 KMS 選項)中的
nvidia-driver
blob :x11/nvidia-driver
device = GP107 [GeForce GTX 1050 Ti]
半解/加重
如果我啟動到 UEFI Shell 並使用該
mode
命令,FreeBSD 載入程序將正確顯示。我也可以在載入程序載入(以錯誤的解析度)後選擇選項 3 以 Escape 到載入程序提示符並使用gop set
,但我必須在每次重新啟動時使用任一選項,因為我的系統預設為 1024x768。有沒有辦法強制 UEFI 永久預設為新設置?
問題
我在 FreeBSD 論壇上的舊文章中找到了 @Claus Anderson 提到的大部分項目,但無論我擺弄什麼設置,我的
efifb(VT)
解析度都停留在 1024x768。這對我來說是不可接受的,因為我更喜歡使用控制台而不是 GUI 終端(Alt + Fn 與 Konsole)。因為這只是個人喜好,所以我一直在探勘,終於有了解決方案,以防它可以幫助其他讀者/訪客。解決方案
我的電腦是由 OEM 定制的,包含一個MSI Z270-A PRO。當我開始安裝多個作業系統時,我使用了 UEFI 設置實用程序並關閉了僅 UEFI 模式,該模式在實用程序的啟動設置菜單中稱為UEFI + Legacy,但更廣為人知的是 CSM,並且隨著時間的推移,我將所有安裝完全遷移到僅 UEFI。
事實證明,啟用 CSM 會為此主機板禁用稱為 Windows 8.1/10 WHQL 支持的功能,即使在我遷移了所有作業系統後,它仍然被禁用。見下圖:
[
禁用此選項,即使在引導設置中啟用了 Pure UEFI,也會禁用對上圖中底部 2 個選項的訪問:
- 內部 GOP 配置
- 安全啟動
雖然我不使用安全啟動(個人偏好),但在修改了多種變體後,我確實發現如果禁用對 GOP 配置的訪問,任何啟動的作業系統或 EFI 存根都會卡在 1024x768 的基本解析度上。換句話說,如果沒有打開 WHQL 支持,即使對於與 Windows 無關的作業系統,*GOP 設置也會在 NVRAM 中標記為只讀。*為什麼會這樣,我不知道,因為 WHQL僅通過確保已安裝的驅動程序經過數字簽名並經過 QC 測試來在**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 協議,認為我的顯卡韌體有問題。
我實際上盡可能徹底地閱讀了這個問題。3次。每次閱讀我都會感到更加困惑。
您花時間描述您的設置。但是你真正的根本問題是什麼?你為什麼堅持這樣做?為什麼你會這樣解釋錯誤報告?(我的解釋不同)。文件實際上並沒有那麼糟糕,但我同意它在一些關鍵的關鍵地方應該要好得多。但我們似乎在追逐另一隻兔子。
我不執行 Gentoo,所以*“OS Specs”*對我來說是陌生的(我希望
uname -a
)。啟動系統的方法有很多種,但您似乎很長,所以我們不需要深入那裡。但是 FreeBSD 正處於從基於Forth的載入程序到基於Lua的載入程序的過渡階段。FreeBSD 多年來一直使用 Forth 載入程序,所以很多人都會引用它。Lua loader 是在 11 中引入的,並在 12 中預設。請參閱LUA loader on default
再一次因為它已經使用了很長時間,一些 Forthism 已經悄悄進入
/boot/loader.rc.local
。這就是 Kyle Evans 和 Warner Losh 在您引用的錯誤報告中試圖進一步解釋的內容。在現代 FreeBSD 系統上,您不應該篡改
/boot/loader.rc.local
. 由於遺留原因,它在那裡。它只會被 Forth 載入器而不是 Lua 載入器讀取。我想要我的Forth!
如果我理解正確,您從原始碼建構所有內容,包括 FreeBSD 本身。在這種情況下,您可以編輯
/etc/src.conf
和設置:WITH_FORTH="yes" WITHOUT_LUA="yes"
然後選擇您使用的載入程序。
現代方式
多年來更改載入程序設置的正確方法一直是使用loader.conf(5)。該文件由兩個載入器讀取和解析。
您只需將“半解決方案”和錯誤 235040之間的點連接起來
編輯
/boot/loader.conf
(這是“使用者定義的”)並添加以下內容:exec="gop set 0" exec="gop set 2"
/boot/loader.conf.local
工作方式相同,但適用於具有共同點的站點的機器特定設置loader.conf
您可以像 Forth 一樣編寫自己的 Lua 腳本,但它不適合普通使用。
預設解析度
您寫道,您的解析度預設為 1024x768。而不是使用
gop set
您可能可以使用efi_max_resolution
(再次loader.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 時使用。不需要配置,因為它應該被自動檢測。這應該將您發送到Slim之類的圖形登錄管理器或直接發送到桌面。
在 RELEASE 和 STABLE 之間切換
如果您想過一種更活潑的生活方式,那麼您可以切換到 STABLE。或者用 CURRENT 完全瘋狂。但是,如果我理解了您的問題,那麼它不會有任何區別。