Debian Stretchに最新のNVIDIAドライバーをインストールしようとしています。ダウンロードしましたNVIDIA-Linux-x86_64-390.48.run
from here 、しかし、私がしようとすると
Sudo sh ./NVIDIA-Linux-x86_64-390.48.run
提案されているように、エラーメッセージが表示されます。
ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel. This may be because it is in use (for example, by an X server, a CUDA program, or
the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading. Please be sure to exit any programs
that may be using the GPU(s) before attempting to upgrade your driver. If no GPU-based programs are running, you know that your kernel supports module unloading,
and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module's usage count, for which the simplest remedy is to
reboot your computer.
誰がnvidia-drm
(またはnvidia_drm
)、何も見えません。
~$ Sudo lsof | grep nvidia-drm
lsof: WARNING: can't stat() Fuse.gvfsd-Fuse file system /run/user/1000/gvfs
Output information may be incomplete.
~$ Sudo lsof -e /run/user/1000/gvfs | grep nvidia-drm
~$
削除しようとすると、使用されていると表示されます。
~$ Sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$
(ユーザー名/パスワードを入力する前にCtrl + Alt + F2を押して)テキストのみのモードで再起動して起動しましたが、同じエラーが発生しました。
それ以外に、「私のカーネルがモジュールのアンロードをサポートしていることを知る」にはどうすればよいですか?
起動時にnvidiaに関連する警告がいくつか表示されますが、関連しているかどうかはわかりません。
Apr 30 00:46:15 debian-9 kernel: nvidia: loading out-of-tree module taints kernel.
Apr 30 00:46:15 debian-9 kernel: nvidia: module license 'NVIDIA' taints kernel.
Apr 30 00:46:15 debian-9 kernel: Disabling lock debugging due to kernel taint
Apr 30 00:46:15 debian-9 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module 375.82 Wed Jul 19 21:16:49 PDT 2017 (using threaded interrupts)
Nvidiaドライバーを使用していると思われるディスプレイマネージャーを停止したいと思います。
テキストコンソールに変更した後( Ctrl+Alt+F2)およびrootとしてログインし、次のコマンドを使用してグラフィカルターゲットを無効にします。これにより、ディスプレイマネージャーが実行され続けます。
# systemctl isolate multi-user.target
この時点で、modprobe -r
(またはrmmod
を直接)を使用してNvidiaドライバーをアンロードできると思います。
# modprobe -r nvidia-drm
それを交換/アップグレードして、グラフィカル環境を再び開始する準備ができたら、次のコマンドを使用できます。
# systemctl start graphical.target
lsof
は、ユーザースペースプロセスで使用されているファイルを一覧表示します。ただし、nvidia_drm
はカーネルモジュールであるため、lsof
は実際に使用されているかどうかを必ずしも確認しません。 (カーネルがすでにRAMに完全にロードしているため、モジュールファイルは開かれません。ただし、モジュールがユーザースペースまたは他のカーネルコンポーネントにサービスを提供している可能性があります。thatは、モジュール)
lsmod | grep nvidia.drm
を実行し、nvidia_drm
モジュール名の右側にある数字を確認します。最初の数値は単にモジュールのサイズです。 2番目は使用回数です。モジュールを正常に削除するには、最初に使用カウントを0にする必要があります。
X11サーバーが実行中でnvidia
ドライバーを使用している場合は、nvidia_drm
カーネルモジュールが確実に使用されます。したがって、少なくとも、テキストコンソールに切り替えて、X11サーバーをシャットダウンする必要があります。通常、これは、使用しているX Display Managerサービスを停止することで実行できます(使用しているデスクトップ環境によって異なります)。
エラーメッセージに記載されているように、nvidia-persistenced
を実行している場合は、nvidia_drm
モジュールをアンロードする前に、それも停止する必要があります。
同様の問題がありました。
*理由:nvidia.drmパッケージが使用されていました
すべてのNVIDIAパッケージを削除して修正しました。
次の2つのコマンドを使用して、以前のすべてのNVIDIAインストールを削除します。
$ Sudo apt-get purge nvidia*
$ Sudo apt-get autoremove
モジュールを削除する必要があります。
再起動して先に進みます。
1)最新の CUDAツールキットをダウンロードする
2)Ctl + Alt + F3を押してtty3に切り替えます
3)続行する前にnvidia-drmをアンロードします。
3a)multi-user.targetを分離する
Sudo systemctl isolate multi-user.target
3b)nvidia-drmが現在使用されていることに注意してください。
lsmod | grep nvidia.drm
3c)nvidia-drmをアンロードします
Sudo modprobe -r nvidia-drm
4d)nvidia-drmはもう使用されていないことに注意してください。
lsmod | grep nvidia.drm
5)ダウンロードフォルダーに移動し、CUDAインストールを実行します。
Sudo sh cuda_10.1.168_418.67_linux.run
6)インストール中のプロンプトに答えます。
7)インストールが完了したら、CUDAバージョンが更新されていることを確認します。
nvidia-smi
8)GUIを再起動します。
Sudo systemctl start graphical.target
Systemd-logindサービスを停止するとgraphicログインに戻ることをコメントで報告します。グラフィカルログインがある場合は、Xが実行されているため、ビデオドライバーが読み込まれ、使用されています。これは、nvidia-drmモジュールが使用されている理由の一部を説明している可能性が非常に高いです。
さらに、あなたが言うとき、あなたは明らかな誤解を裏切る
(ユーザー名/パスワードを入力する前にCtrl + Alt + F2を押して)テキストのみのモードで再起動して起動しましたが、同じエラーが発生しました。
Ctrl + Alt + F2を押すと、仮想端末#2に切り替わります。仮想端末はテキストモードログイン用に構成されている可能性がありますが、「テキストモードでの開始」とはかけ離れています。デフォルトの仮想端末にグラフィカルログイン画面があった場合、Xは実行中であり、別のVTに切り替えてもそれは変わりません。 X以外のセッションにログインしているだけです。
最初に試す最も簡単なことは、実際にXサーバーをシャットダウンすることです。これを行う昔ながらの方法は、テキストモードセッションにログインしてコマンドを実行することです。
telinit 3
ランレベル3に切り替えます。これはsystemdでも機能するはずですが、ネイティブのsystemdの方法では、代わりに
systemctl isolate multi-user.target
もちろん、どちらも特権が必要なので、Sudo
を使用するか、自分をrootにする必要があります。
それでもモジュールが削除されない場合、または少なくとも手動で削除できる場合は、次の最善策は、システムを直接ランレベル3(マルチユーザーターゲット)で、またはランレベル1でブートすることです。 (レスキューターゲット)。私は通常、ブート時にブートローダーを介してカーネル引数リストの最後に「3」(または「1」)を追加することでこれを行います。 この記事 で説明されているように、デフォルトのブートターゲットを変更することもできます。
NVidiaドライバーは、ほとんどのLinuxディストリビューション用のビルド済みパッケージで利用できることにも注意してください。ドライバーは結局のところ独自仕様であるため、それらのパッケージを独自の標準リポジトリに含めるものはほとんどありませんが、それを備えた信頼できるサードパーティのリポジトリを確実に見つけることができます。インストーラーを直接実行するのではなく、そのようなパッケージを使用することを強くお勧めしますが、現在の場所からそこに移動するには、まずドライバーを手動でアンインストールする必要がある場合があります。
私も同じ問題に遭遇しました。エラーの原因は、cudaのインストール中に誤って「nvidiaドライバーのインストール」を選択したことです。
したがって、CUDAのインストール中に次のオプションが発生した場合:
Linux-x86_64 384.81用のNVIDIA Accelerated Graphics Driverをインストールしますか? (y)es /(n)o /(q)uit:
qを選択してください。問題が解決されます。
この問題を解決するには、GUIを無効にし、再起動し、ログインしてドライバをインストールし、GUIを有効にして再起動します。
ユーザー名とパスワードを知っていることを確認してください!!!
ターミナルを開いて書き込みます
Sudo systemctl set-default multi-user.target
Sudo reboot 0
今すぐログインして、ターミナルに直接アクセスし、ドライバーをインストールします。ここでは440.44をインストールしていることに注意してくださいドライバーのバージョンに合わせて変更する必要があります。
Sudo ./NVIDIA-Linux-x86_64-440.44.run
ドライバーをインストールした後、GUIを有効にして再起動します。
Sudo systemctl set-default graphical.target
Sudo reboot 0
あなたはやるべきです
私の場合、nvidia-smiは新しいバージョン440.44を報告しましたが、Ubuntu 18.04のソフトウェアと更新ユーティリティで、追加の[ドライバ]タブに435と表示されます。もう1つのNVIDIAの謎ですが、私の新しいドッカーは動作します!!!
私のために働いたのは、テキストで開始するようにシステムを変更することでした
systemctl set-default runlevel3.target
その後、再起動してnvidia cudaドライバーをインストールします
systemctl set-default runlevel5.target
停止中systemd-logind
修正しました:
Sudo systemctl stop systemd-logind
これは、nvidia-xrun githubページの このgithubの問題 の回避策として推奨されます。
Systemd-logindがここの犯人です。現在の回避策は、「nvidia-xrun」セッションからログアウトした後に次のコマンドを実行することですSudo systemctl stop systemd-logind
次に、他のnvidiaモジュールを手動で削除し、DGPUを手動でオフにします。これは、「nvidia-xrun」セッションからログアウトした後に実行されるコードスニペットです。
echo 'Unloading nvidia_drm module' execute "Sudo rmmod nvidia_drm" echo 'Unloading nvidia_modeset module' execute "Sudo rmmod nvidia_modeset" echo 'Unloading nvidia module' execute "Sudo rmmod nvidia" echo 'Turning off nvidia GPU' execute "Sudo tee /proc/acpi/bbswitch <<<OFF" echo -n 'Current state of nvidia GPU: ' execute "cat /proc/acpi/bbswitch"
Nvidiaドライバーをインストールしようとすると、Debian Stretchでも同じ問題が発生しました。テキストmodの場合、私の唯一の解決策は、ドライバーを削除して、gdmとgnome-Shellを再インストールすることでした。私はそれが不器用な解決策であることを知っていますが、私は最初にgnome-Shellを修正し、Nvidiaドライバーを削除してGDMを再インストールすることだけを試みたことを覚えています。シェル全体を再インストールするだけの方がはるかに簡単であることがわかりました。