NVIDIA-PRIME: खिचड़ी भाषा के लिए स्विच


10

जब भी मैं अपने gpu (gtx 1060) से अपने igpu (Intel 530), I कैंट बूट पर स्विच करता हूँ। लोडिंग स्क्रीन निम्नलिखित संदेश के साथ अटक गई है:

[विफल] एनवीआईडीआईए के Persistence Daemon को शुरू करने में विफल। विवरण के लिए 'systemctl status nvidia-persistenced.service' देखें।

हालाँकि, मैं बूट कर सकता हूं जब मैं एनवीडिया जीपीयू पर वापस जाता हूं और अस्थायी रूप से काम करने के बिना रिबूट किए बिना अपने igpu पर स्विच करता हूं। मैं कुबंटु 16.10 का उपयोग कर रहा हूं और केवल मेरा आंतरिक लैपटॉप डिस्प्ले। जब मैं अपने igpu पर स्विच करता हूं तो यह आउटपुट होता है:

sudo prime-select intel
Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: selecting nvidia-378-prime for the intel profile
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

sudo prime-select nvidia
Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: selecting nvidia-378 for the nvidia profile
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Lspci -k का परिणाम | grep -EA2 'VGA | 3D'

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: CLEVO/KAPOK Computer HD Graphics 530
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1)
        Subsystem: CLEVO/KAPOK Computer Device 6a03
        Kernel driver in use: nvidia

मैंने एक सप्ताह से अधिक समय से इस मुद्दे को अपने दम पर हल करने की कोशिश की है और मुझे नहीं पता कि क्या करना है। मैंने जो भी कोशिश की वह विफल रही।

क्या आप मेरी मदद कर सकते हैं?

अद्यतन 5.2.2017:

मैंने आज फिर से इसका परीक्षण किया और महसूस किया कि इंटेल जीपीयू पर स्विच करना 375 और 378 के साथ बिल्कुल भी काम नहीं करता है। लॉगिंग आउट स्क्रीन को जमा देता है। तो एक बार काम क्यों किया? यदि मैं पुराने को डिलीट करने के बाद फिर से सभी ड्राइवरों को स्थापित करता हूं और बाद में प्राइम-सिलेक्ट इंटेल (रिबूट के बिना!) का उपयोग करता हूं, तो प्राइम-सलेक्ट प्राइम प्रोफाइल को अपडेट नहीं करता है -> यह पुराने नॉन-एनवीडिया प्रोफाइल (मीसा प्रोफाइल) में से एक का चयन करता है nvidia के बजाय) और यह काम करता है। लेकिन जैसे ही मैं एक एनवीडिया प्रोफाइल या रिबूट पर जाता हूं, प्राइम प्रोफाइल अपडेट हो जाती हैं और यह किसी काम की नहीं रहती। तो मुझे लगता है कि इंटेल gpu के लिए EGL विकल्पों में कुछ गड़बड़ है? किसी भी असुविधा के लिए खेद है।

अद्यतन 12.2.2017:

कल, मैंने एनवीडिया-प्राइम सॉफ्टवेयर को संशोधित किया और बग को ठीक किया। मैं जल्द ही (संभवत: अगले सप्ताह) अपने संशोधित संस्करण को प्रकाशित करूंगा और यहां एक लिंक चिपकाऊंगा, लेकिन मुझे अभी भी एक मुद्दा मिला है: जब मैंने अपने पीसी को बंद कर दिया था, जब मैं निष्पादित हुआ था sudo prime-select intel:

ksmserver क्रैश (मैं कुबंटू का उपयोग कर रहा हूं, शायद उबंटू के साथ कोई समस्या नहीं है)

-> पीसी पूरी तरह से बंद नहीं हो सकता है और इंटेल जीपीयू के लिए पुराने (गलत) अपडेट-विकल्प बहाल किए गए हैं

-> मैं बूट नहीं कर सकता।

हालांकि, अगर मैं sudo prime-select intelरिकवरी मोड में शटडाउन के बाद चलता हूं तो सब कुछ ठीक हो जाता है और मैं इंटेल जीपीयू का उपयोग कर सकता हूं।

अद्यतन दिनांक 17.2.2017:

मैंने अपना वर्कअराउंड पोस्ट किया और अभी भी आधिकारिक रिपॉजिटरी में बग को ठीक करने की कोशिश कर रहा हूं। हालाँकि, यह शायद अपडेट-विकल्प में बग है, इसलिए अगली बार मुझे वहां बग-रिपोर्ट पोस्ट करना होगा।

इस बीच, मेरे समाधान का आनंद लें! मुझे उम्मीद है कि यह आपके लिए भी काम करता है। अगर कोई सवाल है तो कृपया एक टिप्पणी छोड़ दें।

UPDATE 26.2.2017

जैसा कि @whizzzkid ने बताया, एनवीडिया ग्राफिक्स कार्ड मेरे पैच लगाने के बाद भी सक्रिय रहता है। हालाँकि, आज मैं इस मुद्दे को हल करने में सक्षम था। मैं संभवत: अगले सप्ताह अपना दूसरा पैच शामिल करने के लिए अपने उत्तर को अपडेट करूंगा। यहाँ कुछ परीक्षण किए गए हैं:

एनवीडिया: 43-45 डब्ल्यू

इंटेल (एनवीडिया पर): 29-31 डब्ल्यू

इंटेल (एनवीडिया बंद): 15-17 डब्ल्यू


कृपया अपना प्रश्न संपादित करें और lspci -k | grep -EA2 'VGA|3D' टर्मिनल कमांड का आउटपुट जोड़ें ।
पायलट

ओह, मैं देख रहा हूं कि 10xx mके अंत में नहीं है भले ही वे मोबाइल हों।
पाइलट

शायद nvidia-primeअभी तक इनका समर्थन नहीं करता है।
पाइलट

खैर, दिलचस्प बात यह है कि यह तब तक काम करता है जब तक मैं रिबूट नहीं करता। मैं igpu का उपयोग कर सकता हूं यदि मैं लॉगआउट करता हूं और फिर से लॉगिन करता हूं। लेकिन जैसे ही मैंने रिबूट किया यह काम नहीं करता है। और एनवीडिया जीपीयू काम करता है, और ड्राइवर द्वारा समर्थित है।
C11235

1
मैंने पावर उपयोग की निगरानी के लिए पावरटॉप का उपयोग किया। यह केवल बिजली की खपत को दर्शाता है यदि आप बैटरी का उपयोग शक्ति स्रोत के रूप में करते हैं। अधिक जानकारी के लिए इस प्रश्न या उस आदमी पृष्ठ पर एक नज़र डालें ।
C11235

जवाबों:


3

यहाँ बग के लिए मेरा फिक्स / वर्कअराउंड है:

यदि आप एनवीडिया -प्राइम के बजाय भौंरा का उपयोग करना चाहते हैं, तो नीचे दिए गए @whizzzkid द्वारा दिए गए उत्तर पर एक नज़र डालें।

कुबंटु 16.10 64-बिट के साथ केडीई प्लाज्मा संस्करण.7.5 और केडीई फ्रेमवर्क संस्करण 5.26.0 का उपयोग करके परीक्षण किया गया । निम्नलिखित चरण मेरे लिए काम करते हैं। मुझे उम्मीद है कि वे आपके लिए भी काम करेंगे, लेकिन मैं गारंटी नहीं दे सकता और अगर वे नहीं करते हैं तो कोई जिम्मेदारी नहीं लेते हैं। लेकिन अगर आप कोई टिप्पणी छोड़ते हैं तो मुझे आपकी मदद करने में खुशी होगी।

मेरे मामले में, समस्या यह थी कि अद्यतन-विकल्प / usr / lib / nvidia-XYZ-prime / सभी पर काम नहीं किया। यह इंटेल-मेसा चालक को कॉल पुनर्निर्देशित करना चाहिए, लेकिन किसी कारण से यह नहीं हुआ। तो यह शायद अद्यतन-विकल्पों में सभी बग के बाद है? मुझे अभी भी अपडेट-विकल्प के लिए बग की रिपोर्ट करने के लिए जगह नहीं मिली है। अगर आप मेरी मदद कर सकते हैं तो कृपया टिप्पणी करें।

मैंने मूल रूप से एनवीडिया-प्राइम को थोड़ा बदल दिया है ताकि अपडेट-विकल्प को सीधे इंटेल-मेसा ड्राइवर के बजाय / usr / lib / nvidia-XYZ-prime / में बदल सके।

जरूरी:

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

यदि आप 32-बिट ऑपरेटिंग सिस्टम का उपयोग करते हैं , तो आपको चरण 4 में x86_64 वाले सभी आदेशों को छोड़ना होगा और इन सभी संशोधनों को पूर्ववत् कैसे करना है , इस अनुभाग में ।


चरण 1:

नीचे दिए गए उनके उत्तर में @whizzzkid द्वारा प्रदान की गई एक आसान विधि का उपयोग करके मेरा पैच स्थापित करें:

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select

चरण 2:

इंटेल मोड में बिजली की खपत को कम करने के लिए मेरा दूसरा पैच लागू करें:

जांचें कि आपके पास कौन सा एनवीडिया-ड्राइवर संस्करण है। निम्नलिखित आदेश के साथ उदाहरण के लिए:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

इस मामले में एनवीडिया-एक्सवाईजेड एनवीडिया -378 है। इस Stackoverflow धागे को देखें ।

उदाहरण के लिए poweroff.sh नाम की निम्नलिखित सामग्री वाली एक बैश फ़ाइल बनाएँ

#!/bin/bash
line=$(</etc/prime-discrete)
if [ "$line" == "off" ] 
   then
   rmmod nvidia-drm
   rmmod nvidia-modeset
   rmmod nvidia
   bash -c 'echo OFF > /proc/acpi/bbswitch'
fi 

उदाहरण के लिए poweron.sh नाम की निम्नलिखित सामग्री के साथ एक दूसरी बैश फाइल बनाएं और अपने एनवीडिया ड्राइवर वर्जन नंबर के साथ एक्सवाईजेड को बदलें।

#!/bin/bash
modprobe nvidia-XYZ
modprobe nvidia-XYZ-modeset
modprobe nvidia-XYZ-drm
modprobe nvidia-XYZ-uvm
echo ON > /proc/acpi/bbswitch

Intel मोड में, आपको sudo के साथ लॉगिन करने के बाद पहली स्क्रिप्ट को चलाना होगा और दूसरा sudo के साथ लॉगआउट करने से पहले (अन्यथा आपका लैपटॉप संभवतः दुर्घटनाग्रस्त हो जाएगा, जैसा कि मेरे मामले में है)। मैं सिर्फ उनके साथ अमल करता हूं sudo bash FILENAME

अब तक मैं इन स्क्रिप्ट्स को लॉग ऑन करने और लॉगआउट करने से पहले स्वतः ही इनटॉस्ट करने में सक्षम नहीं था। हालाँकि, यह upstart के साथ संभव हो सकता है, जैसा कि @Fiximan ने बताया। अगर मैं ऐसा करने का प्रबंधन करता हूं तो मैं भविष्य में इस उत्तर को फिर से अपडेट कर सकता हूं।


(शायद) केडीई प्लाज्मा विशिष्ट त्रुटियां:

अभी भी एक बग है जिसे मैं केडीई प्लाज्मा में ठीक करने में सक्षम नहीं था: जब भी मैंने एनवीडिया से इंटेल में स्विच किया, जब मैंने एनवीडिया-मोड में पीसी शुरू किया, तो केसमर क्रैश हो गया और पीसी बेकार हो गया, मुझे दबाकर बंद करना होगा लगभग 5-10 सेकंड के लिए पावर बटन। इसके परिणामस्वरूप कभी-कभी अद्यतन-विकल्प को इंटेल-मेसा के बजाय एनवीडिया-प्राइम में बदल दिया जाता है जो स्टार्टअप पर ब्लैक-स्क्रीन की ओर जाता है ।

यदि आप ksmserver बग से प्रभावित होते हैं, तो कृपया bugs.kde.org पर आधिकारिक बग-रिपोर्ट में योगदान करें

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

ब्लैक-स्क्रीन-ऑन-स्टार्टअप-बग के लिए एक सरल समाधान केवल काम नहीं करने वाले अपडेट-विकल्प को पूरी तरह से हटा देना है:

चरण 1:

पुनर्प्राप्ति मोड दर्ज करने के बाद आप अपने पीसी को फिर से एक्सेस कर सकते हैं, रूट कमांड शेल का चयन करें और निम्नलिखित 2 कमांड निष्पादित करें:

mount -o remount,rw /
prime-select nvidia

चरण 2:

निम्नलिखित आदेश निष्पादित करें:

sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf

इन सभी संशोधनों को पूर्ववत कैसे करें

बस निम्नलिखित कमांड निष्पादित करें:

sudo rm /usr/bin/prime-select
sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603

1
नीचे मेरे जवाब की जाँच करें।
व्हिस्ज़किड

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

दुर्भाग्य से, मुझे किसी अन्य फिक्स का पता नहीं है। यह मेरे मामले में काम करता है। आपकी समस्या मेरे मामले में भी है, जैसा कि मैंने लिखा है, लेकिन केवल पहली बार। जैसा कि मैंने लिखा है, आपको लॉगआउट से पहले इंटेल में वापस स्विच करना होगा। तब यह त्रुटि नहीं होगी। (कम से कम मेरे मामले में)।
C11235

