web-dev-qa-db-ja.com

カーネルモジュール「nvidia-drm」をアンロードする方法

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)
35
Rodrigo

Nvidiaドライバーを使用していると思われるディスプレイマネージャーを停止したいと思います。

テキストコンソールに変更した後( Ctrl+Alt+F2)およびrootとしてログインし、次のコマンドを使用してグラフィカルターゲットを無効にします。これにより、ディスプレイマネージャーが実行され続けます。

# systemctl isolate multi-user.target

この時点で、modprobe -r(またはrmmodを直接)を使用してNvidiaドライバーをアンロードできると思います。

# modprobe -r nvidia-drm

それを交換/アップグレードして、グラフィカル環境を再び開始する準備ができたら、次のコマンドを使用できます。

# systemctl start graphical.target
37
filbranden

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モジュールをアンロードする前に、それも停止する必要があります。

5
telcoM

同様の問題がありました。

*理由:nvidia.drmパッケージが使用されていました


すべてのNVIDIAパッケージを削除して修正しました。

次の2つのコマンドを使用して、以前のすべてのNVIDIAインストールを削除します。


$ Sudo apt-get purge nvidia*
$ Sudo apt-get autoremove

モジュールを削除する必要があります。

再起動して先に進みます。

3
Kelly

CUDAのインストール

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
2
Clayton Mork

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ディストリビューション用のビルド済みパッケージで利用できることにも注意してください。ドライバーは結局のところ独自仕様であるため、それらのパッケージを独自の標準リポジトリに含めるものはほとんどありませんが、それを備えた信頼できるサードパーティのリポジトリを確実に見つけることができます。インストーラーを直接実行するのではなく、そのようなパッケージを使用することを強くお勧めしますが、現在の場所からそこに移動するには、まずドライバーを手動でアンインストールする必要がある場合があります。

2
John Bollinger

私も同じ問題に遭遇しました。エラーの原因は、cudaのインストール中に誤って「nvidiaドライバーのインストール」を選択したことです。

したがって、CUDAのインストール中に次のオプションが発生した場合:

Linux-x86_64 384.81用のNVIDIA Accelerated Graphics Driverをインストールしますか? (y)es /(n)o /(q)uit:

qを選択してください。問題が解決されます。

0
JNing

この問題を解決するには、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の謎ですが、私の新しいドッカーは動作します!!!

0
Dave B

私のために働いたのは、テキストで開始するようにシステムを変更することでした

systemctl set-default runlevel3.target

その後、再起動してnvidia cudaドライバーをインストールします

systemctl set-default runlevel5.target
0
Joaquim Muchaxo

停止中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"

GithubのSystemdの問題

Nvidia Linux開発者ポータルからの参照リンク

0
alexdemartos

Nvidiaドライバーをインストールしようとすると、Debian Stretchでも同じ問題が発生しました。テキストmodの場合、私の唯一の解決策は、ドライバーを削除して、gdmとgnome-Shellを再インストールすることでした。私はそれが不器用な解決策であることを知っていますが、私は最初にgnome-Shellを修正し、Nvidiaドライバーを削除してGDMを再インストールすることだけを試みたことを覚えています。シェル全体を再インストールするだけの方がはるかに簡単であることがわかりました。

0
Vlad Skurtolov