कर्नेल मॉड्यूल 'एनवीडिया-ड्रम' को कैसे उतारना है?


29

मैं डेबियन स्ट्रेच में सबसे अद्यतित NVIDIA ड्राइवर स्थापित करने की कोशिश कर रहा हूं। मैंने यहांNVIDIA-Linux-x86_64-390.48.run से डाउनलोड किया है , लेकिन जब मैं करने की कोशिश करता हूं

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)

क्या आप इसे बचाव मोड में करने की कोशिश कर सकते हैं?
vfbsilva

इस मुद्दे को गिटहब पर देखें : systemctl stop systemd-logindमॉड्यूल को उतारने से पहले।
GAD3R

@vfbsilva मेरा बचाव मोड अजीब है, यह हमेशा के लिए लूप कर रहा है, सभी यूएसबी उपकरणों को बार-बार पहचान रहा है। मैंने एंटर दबाने, रूट पासवर्ड देने और प्रॉम्प्ट प्राप्त करने में कामयाबी हासिल की, लेकिन कोई / देव नहीं है, इसलिए डिस्क का कोई माउंट संभव नहीं है।
रोड्रिगो

@ GAD3R सब मेरे पास है systemctl stop systemd-logind.service, लेकिन यह स्क्रीन को बंद कर देता है और मुझे ग्राफिक लॉगिन में वापस ले जाता है, जहां मुझे फिर से Ctrl + Alt + F2 करना पड़ता है।
रोड्रिगो

जवाबों:


28

मुझे लगता है कि आप प्रदर्शन प्रबंधक को रोकना चाहते हैं जो कि मुझे संदेह है कि मैं एनवीडिया ड्राइवरों का उपयोग कर रहा हूं।

एक पाठ कंसोल के लिए परिवर्तन के बाद (दबाने Ctrl+ Alt+ F2) और रूट के रूप में लॉग इन करने चित्रमय लक्ष्य है, जो है क्या चल रहा प्रदर्शन प्रबंधक रहता निष्क्रिय करने के लिए निम्न आदेश का उपयोग:

# systemctl isolate multi-user.target

इस बिंदु पर, मुझे उम्मीद है कि आप modprobe -r(या rmmodसीधे) का उपयोग कर एनवीडिया ड्राइवरों को उतारने में सक्षम होंगे :

# modprobe -r nvidia-drm

एक बार जब आप इसे बदलने / अपग्रेड करने में कामयाब हो जाते हैं और आप ग्राफिकल वातावरण को फिर से शुरू करने के लिए तैयार होते हैं, तो आप इस कमांड का उपयोग कर सकते हैं:

# systemctl start graphical.target

मैं इसे (आपके उत्तर का उपयोग करके) अनइंस्टॉल करने में कामयाब रहा, और नए संस्करण को उस बिंदु पर स्थापित किया जहां कोई और अधिक ग्राफिक मोड नहीं था। मुझे पीसी को प्रारूपित करना था और डेबियन को फिर से स्थापित करना था। अब कीड़े के एक पूरी तरह से अलग सेट करने के लिए ... यह सब सिर्फ ब्लेंडर में रेंडर करने के विकल्प के रूप में "जीपीयू" देखने के लिए है, और मैं अभी भी इसे नहीं देखता हूं। मालिक ड्राइवरों बेकार है!
रॉड्रिगो

4
इस modprobeकदम के बिना मेरे लिए काम किया ।
डॉन किर्कबी

1
हाँ, मुझे modprobeन तो क़दम की ज़रूरत थी ।
डेविड जुंग

मैं टेक्स्ट कंसोल में भी एनवीडिया-डीएम को नहीं हटा सकता। किसी भी विचार मैं इसे कैसे बलपूर्वक हटा सकता हूं?
एडिसन

@addison ध्यान दें कि यह केवल टेक्स्ट कंसोल पर होने के लिए पर्याप्त नहीं है , आपको X11 या वेलैंड को रोकने की जरूरत है या कर्नेल से एनवीडिया ड्राइवर का उपयोग कर रहा है। के बिंदु systemctl isolateआदेश है कि क्या करना है। लेकिन यह संभव है कि आपके सिस्टम में सही तरीके से कॉन्फ़िगर नहीं किया गया है ... जांचें ps -efऔर देखें कि क्या आप ड्राइवर का उपयोग कर सकते हैं, तो क्या यह प्रक्रिया बंद हो गई है। यह आपको चालक को उतारने की अनुमति देनी चाहिए।
filbranden 20

5

lsofकिसी भी फाइल को सूचीबद्ध करता है, जो यूजरस्पेस प्रोसेस के उपयोग में है। लेकिन nvidia_drmएक कर्नेल मॉड्यूल है, इसलिए lsofजरूरी नहीं कि यह वास्तव में उपयोग में है या नहीं। (मॉड्यूल फ़ाइल खुली नहीं होगी क्योंकि कर्नेल ने इसे रैम में पहले ही लोड कर दिया है। लेकिन मॉड्यूल यूज़र्सस्पेस या अन्य कर्नेल घटकों को सेवाएं प्रदान कर सकता है, और यही मॉड्यूल को उतारने से रोकता है।)

मॉड्यूल नाम lsmod | grep nvidia.drmके दाईं ओर संख्याएँ चलाएँ और देखें nvidia_drm। पहला नंबर केवल मॉड्यूल का आकार है; दूसरा उपयोग गिनती है। मॉड्यूल को सफलतापूर्वक निकालने के लिए, उपयोग की संख्या पहले 0 होनी चाहिए।

यदि X11 सर्वर nvidiaड्राइवर चला रहा है और उसका उपयोग कर रहा है , तो nvidia_drmकर्नेल मॉड्यूल सबसे अधिक उपयोग में होगा। तो आपको बहुत कम से कम, टेक्स्ट कंसोल में स्विच करना होगा और X11 सर्वर को बंद करना होगा। आमतौर पर यह जो भी एक्स डिस्प्ले मैनेजर सेवा आप उपयोग कर रहे हैं (जो निर्भर करता है कि आप किस डेस्कटॉप वातावरण का उपयोग कर रहे हैं) को रोककर किया जा सकता है।

जैसा कि त्रुटि संदेश में कहा गया है, यदि आप चल रहे हैं nvidia-persistenced, तो आपको nvidia_drmमॉड्यूल को अनलोड करने से पहले भी रोकना होगा ।


Ctrl + Alt + F2 के बाद, lsmodमुझे बता रहा है कि उपयोग करने की 1 प्रक्रिया है nvidia_drm। तो मैंने किया sudo /etc/init.d/gdm3 stop, जो okइसे रोकने में चला गया । लेकिन अभी भी 1 प्रक्रिया में lsmod। अब गनोम के अंदर, ps aux | grep nvidiaशो [irq/129-nvidia]और [nvidia]लेकिन नहीं nvidia-persistenced। इसके अलावा, यहां lsmod2 प्रक्रियाओं का उपयोग करके दिखाया गया है nvidia_drm। मैं फँस गया हूँ।
रोड्रिगो

3

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था।

* कारण: nvidia.drm पैकेज उपयोग में था


मैंने सभी NVIDIA पैकेजों को शुद्ध करके इसे ठीक किया।

इन 2 आदेशों के साथ पिछले सभी NVIDIA अधिष्ठापन हटाएं:


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

मॉड्यूल को हटा दिया जाना चाहिए।

रिबूट और आगे बढ़ो।


धन्यवाद! यह काम आ सकता है अगर मुझे इसे फिर से प्रारूपित करने की आवश्यकता है ...
रोड्रिगो

2

आप टिप्पणियों में रिपोर्ट करते हैं कि systemd-logind सेवा को रोकना आपको ग्राफिक लॉगिन में वापस ले जाता है । यदि आपके पास एक ग्राफ़िकल लॉगिन है तो X चल रहा है, इसलिए वीडियो ड्राइवर लोड और उपयोग में है। यह बहुत संभावना है कि एनवीडिया-ड्रम मॉड्यूल उपयोग में क्यों है।

इसके अतिरिक्त, जब आप कहते हैं कि आप एक स्पष्ट गलत धारणा को धोखा देते हैं

मैंने टेक्स्ट-ओनली मोड में रिबूट किया और शुरू किया है (उपयोगकर्ता नाम / पासवर्ड देने से पहले Ctrl + Alt + F2 दबाकर), लेकिन मुझे वही त्रुटि मिली।

