Làm cách nào để tải mô-đun hạt nhân 'nvidia-drm'?


29

Tôi đang cố gắng cài đặt trình điều khiển NVIDIA cập nhật nhất trong Debian Stretch. Tôi đã tải xuống NVIDIA-Linux-x86_64-390.48.runtừ đây , nhưng khi tôi cố gắng làm

sudo sh ./NVIDIA-Linux-x86_64-390.48.run

như đề xuất, một thông báo lỗi xuất hiện.

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.

Khi tôi cố gắng tìm ra ai đang sử dụng nvidia-drm(hoặc nvidia_drm), tôi không thấy gì cả.

~$ 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
~$

Và khi tôi cố gắng loại bỏ nó, nó nói rằng nó đang được sử dụng.

~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$ 

Tôi đã khởi động lại và bắt đầu ở chế độ chỉ có văn bản (bằng cách nhấn Ctrl + Alt + F2 trước khi đưa tên người dùng / mật khẩu), nhưng tôi đã gặp lỗi tương tự.

Ngoài ra, làm thế nào để tôi "biết rằng kernel của tôi hỗ trợ dỡ bỏ mô-đun"?

Tôi đang nhận được một vài cảnh báo khi khởi động liên quan đến nvidia, dù không biết chúng có liên quan hay không:

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)

bạn có thể thử làm nó trong chế độ cứu hộ không?
vfbsilva

Xem vấn đề này trên github : systemctl stop systemd-logindtrước khi dỡ các mô-đun.
GAD3R

@vfbsilva Chế độ cứu hộ của tôi rất lạ, nó lặp đi lặp lại mãi mãi, xác định tất cả các thiết bị USB hết lần này đến lần khác. Tôi đã quản lý để nhấn Enter, cung cấp mật khẩu gốc và nhận được lời nhắc, nhưng không có / dev, vì vậy không thể gắn đĩa.
Rodrigo

@ GAD3R Tất cả những gì tôi có là systemctl stop systemd-logind.service, nhưng điều này sẽ đóng màn hình và đưa tôi trở lại đăng nhập đồ họa, nơi tôi phải thực hiện lại Ctrl + Alt + F2.
Rodrigo

Câu trả lời:


28

Tôi tưởng tượng bạn muốn dừng trình quản lý hiển thị, đó là điều tôi nghi ngờ sẽ sử dụng trình điều khiển Nvidia.

Sau khi thay đổi thành bảng điều khiển văn bản (nhấn Ctrl+ Alt+ F2) và đăng nhập bằng root, sử dụng lệnh sau để tắt mục tiêu đồ họa, đây là yếu tố giúp trình quản lý hiển thị chạy:

# systemctl isolate multi-user.target

Tại thời điểm này, tôi hy vọng bạn có thể tải trình điều khiển Nvidia bằng cách sử dụng modprobe -r(hoặc rmmodtrực tiếp):

# modprobe -r nvidia-drm

Khi bạn đã quản lý để thay thế / nâng cấp nó và bạn đã sẵn sàng bắt đầu lại môi trường đồ họa, bạn có thể sử dụng lệnh này:

# systemctl start graphical.target

Tôi đã quản lý để gỡ cài đặt nó (sử dụng câu trả lời của bạn) và cài đặt phiên bản mới đến mức không còn chế độ đồ họa hoạt động nữa. Tôi phải định dạng PC và cài đặt lại Debian. Bây giờ với một bộ lỗi hoàn toàn khác ... Tất cả chỉ để xem "GPU" là một tùy chọn kết xuất trong Blender, và tôi vẫn không thấy nó. Trình điều khiển độc quyền hút!
Rodrigo

4
Điều này làm việc cho tôi mà không cần modprobebước.
Don Kirkby

1
Vâng, tôi cũng không cần modprobebước.
David Jung

