在啟用安全啟動的 Fedora 中安裝英偉達驅動
背景信息
現在新出廠的電腦 UEFI 會默認開啟 安全啟動 ,它的作用是防止惡意軟體侵入。當電腦的引導程序被病毒修改之後,它會給出提醒並拒絕啟動,避免可能帶來的進一步損失。不過它同樣會阻止一些未經微軟簽名的 Linux 內核啟動運行。雖然可以直接選擇在主板設置中關閉安全啟動來解決這些麻煩,但在近期微軟公布的 Windows 11 最低硬體標準中可以看到,安全啟動被微軟看的越來越重。如果你的電腦是 Windows + Linux 雙系統,最好還是讓 Linux 本身支持安全啟動。
而最好用的發行版之一 Fedora 更熱衷於開源驅動。Fedora 其本身是支持安全啟動的,但是當你通過 Rpmfusion 安裝官方的英偉達驅動,會造成這些驅動的內核模塊未簽名。在 Linux 啟動過程中因為安全啟動校驗簽名,會阻止載入這些模塊,進而無法正常驅動顯卡。
用過 Ubuntu 的夥伴們應該知道,在安全啟動開啟的情況下,Ubuntu 安裝程序會自動用自簽密鑰來簽名英偉達驅動內核模塊,並在開機過程中自動將該自簽密鑰導入 MOK List(安全啟動機器主人信任密鑰列表)。但 Fedora 只會保證自身內核簽名有效,而對 Rpmfusion 中的第三方內核模塊簽名問題不予理會,導致無法正常載入英偉達驅動。
本文介紹如何在 Fedora 中自動簽署英偉達內核模塊
準備工作
在 Fedora 36 之前,要像 Ubuntu 那樣自動簽署內核模塊有點困難。但從這個版本開始,你只需幾個簡單的步驟就能做到。
在開始之前,讓我們先確認一些前提條件已經滿足:
- 已啟用安全啟動;
- 尚未安裝英偉達驅動程序(非常關鍵,如果你已經安裝了專有的英偉達驅動,可能需要重裝系統才行);
- 以及安裝了 Fedora 36 及以上版本。
本指南主要參考了以下資料:
希望深入了解的朋友可以閱讀上述資料進一步研究。
具體步驟
1、安裝自動簽名所需的工具
sudo dnf install kmodtool akmods mokutil openssl
2、生成簽名密鑰
sudo kmodgenca -a
該命令會在 /etc/pki/akmods/certs/
目錄下生成密鑰,運行正確的情況下不會有輸出。
3、啟動密鑰註冊
這將使 Linux 內核信任使用你的密鑰簽名的驅動程序。
sudo mokutil --import /etc/pki/akmods/certs/public_key.der
你會被要求輸入一個密碼。請記住這個密碼,在下面的第五步中還需要再次使用。
4、重啟以註冊密鑰
sudo reboot
5、註冊密鑰
重啟後,你將看到藍色的 MOK 管理器界面,不要被這種類似 BSOD 的頁面嚇壞,按照以下步驟註冊密鑰。
如果你曾在啟用安全啟動的 Ubuntu 中安裝過英偉達驅動程序,你可能見過這個界面。
1、首先要及時按任意建繼續進入 MOK 管理(如果沒有及時進入 MOK 管理,系統會重啟)
2、首先選擇 「Enroll MOK」 註冊 MOK。
3、然後選擇 「Continue」。
4、選擇 「Yes」 並輸入步驟 3 中的密碼並回車(密碼不會在輸入框中顯示,輸入密碼直接回車就好了)。
5、此時密鑰已經註冊,選擇 「reboot」,設備將再次重啟。
6、安裝英偉達驅動程序
現在只需正常安裝英偉達驅動程序。
sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs
7、確保內核模塊已編譯
sudo akmods --force
8、確保啟動鏡像也已更新
sudo dracut --force
9、重啟設備
sudo reboot
驗證是否成功
重啟完成後,輸入以下命令確認驅動是否載入:
lsmod | grep -i nvidia
如果有類似以下的輸出,恭喜你,一切順利,一切就緒!
$ lsmod | grep -i nvidia
nvidia_drm 94208 2
nvidia_modeset 1560576 2 nvidia_drm
nvidia_uvm 3493888 0
nvidia 62517248 118 nvidia_uvm,nvidia_modeset
video 73728 3 asus_wmi,i915,nvidia_modeset
現在,你可以愉快的在開啟安全啟動的情況下使用英偉達顯卡了。
希望本文能夠幫助到你。
作者簡介:一個喜歡瞎鼓搗的外科醫生
via: https://www.insidentally.com/articles/000034/
作者:insidentally 編輯:wxy
本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive