起動時にNVIDIAドライバーのオン/オフを切り替える

起動時にNVIDIAドライバーのオン/オフを切り替える

同じ Linux パーティションを直接 (「ベアメタル」) 起動し、Windows の VirtualBox のゲストとして起動しています。

このパーティションを直接起動すると、正常に起動してデスクトップが表示されます。ただし、VM 内で起動すると、systemd.unit=multi-user.targetgrub ブート オプションを使用して TTY で正常に起動できます。

私の PC には nVidia GPU が搭載されているため、ベアメタルを起動するために nvidia ドライバーがインストールされています。ただし、VM を起動すると、VM には nVidia GPU が存在しません。VMWare は独自の仮想 VGA ハードウェアを提供します。私の理解では、Linux にはそのためのメインライン ドライバーがあり、それらは適切に認識されます。

$ lspci -k
...
00:02.0 VGA compatible controller: VMware SVGA II Adapter
        Subsystem: VMware SVGA II Adapter
        Kernel driver in use: vmwgfx
        Kernel modules: vmwgfx
...

上記のカーネル オプションを使用して VM を実行し、TTY で起動してから、ssh 経由で VM にログオンして を実行すると、sudo systemctl start graphical.targetVM のグラフィカル出力には、ログイン プロンプトの直前にクラッシュしたことが再度表示されます。次のようになります。クラッシュsystemd ジャーナルには次のログが含まれます。journalctl 出力

VM では NVIDIA ドライバーなしで起動し、ベアメタルでは NVIDIA ドライバーを使用して起動できるようにしたいです。どうすればいいでしょうか? これを機能させることを本当に待ち望んでいます。残念ながら、NVIDIA ドライバーをアンインストールせずにオフにすることに関するすべてのオンラインの議論は、ラップトップに同時に 2 つの GPU がある場合の Optimus / Prime / GPU の切り替えに関するものであり、これは当てはまりません。基本的に、私が行っていることは、NVIDIA GPU を搭載した PC からハード ドライブを引き出し、汎用 GPU (「VMware」というブランド) を搭載した PC に挿入し、そこから取り出して NVIDIA PC に戻すようなものです。たとえば、grub で「Linux with nvidia gpu」と「Linux with vmware gpu」の 2 つの別々の選択があることで、構成の変更が示されることがわかります。正しいものを選択する必要があります。

これについては 100% 確信はありませんが、nvidia ドライバーがカーネルにパッチを適用することは理解しています。したがって、nvidia パッチを適用したカーネルと非 nvidia カーネルを選択できる方法があるのではないでしょうか。これは良いアプローチでしょうか。

私は Ubuntu 18.04 x64 で nvidia-390 を使用していますが、そのバージョンを他のものに変更することもできます。

あらゆるヒントをいただければ幸いです。

答え1

結局、nVidia ドライバーをオフにする必要はありませんでした。ここで起こっているのは、VirtualBox のバグが原因でフリーズが発生しているということです。グラフィックス コントローラーの実装を VMSVGA から VBoxVGA (VBoxSVGA ではない) に切り替えると、問題は解決し、システムを起動してデスクトップを表示できるようになりました。

この解決策を提案してくれた Freenode の vbox irc チャネルの klaus-vb に感謝します。彼は Ubuntu 18.04 のバグを認識していました。どうやらその点では 18.10 の方が優れているようです。

関連情報