Tôi không thể xóa nvidia-drm ngay cả khi trong bảng điều khiển văn bản. Bất cứ ý tưởng làm thế nào tôi có thể mạnh mẽ loại bỏ nó?
addison

@addison Lưu ý rằng nó không đủ để chỉ trên văn bản giao diện điều khiển, bạn cần phải dừng X11 hoặc Wayland hoặc bất cứ điều gì đang sử dụng trình điều khiển nvidia từ hạt nhân. Điểm của systemctl isolatelệnh là để làm điều đó. Nhưng có thể đó không phải là cấu hình chính xác trong hệ thống của bạn ... Kiểm tra ps -efvà xem nếu bạn có thể phát hiện ra những gì có thể đang sử dụng trình điều khiển, thì quá trình đó đã dừng lại. Điều đó sẽ cho phép bạn dỡ trình điều khiển.
filbranden

5

lsofliệt kê bất kỳ tệp nào được sử dụng bởi các quy trình không gian người dùng. Nhưng nvidia_drmlà một mô-đun hạt nhân, vì vậy lsofsẽ không nhất thiết phải xem liệu nó có thực sự được sử dụng hay không. (Tệp mô-đun sẽ không được mở vì kernel đã tải hoàn toàn vào RAM. Nhưng mô-đun có thể đang cung cấp dịch vụ cho không gian người dùng hoặc các thành phần hạt nhân khác và đó là điều ngăn cản việc dỡ bỏ mô-đun.)

Chạy lsmod | grep nvidia.drmvà xem các số ở bên phải của nvidia_drmtên mô-đun. Số đầu tiên chỉ đơn giản là kích thước của mô-đun; thứ hai là số lượng sử dụng. Để loại bỏ thành công mô-đun, số lần sử dụng phải là 0 trước tiên.

Nếu máy chủ X11 đang chạy và sử dụng nvidiatrình điều khiển, thì nvidia_drmmô-đun hạt nhân chắc chắn sẽ được sử dụng. Vì vậy, ít nhất bạn sẽ cần chuyển sang bảng điều khiển văn bản và tắt máy chủ X11. Thông thường, điều này có thể được thực hiện bằng cách dừng bất kỳ dịch vụ X Display Manager nào bạn đang sử dụng (tùy thuộc vào môi trường máy tính để bàn nào bạn đang sử dụng).

Như thông báo lỗi đã nói, nếu bạn đang chạy nvidia-persistenced, bạn cũng cần dừng điều đó trước khi bạn có thể dỡ nvidia_drmmô-đun.


Sau Ctrl + Alt + F2, lsmodđang cho tôi biết có 1 quy trình sử dụng nvidia_drm. Vì vậy, tôi đã làm sudo /etc/init.d/gdm3 stop, mà đã okdừng lại ở đó. Nhưng vẫn còn 1 quá trình lsmod. Bây giờ bên trong Gnome, ps aux | grep nvidiachương trình [irq/129-nvidia][nvidia]nhưng không nvidia-persistenced. Ngoài ra, ở đây lsmodcho thấy 2 quá trình sử dụng nvidia_drm. Tôi đang bị mắc kẹt.
Rodrigo

3

Tôi đã có một vấn đề tương tự.

* Lý do: gói nvidia.drm đã được sử dụng


Tôi đã sửa nó bằng cách xóa tất cả các gói NVIDIA.

Xóa tất cả các cài đặt NVIDIA trước đó bằng 2 lệnh sau:


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

Mô-đun nên được gỡ bỏ.

Khởi động lại và đi ra ngoài.


Cảm ơn bạn! Điều này có thể có ích nếu tôi cần định dạng lại ...
Rodrigo

2

Bạn báo cáo trong các nhận xét rằng việc dừng dịch vụ logind systemd sẽ đưa bạn trở lại đăng nhập đồ họa . Nếu bạn có thông tin đăng nhập đồ họa thì X đang chạy, vì vậy trình điều khiển video đã được tải và sử dụng. Điều này rất có thể giải thích một phần lý do tại sao mô-đun nvidia-drm được sử dụng.