Ctrl + Alt + F2 दबाने से वर्चुअल टर्मिनल # 2 पर स्विच किया जाता है, जिसे टेक्स्ट-मोड लॉगिन के लिए अच्छी तरह से कॉन्फ़िगर किया जा सकता है, लेकिन यह "टेक्स्ट मोड में शुरू" से बहुत दूर है। यदि आपके पास डिफ़ॉल्ट वर्चुअल टर्मिनल पर एक ग्राफिकल लॉगिन स्क्रीन है तो X चल रहा है, और एक अलग VT पर स्विच करने से वह परिवर्तित नहीं होता है। आप बस एक गैर- X सत्र में प्रवेश कर रहे हैं।

कोशिश करने वाली पहली और आसान चीज वास्तव में एक्स सर्वर को बंद करना है। ऐसा करने का पुराना तरीका यह होगा कि आप अपने टेक्स्ट-मोड सत्र में लॉग इन करें और कमांड निष्पादित करें

telinit 3

रनलेवल पर स्विच करने के लिए 3. कि systemd के साथ काम करना चाहिए, भी, लेकिन देशी systemd तरीका बजाय चलाने के लिए होगा

systemctl isolate multi-user.target

उन दोनों को विशेषाधिकार की आवश्यकता है, ज़ाहिर है, इसलिए आपको अपने आप को उपयोग करने sudoया जड़ बनाने की आवश्यकता होगी ।

यदि वह मॉड्यूल को नहीं हटाता है, या कम से कम आपके लिए मैन्युअल रूप से ऐसा करना संभव बनाता है, तो आपका अगला सबसे अच्छा शर्त सिस्टम को सीधे रनले 3 (बहु-उपयोगकर्ता लक्ष्य) में बूट करना होगा, या शायद रनलेवल में भी। (बचाव लक्ष्य)। मैं आमतौर पर बूटलोडर के माध्यम से बूट समय पर कर्नेल तर्क सूची के अंत में "3" (या "1") जोड़कर ऐसा करता हूं। आप इस लेख में वर्णित डिफ़ॉल्ट बूट लक्ष्य को भी बदल सकते हैं ।

यह भी ध्यान दें कि nVidia ड्राइवर अधिकांश लिनक्स डिस्ट्रो के लिए पूर्व-निर्मित पैकेज में उपलब्ध है। कुछ अपने स्वयं के मानक रेपो में उन पैकेजों को शामिल करते हैं क्योंकि ड्राइवर, सब के बाद, मालिकाना है, लेकिन आप निश्चित रूप से एक प्रतिष्ठित 3-पार्टी रेपो पा सकते हैं जो इसके पास है। मैं सीधे इंस्टॉलर को चलाने के बजाय ऐसे पैकेजों का उपयोग करने की दृढ़ता से सलाह देता हूं, लेकिन वहां से जहां आप अभी हैं, वहां पहुंचने के लिए आपको पहले ड्राइवर को मैन्युअल रूप से अनइंस्टॉल करने की आवश्यकता हो सकती है।


मैं इसे अनइंस्टॉल करने में कामयाब रहा (फ़िलिप के उत्तर का उपयोग करके), और नए संस्करण को उस बिंदु पर स्थापित किया जहां कोई और अधिक ग्राफिक मोड नहीं था। मुझे पीसी को प्रारूपित करना था और डेबियन को फिर से स्थापित करना था। अब कीड़े के एक पूरी तरह से अलग सेट करने के लिए ... यह सब सिर्फ ब्लेंडर में रेंडर करने के विकल्प के रूप में "जीपीयू" देखने के लिए है, और मैं अभी भी इसे नहीं देखता हूं। मालिक ड्राइवरों बेकार है!
रॉड्रिगो

@ रोड्रिगो, मुझे खेद है कि आपके पास इतना खराब अनुभव था। लेकिन इस तरह की समस्या इसका एक उदाहरण है कि मैं मैनुअल इंस्टॉलेशन करने के बजाय पैकेज का उपयोग करने की सलाह क्यों देता हूं।
जॉन बोलिंगर

हां, मैं पैकेज का उपयोग करना पसंद करता हूं। लेकिन मैंने कहीं पढ़ा है कि ब्लेंडर में GPU विकल्प शायद एक पुराने ड्राइवर की वजह से सक्षम नहीं था ...
रोड्रिगो

2

CUDA स्थापना

1) नवीनतम CUDA टूलकिट डाउनलोड करें

