NVIDIA-PRIME: Перехід на інтелект


10

Щоразу, коли я переходжу з мого gpu (gtx 1060) на мій igpu (Intel 530), я не можу завантажуватися. Екран завантаження застряг із таким повідомленням:

[Не вдалося] Не вдалося запустити демон-стійкість NVIDIA. Докладніше див. У "systemctl status nvidia-persistenced.service".

Однак я можу завантажуватися, коли я переключаюсь на gvid Nvidia і перемикаюсь на мій igpu без перезавантаження, тимчасово працює. Я використовую Kubuntu 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:

Сьогодні я знову перевірив це і зрозумів, що перехід на Intel gpu взагалі не працює з 375 та 378. Вихід із системи заморожує екран. То чому це спрацювало один раз? Якщо я знову інсталюю всі драйвери після того, як я видалив старі, а потім застосував Prime-select intel (без перезавантаження!), Prime-select не оновлює прості профілі -> Він вибирає один із старих профілів non-nvidia (меса-профілі замість nvidia) і працює. Але як тільки я переходжу на профіль nvidia або перезавантажую, прості профілі оновлюються, і він більше не працює. Тож я гадаю, що в альтернативах EGl для Intel gpu щось не так? Вибачте за незручності.

ОНОВЛЕННЯ 12.2.2017:

Вчора я змінив програмне забезпечення nvidia-prime і виправив помилку. Незабаром я опублікую (можливо, на наступному тижні) свою модифіковану версію та вставлю посилання сюди, але я все-таки зіткнувся з проблемою: коли я вимикаю комп'ютер після його виконання sudo prime-select intel:

ksmserver збоїв (я використовую Kubuntu, ймовірно, це не проблема з Ubuntu)

-> ПК не може повністю відключитися, і старі (неправильні) альтернативи оновлення для GPU Intel відновлені

-> Я не можу завантажитися.

Однак якщо я запускаю sudo prime-select intelпісля відключення у режимі відновлення, все працює добре, і я можу використовувати графічний процесор Intel.

ОНОВЛЕННЯ 17.2.2017:

Я опублікував своє вирішення і все ще намагаюся виправити помилку в офіційних сховищах. Однак це, мабуть, помилка в оновленнях-альтернативах, тож наступним я повинен опублікувати там повідомлення про помилку.

Тим часом насолоджуйтесь моїм вирішенням! Я сподіваюся, що це працює і для вас. Якщо є якісь питання, залиште коментар.

ОНОВЛЕННЯ 26.2.2017

Як зазначав @whizzzkid, відеокарта nvidia все ще залишається активною після застосування мого виправлення. Однак сьогодні мені вдалося вирішити це питання. Я, мабуть, оновлю свою відповідь, щоб включити свій другий патч наступного тижня. Ось кілька тестів, які я провів:

Nvidia: 43-45Вт

Intel (увімкнено nvidia): 29-31 Вт

Intel (вимкнено nvidia): 15-17 Вт


Відредагуйте своє запитання та додайте висновок команди lspci -k | grep -EA2 'VGA|3D' терміналу.
Pilot6

О, я бачу, 10xx не мають mв кінці, навіть якщо вони мобільні.
Пілот6,

Напевно, nvidia-primeце ще не підтримує.
Pilot6

Що цікаво, це те, що він працює до тих пір, поки я не перезавантажуюсь. Я можу використовувати igpu, якщо я вийду та знову ввійду. Але як тільки я перезавантажуюсь, це більше не працює. І Nvidia gpu працює, і підтримується драйвером.
C11235

1
Я використовував powertop для контролю енергоспоживання. Він показує споживання енергії лише в тому випадку, якщо ви використовуєте акумулятор як джерело живлення. Погляньте на це питання або на сторінку чоловіка для отримання додаткової інформації.
C11235

Відповіді:


3

Ось мій виправлення / вирішення помилки:

Якщо ви хочете використовувати джмеля замість nvidia-prime, перегляньте відповідь, надану @whizzzkid нижче.

Тестовано з 64-розрядною версією Kubuntu 16.10 за допомогою KDE Plasma Version.7.5 та KDE Frameworks Version 5.26.0. Наступні кроки для мене працюють. Я сподіваюся, що вони працюватимуть і для вас, але я не можу цього гарантувати і не нести відповідальності, якщо вони цього не роблять. Але я радий допомогти вам, якщо ви залишите коментар.

У моєму випадку проблема полягала в тому, що оновлення-альтернатива / usr / lib / nvidia-XYZ-prime / взагалі не працювала. Він повинен перенаправляти дзвінки до драйвера Intel-mesa, але чомусь цього не зробив. Так це, мабуть, помилка в оновленнях-альтернативах? Я досі не знайшов місця, щоб повідомити про помилку щодо альтернатив оновлення. Будь ласка, коментуйте, якщо ви можете мені допомогти.

Я в основному змінив nvidia-prime трохи, щоб змінити альтернативи оновлення безпосередньо на драйвер Intel-mesa замість / usr / lib / nvidia-XYZ-prime /.

Важливо:

Перш ніж застосувати будь-який з цих кроків, переконайтеся, що знати, як отримати доступ до режиму відновлення на вашому ПК. Якщо ви не можете більше завантажуватися через це керівництво, ви все одно можете скасувати зміни в режимі відновлення за допомогою команд в останньому розділі цього посібника. Докладнішу інформацію див. На цьому веб-сайті щодо доступу до режиму відновлення .

Якщо ви використовуєте 32-бітну операційну систему, вам доведеться залишити всі команди, що містять x86_64 на кроці 4 та в розділі Як скасувати всі ці зміни .


Крок 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:

