初公開日:2025/10/15
さて以前からLinuxでもSteamのゲームが遊べると言っていたけど
そもそもPCでゲームを遊ぶには「グラフィックボード」という高額なパーツが必要なんだよね。特に重いゲームなら尚更必要だね。
そのグラフィックボードの性能を最大限発揮させるには「ドライバー」という言わば説明書というものが必要なんだけど…
…え?普通にダウンロードしてインストールすればいいんじゃないんですか?
…まあWindowsだったら簡単にインストールできるけど
残念ながらLinuxだとこのドライバーインストールというのがかなり曲者なんだよね。
というのも使っているグラボ(GPU)がAMDのRadeonだったりIntelのArcだったらただ普通にドライバをコマンドなど使ってインストールしてあげればすぐ使えるけど
RTXやGTXといったNVIDIAのグラボのドライバーは実はセキュアブートをオンにしている環境だとOS起動時に弾かれてしまうんだよね。
ドライバーを入れていない状態ならセキュアブートをオンにしている状態でも問題なく起動できたFedoraだったけどNVIDIAのドライバーを入れた途端に一気に起動ができない…というところまででもないけどそれでも画面が映らなくなったりしてパソコンとしては使い物にならないからこれはかなり問題だね。
特にNVIDIAのグラボをお持ちのPCゲーマーの方がLinuxに移行した際に
仮にFedoraを選んだ場合はテラさんみたいにNVIDIAのドライバー関係で詰むと思います。
これを解決するのにテラさんは4~5時間格闘してついに解決できたのでこれからその備忘録としてやり方を解説していきますが…普通にゲーマーであればLinux MintかFedora派生のBazziteを選んだ方が良いかもしれませんね。
…もちろんこれらのディストリビューションをセキュアブート環境下で使う場合はちょっととあることをしないといけないので一緒にその様子を見ていきましょう。
ではまずNVIDIAのドライバを普通に入れてみましょう。
…の前に、Fedoraの場合はデフォルトではNVIDIAのドライバーはダウンロードできません。
そこでまず「サードパーティーのリポジトリ」を有効化しなければなりません。調べるとコマンドを使ったやり方がありますが実はGUI環境でもできます。
ここではKDE Plasmaデスクトップ環境の標準ストアアプリ「Discover」を使います。「KDE Plasma Desktop」エディションであればプリインストールされていますね。もし他のデスクトップ環境をお使いの場合は大抵各デスクトップ環境のストアアプリや設定項目の中に「ソフトウェアリポジトリ」という項目があります。
左のメニューから「設定」をクリックし、右側の項目をスクロールしていくと「RPM Fusion for Fedora (バージョン名)-Nonfree- NVIDIA Driver」があります。すぐ左にチェックボックスがあるのでそれをクリックすると有効化できます。
ちなみに他にも「Debug」や「souse」とかありますが…基本的には何も付いていないものを選びましょう。これらは基本的に開発者向けとなります。
チェックを入れたら次はターミナル(端末)アプリを開き、まずはこのコマンドを入力してください。
「sudo dnf upgrade」
「dnf」はFedora派生におけるパッケージ管理コマンドでしたね。これはアップデートがあるかどうかを確認してあればダウンロードするかどうかを聞かれますので「y」キーを押して実行してください。アップデートがなければそのまま次に進みます。ちなみにsudoコマンドですのでアカウントにログインするためのパスワードを入れてくださいね。
そしたら次に
「sudo dnf install nvidia-open」
を入力します。これはNVIDIAのドライバーと関連パッケージをインストールするコマンドですね。ドライバー以外にもカーネルモジュールなど必要なパッケージもインストールされます。ちなみに「-open」と付いているのはこのドライバがオープンソース版ということを示しているからですね。
こちらもインストールしていいなら「y」キーを押します。インストール中またyキーを押す場面がありますのでインストールが終わるまで画面は見続けていた方がいいです。
NVIDIAドライバーをインストールして再起動したら起動中のロゴとそのクルクルのすぐ下に
「NVIDIA kernel module missing. Falling back to nouveau」
という文字が出るんだよね。翻訳すると
「NVIDIA カーネルモジュールが見つかりません。nouveauにフォールバックします」
ということらしい。…つまり正常にNVIDIAのドライバーをインストールしたのになぜかカーネルモジュールが見つからない判定になっているんだよね。
一応起動してログインスクリーンは出るからログインはできるものの…ログイン後はただマウスカーソルがポツンとあるだけでそれ以外は真っ暗という状態になってしまうという。
つまり何が起きているかというと
NVIDIAカーネルモジュールがセキュアブートのせいで読み込まれないというわけだ。ドライバーはあってもこのカーネルモジュールが無いとそもそもドライバーを動かせることはできないからな。
一応完全にフリーズしたというわけではないので「CTRL+ALT+F2~F6のいずれかのファンクションキー」を同時押しすることでCUIモードに移行可能だ。CUIモードではユーザー名を入力してパスワードを入力したらGUI環境のターミナルアプリと同じ感じで操作することになる。なおこのモードではマウスは一切使用不可だから注意しろ。
う~ん…困ったな~💦
…とりあえず対処法を見つけにひたすらググるか~
とりあえずこれでは動かせないのでまずはUEFI(BIOS)画面に入り
一旦セキュアブートをオフにするよ。設定方法はマザーボードのメーカーによって異なるけど
ASUSの場合は「OSタイプ」を「非UEFI モード」にするとセキュアブートをオフにできるよ。
セキュアブートをオフにすると先ほどは弾かれたNVIDIAカーネルモジュールがしっかり読み込まれるようになるからこれで問題なく使えるようになるね。
もちろんLinuxしか入れないというならこのままでも良いけど…セキュリティ的にも危ないしWindowsとのデュアルブート環境にしたい場合はどうしてもカーネルモジュールがセキュアブートを通らないといけないんだよね。
というわけでまずは情報収集からですね。スマホでも別PCでもいいですし幸いセキュアブートをオフにしている関係でNVIDIAドライバが正常に動いているので今使っているPCのブラウザで情報収集してもいいですね。
とりあえずテラさんは「fedora nvidia kernel module missing」と検索してそこで出て来たFedoraの公式ディスカッションのページを見てみました。
…どうやら同じように悩んでいる人が大勢いらっしゃるみたいですね。
…で、一番上に出たページを開いて翻訳して読んでみると気になるスレッドが。
まあ翻訳だから所々ガバガバだけど割とヒントになりそうなものがありそうだね。
特に…「/usr/share/doc/akmods/README.secureboot」というのが怪しいね。
そうですね。これはおそらくディレクトリのことを指していると思います。
ファイルマネージャーアプリ(※)を開き、OSがインストールされているストレージ(/(ルート)ディレクトリ)からスタートして先ほどの「/usr/share/doc/akmods/」を目標にフォルダを開いていくと「README.secureboot」というテキストファイルがありましたね。読んでみましょう…といっても全部英語でわかりませんね💦
(※Plasmaデスクトップの場合は「Dolphin」。ちなみに画像ではちょっと違うデスクトップ環境のFedoraを入れたので違うファイルマネージャーになっている)こういう時こそGoogle翻訳の出番だな!
その英文全部Google翻訳にブチ込んでみたら…ホラ!なんか答えっぽいの書いてねぇか!?
なるほどね…
とりあえずセキュアブートに必要な「証明書」と「秘密鍵」というのはその「/etc/pki/akmods/certs」というディレクトリと「/etc/pki/akmods/private」というディレクトリに保存されるみたいだね。
それで…「公開鍵」というのを「MOK」というものに登録するんだね。
そういうことみたいですね。
さらに調べてみたところこのような情報が見つかりました。
まずは「キーを生成する」必要があります。そのコマンドが
「sudo kmodgenca -a」
みたいです。次に
「sudo mokutil --import /etc/pki/akmods/certs/public_key.der」
を実行して新しい公開鍵と秘密鍵のペアと証明書を登録するみたいです。その後
「systemctl reboot」
でシステムを再起動みたいですね。そうすると次回起動時にMOK管理画面が出てくるみたいです。
ふむふむ…バズわからんw
…まあとりあえずやってみなくちゃわからないな!
まあとりあえず集めた情報を元にコマンドを入力してみるぞ。セキュアブートをオフにしているならGUI環境下のターミナルアプリを使うことができるがセキュアブートをオンにしている場合は「CTRL+ALT+F2~F6のいずれかのファンクションキー」を同時押ししてCUIモードに切り替えてから作業開始だ。
まずはセキュアブートに必要なキーを生成するために
「sudo kmodgenca -a」
と入力するんだ。これを実行するとセキュアブートに必要な公開鍵と秘密鍵が生成され、それぞれ
/etc/pki/akmods/certs/○○○○ →公開鍵(証明書)
/etc/pki/akmods/private/○○○○ →秘密鍵
のディレクトリに保存されるぞ。またこれら鍵のシンボリックリンクとして
/etc/pki/akmods/certs/public_key.der
/etc/pki/akmods/private/private_key.priv
も生成される。ちなみにsudoコマンドだからアカウントにログインするためのパスワードを入力する必要があるぞ。
あの…
「WARNING: EXISTING KEY PAIR.」
…って出たんだけどw
それはすでにキーが生成されているという証拠だ。このまま先に進んでも構わないが
もし不安なら
「sudo kmodgenca -a --force」
と入力することで今あるキーを消去してもう一度キーを生成することができるぞ。
お、うまくいったみたいだね。
次は先ほど生成した公開鍵(証明書)と秘密鍵のペアを「MOK」に登録するコマンドを入力する。MOKとは「Machine Owner Key」の略称でこれがブートマネージャーやカーネルなどのデジタル署名をチェックして不正なものではないかを選別しているそうだ。ここに公開鍵を登録するとそのチェックをパスすることができるため言わばホワイトリストに入れる作業をするということだ。
今の段階ではNVIDIAドライバーなどのサードパーティー製のドライバーはMOKのホワイトリストに登録されていないためこれではカーネルモジュールが弾かれて当然だろう。従ってまずは
「sudo mokutil --import /etc/pki/akmods/certs/public_key.der」
というコマンドを入力するんだ。少し長めのコマンドだがある程度入力してTABキーを押すと自動的にコマンドを補完してくれるぞ。
あの…入力したら
「input password:」
…って出たんだけどw
…どこにパスワードあるんだ!?
だろうな。パスワードも知らないのにいきなりパスワードを入れろと言われたら困惑するしかないだろうな。
だがここではパスワードを入れるのではなく"登録"することになる。というのもここで登録したパスワードは後ほど必ず使うことになるからな。
パスワードだが基本的に他人に推測されにくいものを作るのがベストだが…この場合は1回だけ使う一時的なパスワードになる。なので簡単なパスワードでもいいぞ。ちなみに文字数だが特に明記されていないがとりあえず8文字以上でいいかもな。
パスワードを決めて入力したら「input password again:」と表示されるので確認のためもう一度同じパスワードを入力するんだ。正しければ登録完了だ。
オッケー!
エラーも出ていないみたいだから次に行けそうだね。もちろんパスワードは覚えたよ。
そしたら…「systemctl reboot」でシステムを再起動するんだね。
そうだな。
…何か忘れている気がするがまあいいだろう。
それではここからがセキュアブート環境下でもNVIDIAのドライバーを使えるようにするための最重要設定をやっていきましょう!
まず先ほどの続きからで再起動するとこのようにブルースクリーンが出てきます。どのキーでもいいので押してください。時間内に押さないと再起動します。
キーを押したらこのようなメニューが表示されます。デフォルトでは一番上の項目が選択されていますので矢印キーの下を押して「Enroll MOK」を選択してエンターキーを押しましょう。
次に2つの選択肢が出てきますが
こちらも同じように矢印キーの下を押して「Continue」を選択してエンターキーを押しましょう。
一番上の選択肢を選択するとただ情報が表示されるだけです。間違って押しても再びエンターキーを押すとこの画面に戻ってきますよ。
そしてまたしても2つの選択肢が出てきますが
こちらも同じように矢印キーの下を押して「Yes」を選択してエンターキーを押しましょう。
さてここからが大事です!!
ここで先ほど「sudo mokutil --import /etc/pki/akmods/certs/public_key.der」を実行して入力したパスワードが必要になってきます!
パスワードは表示されませんので1文字ずつ丁寧に入力しましょう。
ちなみに他のディストリビューションの場合もセキュアブートでNVIDIAドライバーをインストールしたら同じ画面が出るぞ。ステラと同じようにmokutilコマンドを実行してパスワードを登録した場合はそれを使え。
しかしLinux MintやBazziteを使う場合は今回ステラがやったコマンドは使っていないためパスワードが不明であるはずだ。しかし大丈夫だ。以下の方法でパスワードを入力するんだ。
Linux Mintの場合
→OSインストール時に「マルチメディアコーデック」の項目で「Configure Secure Boot」にチェックを入れるとパスワードを登録するテキストボックスがあるのでそこにパスワードを入力して確認のためにすぐ下のテキストボックスにもう一度同じパスワードを入力する。その後インストール後にソフトウェアドライバでNVIDIAドライバーをインストールして再起動した後にMOK登録の画面が出るのでそこでOSインストール時に登録したセキュアブート用パスワード入力する。
→セキュアブートをオフにした状態でインストールして後にオンに場合、もしくは「Configure Secure Boot」のチェックを入れなかった場合はターミナルで「sudo apt upgrade」を実行するとセキュアブートのパスワード登録画面が出るのでパスワードを登録する。その後ソフトウェアドライバでNVIDIAドライバーをインストールして再起動した後にMOK登録の画面が出るのでそこで登録したパスワード入力する。
Bazziteの場合
→OSインストール後にMOK登録の画面が出るのでパスワード入力画面が出たら「universalblue」と入力する
この通りに入力すればMOK登録ができるはずだ。
無事にパスワードの入力に成功するとこちらの画面が表示されます。
一番上の「Reboot」を選択すると再起動しますのでそれを選択しましょう!
無事に再起動できたらお疲れ様です!
よしじゃあセキュアブートをオンにして再起動しよう!
…あ…あれ…?
またさっきと同じ表示が出たんだが…まさかの失敗なの?💦
ステラ、忘れているコマンドがあるぞ。
MOKへの登録は完了したが署名されていないモジュールが残っているからそれを削除してモジュールを再構築する必要がある。コマンドは
「sudo akmods --force --rebuild」
だぞ。少し時間がかかるが完了したらまた再起動な。
あ~!!
ソレここで使うやつだったんだ~!w
コマンド入力したし再起動したら今度こそ行けるよね…?
どうだろうな。先ほどまでカーネルモジュールが読み込まれていなかった時は起動時間が少し長かったから
ちゃんと読み込まれていれば早く起動するはずだ。
起動してログインしたら「NVIDIA Xサーバー設定」というアプリを開いてみろ。カーネルモジュールが読み込まれていない場合は項目が2つしか無いがしっかりカーネルモジュールが読み込まれていれば項目が増えているはずだ。
頼む!今度こそ正常に開いてくれ…!
はい勝った~!!!
これでNVIDIAドライバーがセキュアブート環境下でも使える!!!
お疲れ様ですテラさん!!
これで心置きなくLinuxでゲームが遊べますね!!
いや~マジで苦戦した!w
これ海外ニキの情報と翻訳サイトがなければ普通に詰んでいたじゃん!w
これは確かに極めて詰みやすい作業でしたね。
おそらくネットで調べないで解決するのはほぼ不可能に近い難易度でしたね。
ましてや日本語の情報がほぼ少ないというのも難易度上昇に拍車がかかりますね。
…いや普通にこれ僕みたいにセキュアブート環境下でドライバーインストールで詰んでいる人にシェアしたいくらいだよ!w
ここまでくるのにかなりの苦労がありましたが
苦労したおかげでセキュアブートをオンにしたLinux環境下でも安心してゲームが楽しめますね。
Steamをインストールしたいなら最初にやったソフトウェアリポジトリからSteamの項目を探してチェックを入れてその後ターミナルで
「sudo dnf install steam」
と入力すればSteamをインストールできますよ。
もしLinuxをセキュアブート環境下で使いたいという方はこのページを参考にしてみてくださいね。
ちなみに補足事項ですが
今回はFedoraで作業したためパッケージ管理コマンドは「dnf」になっています。もしDebian/Ubuntu派生のディストリビューションをお使いの場合は「dnf」を「apt」に読み替えてくださいね。
また「sudo」コマンドを使っていますがもし管理者(root)ユーザーで作業する場合はsudo部分は不要です。OSインストール時に管理者ユーザーの作成を有効している場合は使えますがセキュリティの観点から作成は非推奨ですので基本は管理者ユーザーはいないはずです。…とはいえ一般ユーザーの作成時に「ユーザーアカウントに管理者権限を付与する(wheelグループに加える)」のチェックを外してしまうとsudoを使っても管理者権限を付与できませんので必ず最初のユーザーは管理者権限を付与できるようにしておきましょう。
無事に問題が解決できて良かったですわね!
むしろメインPCにFedoraをインストールする前で良かったですわね。
いやホントだよw
Fedoraは素の状態だとNVIDIAドライバーが入っていないからOSインストール自体はすんなり行けてもサードパーティー製のドライバーを入れるとセキュアブートに引っかかっちゃうんだよね。
こればかりはマジで本番環境に入れる前にサブPCで実験的に入れてみて正解だったかね。
…ところでワタシ気づきましたわ。
そのNVIDIAのドライバーを入れる前にセキュアブートのキーを登録すればいいのでは?
そうした方がスムーズに行けそうですわ。
…あ~先にMOKを登録するという作戦だね。
とりあえずさっきまではBudgieデスクトップ環境のFedoraを入れていたから
再びPlasmaデスクトップエディションのFedoraを再インストールだね。
アンタ流石にOSインストール作業しすぎですわ💢
SSDの寿命を削りたい気なんですか?(#^ω^)
フッ…まあ余程莫大なサイズのデータの書き込みをしなければそう簡単にSSDの寿命は削れないぞ。
さてOSインストールから最初のアップデートまでを済んだ状態まで来たな。
まずセキュアブートがオンになっているかどうかのチェックだが
「mokutil --sb-state」
のコマンドで確認できるぞ。セキュアブートがオンなら「SecureBoot enabled」と表示されるはずだ。
で、次は鍵のペアを生成するコマンド「sudo kmodgenca -a」だね。流石に2回目だからもう慣れているよw
…ってあれ?コマンドが存在しないって言われたんだが!?
ステラ、まだこの状態ではmokutilコマンドはあってもkmodとakmods関連のコマンドは未インストールだぞ。先ほどの「README.secureboot」のドキュメントがあるディレクトリも存在していない状態だからな。
まずはその鍵のペアを生成するコマンドを使うために
「sudo dnf install kmodtool akmods mokutil openssl」
と入力するんだ。そうするとこの4つのコマンドをインストールして使用可能になるぞ。なお先ほど「mokutil --sb-state」のコマンドは実行できたためmokutilはすでにインストール済みだ。加えてopensslもインストール済みと言われるから
「sudo dnf install kmodtool akmods」
と入力してもいいぞ。
あ~このコマンドってプリインストールされていないんだねw
これは盲点だったな~
インストールしたら後は先ほどと同じように公開鍵(証明書)と秘密鍵のペアを生成するコマンド
「sudo kmodgenca -a」
を入力するんだ。今回は何もキーが無い状態なのでこのコマンドを入力するとキーが生成されるぞ。生成したら鍵をMOKに登録するコマンド
「sudo mokutil --import /etc/pki/akmods/certs/public_key.der」
を入力し、パスワードを登録するんだ。このパスワードを覚えた状態でいったん
「systemctl reboot」
と入力して再起動し、再起動後にMOK管理画面が出てきたら「Enroll MOK」を選択してパスワード入力画面が出たら先ほど入力したパスワードを入力して次の画面に進めたら再起動するんだな。
再起動後にいったんアップデートを確認したあと
「sudo dnf install nvidia-open」
を入力してNVIDIAのドライバーをインストール。そして再起動すればセキュアブートに引っかからないで問題なくインストールできるぞ。…あと一応念のため
「sudo akmods --force --rebuild」
も実行しておけ。そうすれば完璧に導入可能なはずだ。
お!問題なくインストールできたっぽい!
ちょっと項目がさっきのBudgieデスクトップ環境の時と違うのはなんでだ?
それはディスプレイサーバープロトコルがPlasmaでは「Wayland」を採用しているからである。BudgieデスクトップやCinnamonデスクトップでは前の世代の「X Window System(X11)」を使われているのに対しPlasmaデスクトップやGnomeデスクトップの2大デスクトップ環境とCosmicデスクトップやHyprlandウィンドウマネージャーといった比較的新しいデスクトップ環境はWaylandを採用しているところが多いみたいだ。
X11の場合はNVIDIA設定の項目にXウィンドウサーバー関連の設定がある分Waylandにはそのような設定が無いから項目が減っているだろう。
なるほどね♪
だから設定項目が少なかったんだね。
ともあれこれでNVIDIAのドライバーをインストールする前にMOK登録ができて良かったですね。
ここまでの流れをチャートとしてまとめますと
sudo dnf install kmodtool akmods
sudo kmodgenca -a
sudo mokutil --import /etc/pki/akmods/certs/public_key.der → パスワードを登録して暗記orメモする
systemctl reboot
再起動後MOK管理画面が出てきたら「Enroll MOK」を選択してパスワード入力画面が出たら3で登録したパスワードを入力して再起動
sudo dnf upgrade
sudo dnf install nvidia-open
systemctl reboot
sudo akmods --force --rebuild
終了!
という流れになりますね。このチャート通りに進めれば特に突っかかること無くNVIDIAのドライバーをインストールすることができるはずです。
もしセキュアブート関連以外のエラーが発生してしまった場合は…ごめんなさいちょっと僕にはわかりません💦
エラー内容を確認してそれを調べてみると海外の誰かがそれについての対処法を知っているはずですので頑張って探してみてください!