2) Ctl + Alt + F3 दबाकर tty3 पर स्विच करें

3) आगे बढ़ने से पहले एनवीडिया-ड्रम अनलोड करें।

3 ए) अलग-अलग बहुस्तरीय

sudo systemctl isolate multi-user.target

3 बी) ध्यान दें कि nvidia-drm वर्तमान में उपयोग में है।

lsmod | grep nvidia.drm

3 सी) एनवीडिया-ड्रम लोड करें

sudo modprobe -r nvidia-drm

4d) ध्यान दें कि एनवीडिया-ड्रम अब उपयोग में नहीं है।

lsmod | grep nvidia.drm

5) अपने डाउनलोड फ़ोल्डर में जाएं और कोडा इंस्टॉलेशन चलाएं।

sudo sh cuda_10.1.168_418.67_linux.run

6) स्थापना के दौरान किसी भी संकेत का जवाब दें।

7) जब स्थापना समाप्त हो गई है, तो पुष्टि करें कि CUDA संस्करण अपडेट किया गया है।

nvidia-smi

8) फिर से जीयूआई शुरू करें।

sudo systemctl start graphical.target

0

Nvidia ड्राइवरों को स्थापित करने का प्रयास करते समय डेबियन स्ट्रेच के साथ भी यही समस्या थी। जब टेक्स्ट मॉड में मेरा एकमात्र समाधान ड्राइवर को निकालना था, gdm और gnome-shell को पुनर्स्थापित करना। मुझे पता है कि यह एक अनाड़ी समाधान है, लेकिन मुझे याद है कि मैंने पहली बार सूक्ति-शैल को ठीक करने और केवल एनवीडिया चालक को हटाने और जीडीएम को फिर से स्थापित करने की कोशिश की थी। यह पता चला कि पूरे शेल को फिर से स्थापित करना बहुत आसान था।


लगता है कि मैं एक कम अनाड़ी समाधान की प्रतीक्षा करूंगा, यदि कोई दिखाता है।
रॉड्रिगो

0

मुझे भी इसी समस्या का सामना करना पड़ा। त्रुटि का कारण यह था कि मैंने गलती से क्यूडा की स्थापना के दौरान "एनवीडिया ड्राइवर स्थापित करें" चुना था।

इसलिए, CUDA की स्थापना के दौरान, जब आप निम्नलिखित विकल्पों का सामना करते हैं:

Linux-x86_64 384.81 के लिए NVIDIA त्वरित ग्राफिक्स ड्राइवर स्थापित करें? (Y) es / (एन) ओ / (क्यू) UIT:

कृपया q चुनें , समस्या हल हो जाएगी।


तो तुम क्या कह रहे हो? पुनर्स्थापना के लिए एकमात्र समाधान क्या है? जाहिर है कि एकमात्र समाधान नहीं है; अन्य उत्तर पोस्ट किए गए हैं।
स्कॉट

0

पाठ में अधिक शुरू करने के लिए सिस्टम को बदलने के लिए मेरे लिए क्या काम किया गया था

systemctl set-default runlevel3.target

फिर से शुरू करें और एनवीडिया क्यूडा ड्राइवर को एक बार फिर से स्थापित करें ताकि आप ग्राफिक्स मोड में फिर से शुरू करने के लिए सिस्टम बदलना चाहें

systemctl set-default runlevel5.target

0

systemd-logindमेरे लिए इसे रोकना :

sudo systemctl stop systemd-logind

यह इस github मुद्दे पर nvidia-xrun github पेज पर वर्कअराउंड के रूप में सुझाया गया है :

अच्छी खबर है दोस्तों, सिस्टमड-लोगिन्ड यहाँ अपराधी है। वर्तमान समाधान "nvidia-xrun" सत्र sudo systemctl stop systemd-logind से लॉग आउट करने के बाद निम्नलिखित कमांड चलाने के लिए है

फिर, आपने अन्य एनवीडिया मॉड्यूल को मैन्युअल रूप से हटा दिया होगा और मैन्युअल रूप से डीजीपीयू को बंद कर देंगे। यहां कोड स्निपेट है जो आपके "एनवीडिया-एक्सरुन" सत्र से लॉग आउट करने के बाद चलता है।

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"

जीथब पर सिस्टमड मुद्दा

एनवीडिया लिनक्स डेवलपर्स पोर्टल से संदर्भ लिंक

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.