Застосуйте мій другий патч, щоб зменшити споживання енергії в режимі Intel:

Перевірте, яку версію драйвера nvidia у вас є. Наприклад, із наступною командою:

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

У цьому випадку nvidia-XYZ є nvidia-378. Дивіться цю нитку Stackoverflow .

Створіть файл bash, що містить наступний вміст, названий, наприклад, 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 

Створіть другий файл bash, що містить наступний вміст, названий, наприклад, poweron.sh, і замініть XYZ на номер версії драйвера nvidia.

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

В режимі Intel вам потрібно запустити перший скрипт після входу в систему з судо, а другий перед виходом із судо (інакше ваш ноутбук, ймовірно, вийде з ладу, як у моєму випадку). Я просто виконую їх sudo bash FILENAME.

Поки що мені не вдалося автоматично автозапустити ці сценарії як корінь під час входу та перед виходом. Однак це може бути можливим із початком роботи , як зазначав @Fiximan . Я можу знову оновити цю відповідь десь у майбутньому, якщо мені це вдасться зробити.


(ймовірно) помилки KDE у плазмі:

Все ще є помилка, яку мені не вдалося виправити у плазмі KDE: Кожного разу, коли я переходив з Nvidia на Intel після запуску ПК у режимі nvidia, ksmserver виходить з ладу і ПК стає непридатним, я мушу вимкнути його, натиснувши кнопка живлення приблизно 5-10 секунд. Це іноді призводить до того, що альтернативи оновлення змінюються на nvidia-prime замість Intel-mesa, що призводить до чорного екрану при запуску .

Якщо ви постраждали від помилки ksmserver, будь ласка, надайте офіційний звіт про помилку на bugs.kde.org .

Однак проблеми з тим, що ПК не вимикається, можна уникнути, якщо перед вимкненням завжди вибирати Intel-режим , навіть коли ви користуєтесь режимом nvidia. Якщо ви це зробите, в першу чергу все працює як слід, і вам не доведеться вимикати комп'ютер, натискаючи кнопку живлення, за винятком випадків, коли ви застосовуєте це керівництво в режимі nvidia.

Простий спосіб вирішення помилки на чорному екрані при запуску - просто видалити непрацюючі альтернативи оновлення:

Крок 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
Перевірте мою відповідь нижче.
whizzzkid

Гей, спасибі за це! Коли я запускаю ваш скрипт переходу, мій ком просто зависає (перед виходом). Чи є ще одне виправлення?
Wboy

На жаль, я не знаю жодного іншого виправлення. Це працює в моєму випадку. Ваша проблема також виникає в моєму випадку, як я писав, але лише вперше. Як я вже писав, вам потрібно перейти до Intel перед виходом. Тоді ця помилка не відбудеться. (Принаймні, в моєму випадку).
C11235

Привіт @ C11235 Дякую за виправлення. Я хотів би вас щось запитати: Перший раз, коли я встановлюю драйвер nvidia за замовчуванням, встановлюється в nvidia. Тоді Коли я повинен запустити сценарій? і що ви маєте на увазі логін як корінь?
Глаць

На жаль, ця частина моєї відповіді була трохи невиразною. Я мав на увазі, що ви увійдете в систему, а потім запустите скрипт як root (наприклад, з sudo). Сценарій слід запустити, коли ви тільки що увійшли та вже перейшли в режим Intel. Це виявляється, тимчасово повністю відключає GPU nvidia. Другий слід виконати перед виходом у режим Intel.
C11235

2

патч від @ C11235 працює, тепер я можу переключатися між nvidia та Intel, але це не зменшує споживання енергії. : - / що означає, що обидва ще працюють.

До речі, це простіший спосіб зробити це.

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

Дякую! На жаль, ви праві, дивіться моє оновлене запитання. Ви не заперечуєте, якщо я оновлюю свою відповідь, щоб включити ваш простіший спосіб встановлення?
C11235

@ C11235 о так, звичайно. Я зміг це все зрозуміти: gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 Я зараз працюю на 5,8 Вт на холостому ходу.
whizzzkid

Гаразд, це чудово! Я перевірив ваші інструкції, і причина зниження енергоспоживання така ж, як і в моєму випадку. Я написав сценарій, який використовує bbswitch, щоб відключити nvidia GPU, якщо вибирати перемикачем із перемиканням інтелект. У моєму випадку це зручніше, оскільки я маю зовнішній монітор і майже виключно використовую режим nvidia, тому я хотів використовувати nvidia-prime замість джмеля. Крім того, продуктивність при використанні nvidia-prime повинна бути кращою, ніж при використанні джмелів.
C11235

2

Рішення про не завантаження після переходу на відеокартку Intel:
Додати параметри завантаження ядра:

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

Можлива проблема з другим виправленням: Остання команда підказки "poweroff" -скрипту

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

Мабуть, коли я перезавантажуюсь в режимі Intel (Зміна режиму не набуває чинності, поки я не перезавантажуюсь, не знаю, чи нормально це), модуль bbswitch навіть не завантажується. Таким чином, немає bbswitch-файлу і немає можливості вимкнути nvidia GPU.

Я використовую:

  • Ноутбук MSI (GL72 7RDX)
  • Вбудований графічний процесор: Intel® HD Graphics 630 (Kaby Lake GT2)
  • окремий графічний процесор: Geforce GTX 1050
  • ОС: Ubuntu 16,04 лт

Вирішення цієї проблеми:

Відредагуйте файл / etc / модулі (з правами root) та додайте рядок

    bbswitch

Тепер bbswitch працює навіть під час завантаження в режимі Intel, а другий виправлення C11235 працює чудово.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.