15.10-> 16.04 LTSアップグレード後、NVIDIAドライバーに関連するログインが壊れる


10

システムをを介して15.10から16.04に更新しましたsudo do-release-upgrade。このプロセス中に、次のメッセージを含む画面が表示されました。

システムでUEFIセキュアブートが有効になっている。UEFIセキュアブートは、サードパーティのドライバーの使用と互換性がありません。

(...)Ubuntuは引き続きシステムで起動できますが、これらのサードパーティドライバーはハードウェアで利用できません。

UEFIセキュアブートを無効にしますか?(はい|いいえ)

私が使用しているサードパーティのドライバーはNVIDIAグラフィックスドライバーのみであり、Ubuntu 15.10とセキュアブートが有効になっている状態で正常に動作しているため、ここでは「いいえ」のオプションを選択しました。理由もなくこれを無効にする必要がある理由がわかりません。また、更新後にシステム設定GUIを介してサードパーティのドライバーを再インストールできると思いました。

ああ、違う。再起動すると、ログイン画面が非常に低い解像度で表示されました。ログインしようとすると、すぐにログイン画面に戻ります。

私は状況を修正するために以下を試しました:

sudo apt-get purge nvidia*
sudo reboot

これにより、紫色の画面が表示され、Ctrl-Alt-F1に対する反応がなくなります。SSH経由でログインして、次のようにしました。

sudo apt-get install nvidia-current
sudo reboot

これも前のシナリオに戻り、ログイン画面が非常に低く、ログオンする方法がありません。

これはかなり悪いアップグレード体験です。他の誰かがこれを持っていますか?これを修正するにはどうすればよいですか?(UEFIセキュアブートを有効にしたまま)ありがとう。


5
見ているこちら
Videonauth

うわー、これは悪いです。これまでのところ、PPA経由でnvidia-364をインストールし、セキュアブート無効にする必要がありました。これで問題はないようですが、ドライバーを自動更新することも(間違っていない場合)、セキュアブートを再度有効にすることもできません...
kmhofmann

はい、残念ながら現時点では他に選択肢はありません。あなたは私がこの質問を重複としてマークすることを気にしないでください。
Videonauth

いいえ、気にしません。
kmhofmann

それは複製ではありません-少なくとも、完全にではありません。この質問は、セキュアブートの新しいひねりを追加します。これは、「重複」の質問の一部ではありません(いくつかのコメントと回答で言及されていますが)。これは、さらに注目に値します。
ロッドスミス

回答:


8

であること、シムのUbuntuのバージョンが発売するGRUBのUbuntuのバージョン、起動します- Ubuntuの15.10を通じて、セキュアブートのUbuntuの取り扱いはGRUBで停止任意のそれが署名されたかどうかにかかわらず、Linuxカーネルを。これは、セキュアブートのサポートの非常に低いバーでした。比較として、FedoraのGRUBは署名されたLinuxカーネルのみを起動し、Fedoraのカーネルは、セキュアブートがアクティブであることを検出すると、署名されたカーネルバイナリのみをロードします。Fedoraのより堅牢なセキュアブートサポートの目的は、理論的には非常に低いレベルでコンピューターを乗っ取ることができる「ローグ」カーネルモジュールからシステムを保護することでした。Ubuntu 15.10以前には、このような保護機能がありませんでした。

16.04から、Ubuntuはより厳密なセキュアブートモジュールに従います。これは、Fedoraがかなり長い間行ってきたことに似ています。これにはセキュリティ上の利点がありますが、ご覧のとおり、問題もあります。LinuxカーネルのUbuntuバージョンが有効であると認識する暗号化キーでサードパーティのドライバーが署名されていない場合、それは読み込まれません。これは主にクローズドソースのNvidiaおよびAMD / ATIビデオドライバーに影響しますが、影響を受ける可能性のある他のドライバーもあります。

この問題にはいくつかの回避策があります(またはその可能性があります)。

  • セキュアブートを無効にする -これが最も簡単なソリューションです。ファームウェアの設定をいじくったり、Shimの設定を調整したりして、それを行うことができます。(Shimの設定を微調整してそれを行う方法はわかりませんが、それが可能であるとはかなり確信しています。)
  • サードパーティのカーネルモジュールを使用しない -Ubuntuの標準Linuxカーネルに含まれているオープンソースドライバーに限定する場合は、Canonicalがそのようなすべてのドライバー(AFAIK)に署名するため、問題ありません。そのようなドライバーを使用するかなり良いNvidiaサポートがあるべきであることに注意してください。クローズドソースドライバーが利用可能であると考えられたため、システムはおそらく最適ではないドライバーにフォールバックしました。片方からもう片方に切り替える方法はわかりませんが、この質問はAMD / ATIドライバーを使用して切り替える方法についての質問なので、参考にしてください。
  • 関連モジュールに署名する-理論的には、商用モジュールに自分で署名すると、機能するようになります。残念ながら、私にはこれを行う方法についての指示がありません。実際、私はこれをストックのUbuntuカーネルで実行できるかどうかさえ完全にはわかりません。そのようなカーネルは、Canonicalのキーで署名されたモジュールのみを尊重する場合がありますが、これはもちろん所有していません。
  • 独自のカーネルをコンパイルする- 独自のカーネルをコンパイルする場合、署名されていないモジュールのロードに関する制限を緩めるなど、必要に応じてそのオプションを設定できます。次に、独自のEFIキーでカーネルに署名し、そのキーの公開バージョンをMOKリストに追加する必要があります。ここにあなた自身のカーネルをコンパイルすることについての質問と答えがあります。
  • 古いGRUBに切り替える -古いGRUBは署名されていないカーネルを起動するので、そのようなGRUB(Ubuntu 15.10以前から)をインストールして、署名されていないカーネルを起動させることができます。古いGRUBを維持するのは面倒になる可能性が高いことに注意してください。
  • セキュアブートを受け入れないブートローダーに切り替えます -SYSLINUXやELILOなどのブートローダーに独自のキーで署名し、そのキーの公開バージョンをMOKリストに追加すると、そのブートローダーはセキュアブートを無視します古いバージョンのGRUBと同様に、ブート設定。次に、署名のないカーネルを起動します。

これらのオプションのうち、100%確実に機能するのはセキュアブートを無効にするか、サードパーティのカーネルモジュールを回避することだけです。私はペストのようなサードパーティのカーネルモジュールを避けているので、セキュアブート環境でそれらを使用する個人的な経験はありません。セキュアブートを無効にすることは別として、独自のカーネルを構築することが最も可能性が高く、次に古いGRUBを使用するか、セキュアブートを尊重しないブートローダーを使用します。自分のカーネルを構築することはかつて一般的でしたが、最近ではそうする人はほとんどいません。最近のカーネルでは、実際にそうすることは言うまでもなく、カーネルを構成する方法を学ぶために時間を費やすことは重要です。古いGRUBや別のブートローダーを使用する方が簡単かもしれませんが、それを設定できるようにするには十分な知識が必要です。


2
*この問題が修正されるまでUbuntu 14.04を使用するデスクトップ上のLinuxがまだ見えない理由はたくさんあります。このようなことは、人々がLinuxを採用することを本当に苦痛にするだけです。
2017年

関連するモジュールに署名/lib/modules/x.y.z/updates/dkms/nvidia*.kokmodsignます:使用して手動で(各ドライバーの更新後も)または自動的にapt install shim-signedで署名ます。
Joel Purra
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.