Linux中國

在啟用安全啟動的 Fedora 中安裝英偉達驅動

背景信息

現在新出廠的電腦 UEFI 會默認開啟 安全啟動 Secure Boot ,它的作用是防止惡意軟體侵入。當電腦的引導程序被病毒修改之後,它會給出提醒並拒絕啟動,避免可能帶來的進一步損失。不過它同樣會阻止一些未經微軟簽名的 Linux 內核啟動運行。雖然可以直接選擇在主板設置中關閉安全啟動來解決這些麻煩,但在近期微軟公布的 Windows 11 最低硬體標準中可以看到,安全啟動被微軟看的越來越重。如果你的電腦是 Windows + Linux 雙系統,最好還是讓 Linux 本身支持安全啟動。

而最好用的發行版之一 Fedora 更熱衷於開源驅動。Fedora 其本身是支持安全啟動的,但是當你通過 Rpmfusion 安裝官方的英偉達驅動,會造成這些驅動的內核模塊未簽名。在 Linux 啟動過程中因為安全啟動校驗簽名,會阻止載入這些模塊,進而無法正常驅動顯卡。

用過 Ubuntu 的夥伴們應該知道,在安全啟動開啟的情況下,Ubuntu 安裝程序會自動用自簽密鑰來簽名英偉達驅動內核模塊,並在開機過程中自動將該自簽密鑰導入 MOK List(安全啟動機器主人信任密鑰列表)。但 Fedora 只會保證自身內核簽名有效,而對 Rpmfusion 中的第三方內核模塊簽名問題不予理會,導致無法正常載入英偉達驅動。

本文介紹如何在 Fedora 中自動簽署英偉達內核模塊

準備工作

在 Fedora 36 之前,要像 Ubuntu 那樣自動簽署內核模塊有點困難。但從這個版本開始,你只需幾個簡單的步驟就能做到。

在開始之前,讓我們先確認一些前提條件已經滿足:

  1. 已啟用安全啟動;
  2. 尚未安裝英偉達驅動程序(非常關鍵,如果你已經安裝了專有的英偉達驅動,可能需要重裝系統才行);
  3. 以及安裝了 Fedora 36 及以上版本。

本指南主要參考了以下資料:

  1. Rpmfusion 的官方英偉達文檔
  2. Rpmfusion 的官方安全啟動文檔
  3. Andrei Nevedomskii 的博客教程

希望深入了解的朋友可以閱讀上述資料進一步研究。

具體步驟

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 管理,系統會重啟)

MOK 管理界面1

2、首先選擇 「Enroll MOK」 註冊 MOK。

3、然後選擇 「Continue」。

4、選擇 「Yes」 並輸入步驟 3 中的密碼並回車(密碼不會在輸入框中顯示,輸入密碼直接回車就好了)。

MOK 管理界面2

5、此時密鑰已經註冊,選擇 「reboot」,設備將再次重啟。

MOK 管理界面3

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

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國