Ngoài ra, bạn phản bội một quan niệm sai lầm rõ ràng khi bạn nói

Tôi đã khởi động lại và bắt đầu ở chế độ chỉ có văn bản (bằng cách nhấn Ctrl + Alt + F2 trước khi đưa tên người dùng / mật khẩu), nhưng tôi đã gặp lỗi tương tự.

Nhấn Ctrl + Alt + F2 sẽ chuyển sang thiết bị đầu cuối ảo # 2, có thể được cấu hình để đăng nhập ở chế độ văn bản, nhưng khác xa với "bắt đầu ở chế độ văn bản". Nếu bạn có màn hình đăng nhập đồ họa trên thiết bị đầu cuối ảo mặc định thì X đang chạy và chuyển sang VT khác sẽ không thay đổi điều đó. Bạn chỉ cần đăng nhập vào một phiên không phải là X.

Điều đầu tiên và dễ nhất để thử là thực sự tắt máy chủ X. Cách thức trường học cũ để làm điều này sẽ là đăng nhập vào phiên chế độ văn bản của bạn và thực hiện lệnh

telinit 3

để chuyển sang runlevel 3. Điều đó cũng hoạt động với systemd, nhưng cách systemd gốc sẽ là chạy thay vì

systemctl isolate multi-user.target

Tất cả những thứ đó đều đòi hỏi đặc quyền, tất nhiên, vì vậy bạn sẽ cần sử dụng sudohoặc tự mình root.

Nếu điều đó không loại bỏ mô-đun, hoặc ít nhất là giúp bạn có thể thực hiện thủ công, thì cách tốt nhất tiếp theo của bạn là khởi động hệ thống trực tiếp vào runlevel 3 (mục tiêu nhiều người dùng) hoặc thậm chí có thể vào runlevel 1 (mục tiêu giải cứu). Tôi thường làm điều này bằng cách thêm "3" (hoặc "1") vào cuối danh sách đối số kernel khi khởi động thông qua bộ tải khởi động. Bạn cũng có thể thay đổi mục tiêu khởi động mặc định như được mô tả trong bài viết này .

Cũng lưu ý rằng trình điều khiển nVidia có sẵn trong các gói dựng sẵn cho hầu hết các bản phân phối Linux. Rất ít bao gồm các gói đó trong repos tiêu chuẩn của riêng họ bởi vì trình điều khiển, rốt cuộc là độc quyền, nhưng bạn chắc chắn có thể tìm thấy một repo bên thứ 3 có uy tín có nó. Tôi thực sự khuyên bạn nên sử dụng các gói như vậy thay vì chạy trình cài đặt trực tiếp, nhưng để đến đó từ nơi bạn đang ở hiện tại, trước tiên bạn có thể cần phải gỡ cài đặt trình điều khiển theo cách thủ công.


Tôi đã quản lý để gỡ cài đặt nó (sử dụng câu trả lời của Filipe) và cài đặt phiên bản mới đến mức không còn chế độ đồ họa hoạt động nữa. Tôi phải định dạng PC và cài đặt lại Debian. Bây giờ với một bộ lỗi hoàn toàn khác ... Tất cả chỉ để xem "GPU" là một tùy chọn kết xuất trong Blender, và tôi vẫn không thấy nó. Trình điều khiển độc quyền hút!
Rodrigo

@Rodrigo, tôi xin lỗi bạn đã có một trải nghiệm kém như vậy. Nhưng loại vấn đề đó là một ví dụ về lý do tại sao tôi khuyên bạn nên sử dụng các gói thay vì thực hiện cài đặt thủ công.
John Bollinger

Có, tôi thích sử dụng các gói. Nhưng tôi đã đọc được ở đâu đó rằng tùy chọn GPU trong Blender có thể không được bật do trình điều khiển đã lỗi thời ...
Rodrigo