हाय @ C11235 ठीक करने के लिए धन्यवाद। मैं आपसे कुछ पूछना चाहता हूं: पहली बार जब मैं डिफ़ॉल्ट रूप से एनवीडिया ड्राइवर स्थापित करता हूं तो एनवीडिया में सेट किया जाता है। फिर मुझे स्क्रिप्ट कब चलना चाहिए? और आपको रूट के रूप में लॉगिन करने का क्या मतलब है?
Glats

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

2

पैच @ C11235 काम करता है, अब मैं एनविडिया और इंटेल के बीच स्विच कर सकता हूं, लेकिन इससे बिजली की खपत कम नहीं होती है। : - / जिसका अर्थ है कि दोनों अभी भी चल रहे हैं।

BTW यह ऐसा करने का एक आसान तरीका है।

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select

धन्यवाद! दुर्भाग्य से, आप सही हैं, मेरा अद्यतन प्रश्न देखें। अगर आपको अपना आसान इंस्टालेशन विधि शामिल करने के लिए अपना जवाब अपडेट करना है तो क्या आपको बुरा लगता है?
21120 पर C11235

@ C11235 ओह हाँ यकीन है। मैं यह सब पता लगाने में सक्षम था: gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 अभी मैं निष्क्रिय पर 5.8W चला रहा हूं।
व्हिस्ज़किड

ठीक है वो बहुत बढ़िया है! मैंने आपके निर्देशों की जाँच की और कम बिजली की खपत का कारण मेरे मामले में वैसा ही है। मैंने एक स्क्रिप्ट लिखी है जो कि nvidia GPU को निष्क्रिय करने के लिए bbswitch का उपयोग करता है यदि प्राइम-सेलेड इंटेल मोड का चयन करें। मेरे मामले में यह अधिक सुविधाजनक है, क्योंकि मेरे पास एक बाहरी मॉनिटर है और लगभग विशेष रूप से एनवीडिया मोड का उपयोग करता है, इसीलिए मैं भौंरा के बजाय एनवीडिया-प्राइम का उपयोग करना चाहता था। इसके अलावा जब भौं-प्राइम का उपयोग किया जाता है तो भौंरा का उपयोग करते समय प्रदर्शन बेहतर माना जाता है।
C11235

2

इंटेल वीडियोकार्ड पर स्विच करने के बाद बूट न ​​करने का समाधान:
कर्नेल बूट पैरामीटर जोड़ें:

acpi_osi=! acpi_osi="Windows 2009"

इस समस्या का कारण: बग # 156341 कर्नेल
समाधान स्रोत में: लिंक

कुछ और विस्तृत, यह समझने में अधिक आसान होगा:

sudo echo -e "GRUB_CMDLINE_LINUX_DEFAULT='acpi_osi=! acpi_osi='Windows 2009''"  | sudo tee -a /etc/default/grub
sudo update-grub

इसके वर्तमान स्वरूप में आपका उत्तर उतना अच्छा नहीं है जितना कि यह हो सकता है। क्या आप एक अच्छे उत्तर को कैसे लिख सकते हैं, इसकी समीक्षा कर सकते हैं और अपने उत्तर के विस्तार पर विचार कर सकते हैं
जे। स्टार

यह वास्तव में मेरे लिए काम करता है, लेकिन जवाब में सुधार किया जा सकता है। मैं सुधार का सुझाव
दूंगा

1

2 फिक्स के साथ संभव मुद्दा: "पॉवरऑफ" -स्क्रिप्ट का अंतिम आदेश संकेत देता है

    bash: /proc/acpi/bbswitch: No such file or directory

जाहिरा तौर पर, जब मैं इंटेल मोड में रिबूट करता हूं (मोड को बदलना प्रभाव में नहीं जाता है, तो मैं रिबूट करता हूं, पता नहीं कि यह सामान्य है), bbswitch- मॉड्यूल भी लोड नहीं होता है। तो कोई bbswitch-file नहीं है और nvidia GPU को बंद करने का कोई तरीका नहीं है।

मैं उपयोग कर रहा हूँ:

  • MSI- लैपटॉप (GL72 7RDX)
  • एकीकृत GPU: इंटेल® एचडी ग्राफिक्स 630 (कैबी लेक जीटी 2)
  • अलग जीपीयू: जीईएफटी जीटीएक्स 1050
  • ओएस: उबंटू 16.04 लीटर

इस समस्या का समाधान:

फ़ाइल / etc / मॉड्यूल (रूट विशेषाधिकारों के साथ) संपादित करें और लाइन जोड़ें

    bbswitch

अब bbswitch तब भी चालू है जब मैं इंटेल मोड में बूट करता हूं, और C11235 का दूसरा फिक्स ठीक काम करता है।

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