2

Cài đặt CUDA

1) Tải xuống Bộ công cụ CUDA mới nhất

2) Chuyển sang tty3 bằng cách nhấn Ctl + Alt + F3

3) Dỡ bỏ nvidia-drm trước khi tiếp tục.

3a) Cô lập đa người dùng. Nhắm mục tiêu

sudo systemctl isolate multi-user.target

3b) Lưu ý rằng nvidia-drm hiện đang được sử dụng.

lsmod | grep nvidia.drm

3c) Dỡ bỏ nvidia-drm

sudo modprobe -r nvidia-drm

4d) Lưu ý rằng nvidia-drm không được sử dụng nữa.

lsmod | grep nvidia.drm

5) Chuyển đến thư mục tải xuống của bạn và chạy cài đặt cuda.

sudo sh cuda_10.1.168_418.67_linux.run

6) Trả lời bất kỳ lời nhắc trong khi cài đặt.

7) Khi quá trình cài đặt kết thúc, hãy xác nhận rằng Phiên bản CUDA đã được cập nhật.

nvidia-smi

8) Khởi động lại GUI.

sudo systemctl start graphical.target

0

Có vấn đề tương tự với Debian Stretch khi cố gắng cài đặt trình điều khiển Nvidia. Khi ở chế độ văn bản, giải pháp duy nhất của tôi là gỡ bỏ trình điều khiển, cài đặt lại gdm và gnome-shell. Tôi biết đó là một giải pháp vụng về, nhưng tôi nhớ lần đầu tiên tôi đã thử sửa gnome-shell và chỉ gỡ bỏ trình điều khiển Nvidia và cài đặt lại GDM. Hóa ra việc cài đặt lại toàn bộ vỏ dễ dàng hơn nhiều.


Đoán tôi sẽ chờ một giải pháp ít vụng về hơn, nếu có xuất hiện.
Rodrigo

0

Tôi cũng gặp phải vấn đề tương tự. Lý do cho lỗi là do tôi vô tình chọn "Cài đặt trình điều khiển nvidia" trong quá trình cài đặt cuda.

Vì vậy, trong quá trình cài đặt CUDA, khi bạn gặp các tùy chọn sau:

Cài đặt trình điều khiển đồ họa tăng tốc NVIDIA cho Linux-x86_64 384.81? (y) es / (n) o / (q) uit:

Vui lòng chọn q , vấn đề sẽ được giải quyết.


Vì vậy, những gì bạn đang nói? Đó là giải pháp duy nhất là cài đặt lại? Đó rõ ràng không phải là giải pháp duy nhất; câu trả lời khác đã được đăng.
Scott

0

Điều làm việc cho tôi là thay đổi hệ thống để bắt đầu bằng văn bản nhiều hơn

systemctl set-default runlevel3.target

sau đó khởi động lại và cài đặt trình điều khiển nvidia cuda sau khi hoàn tất, bạn có thể muốn thay đổi hệ thống để bắt đầu lại ở chế độ đồ họa

systemctl set-default runlevel5.target

0

Dừng systemd-logindsửa nó cho tôi:

sudo systemctl stop systemd-logind

Điều này được đề xuất như một cách giải quyết trong vấn đề github này trên trang github nvidia-xrun:

Tin tốt, các systemd-logind là thủ phạm ở đây. Cách giải quyết hiện tại là chạy lệnh sau sau khi đăng xuất khỏi phiên "nvidia-xrun" sudo systemctl dừng systemd-logind

Sau đó, bạn sẽ xóa thủ công các mô-đun nvidia khác và tắt DGPU bằng tay. Đây là đoạn mã chạy sau khi bạn đăng xuất khỏi phiên "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"

Sự cố hệ thống trên Github

Liên kết tham khảo từ cổng thông tin Nvidia Linux Developers

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.