Nvidia optimus linux настройка

Обновлено: 04.07.2024

Установлен проприетарный драйвер NVIDIA, но видеокарта не используется

К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.

Симптомы проблемы следующие:

  • драйвера для видеокарты NVidia успешно установились
  • система загружается и прекрасно работает
  • но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
  • попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
  • программы использующие CUDA (например, Hashcat) прекрасно работают

Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.

И всё-таки драйвер NVidia работает

Я могу убедиться в этом, поскольку срабатывала команда

А также успешно работали приложения, использующие CUDA. Для всех других задач я не мог задействовать видеокарту NVidia.

Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?

Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.

Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.

Как узнать, какая видеокарта используется в Linux

Есть несколько команд, которые покажут, какая видео карта используется:

Эта же самая команда, но запущенная через optirun из пакета Bumblebee:

Пример вывода, в котором показано, что задействована видеокарта NVIDIA:

Подробнее о optirun и Bumblebee будет позже.

Ещё одна команда, которая выводит информацию об используемой видеокарте (и прикольный треугольник в качестве бонуса):


С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:

Как проверить, используется ли видеокарта NVIDIA

Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):

Ещё одна команда, которая показывает процессы, потребляющие ресурсы видеокарты NVIDIA, а также уровень её загруженности, температуру и другие метрики:

Как установить видео драйвер NVidia в Linux

Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:

Возможно, этот же способ будет работать и для Debain и других производных.

Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:

Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.

Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)

Если ваша карта там есть, то переходите к выполнению следующих команд. У вас уже должен быть установлен проприетарный драйвер NVIDIA, как это показано выше.

На Kali Linux, Debian и их производных выполните:

В ПРОЦЕССЕ ПОДГОТОВКИ

На Arch Linux, BlackArch и их производных выполните:

Система зависает после установки Bumblebee

Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:

Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.

Вместо удаления bbswitch вы можете попробовать в опции загрузки ядра добавить строку:

Для этого создайте файл /etc/modprobe.d/options.conf:

и скопируйте в него:

Но у меня сработало только удаление bbswitch.

Как пользоваться Bumblebee / NVIDIA Optimus в Linux

Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:

Когда optirun не используется, то карта NVIDIA должна находиться в отключённом состоянии, что должно сберегать электричество.

Как проверить Bumblebee / NVIDIA Optimus в Linux

Запустите тест видеокарты обычной командой:


А также с помощью optirun:


Обратите внимание, что FPS вырос примерно в 20 раз.

Ещё один вариант теста работы видеокарты:


А также с помощью optirun:


Вы должны увидеть прирост производительности при использовании optirun.

Во время работы этих тестов, выполните команду:


Вы должны увидеть процессы, которые используют дискретную видеокарту.

Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:

В обоих случаях откройте вкладку:

Там вы увидите информацию об используемом графическом чипе:



Заключение

Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.

Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.

Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.

БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux

В этом разделе я перечислил то, что у меня не сработало — поэтому можете пропускать этот раздел.

Предупреждение: если после указанных в этом разделе действий вы не можете загрузиться — появляется чёрный экран, то во время неудачной загрузки нажмите Ctrl+Alt+F*, где вместо звёздочки пробуйте указать разные цифры, например, Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д., пока не появится консоль. Введите ваш логин и пароль и откатите изменения, которые привели к неудачной загрузке. Для удаления пакетов используйте стандартные менеджеры пакетов вашего дистрибутива, а для редактирования файлов в командной строке используйте vim или nano. Если вы не знакомы с vim или nano, то пропустите этот раздел!

Если драйвер NVidia установлен, то, вроде бы, видеокарта NVidia должна использоваться по умолчанию. У меня это никогда не происходило, всегда используется интегрированная графика Intel.

Начните с проверки настроек БИОСа — там может быть возможность отключить одну из карт.

Для явного указания используемого драйвера можно создать файл /etc/X11/xorg.conf.d/20-nvidia.conf.

И скопировать в него примерно следующее:

Но у меня не происходит загрузка в графический интерфейс.

Если вы хотите отключить загрузку драйверов Intel, то создайте файл /etc/modprobe.d/blacklist-intel.conf:

И скопируйте в него примерно следующее (название модулей могут отличаться в зависимости от вашего центрального процессора):

Среди других советов встречаются добавить в опции загрузки ядра следующее:

Если у вас EFI (а не БИОС), то для изменения опций загрузки ядра нужно открыть файл вида /boot/loader/entries/*.conf. У меня этот файл называется /boot/loader/entries/arch.conf:

Также рекомендуют изменить файл /mkinitcpio.conf:

В котором вместо строки

нужно записать строку

Затем нужно пересобрать ядро, для этого в Debian и производных нужно выполнить команду:

NVIDIA Optimus - технология, которая дает интегрированной графике Intel и дискретной Nvidia работать сообща в лаптопах. Чтобы заставить Optimus работать в Arch Linux потребуется сделать несколько непростых шагов, описанных ниже. Вот доступные решения:

    в BIOS, что увеличит продолжительность работы батареи, если отключить чип Nvidia. Но это невозможно сделать в некоторых BIOS.
  • Использование официальной поддержки Optimus включенной в проприетарный драйвер Nvidia, который предоставит хороший опыт работы, в сравнении с nouveau, с картами Nvidia, но не поддерживает переключения GPU и содержит больше ошибок. - официальный метод NVIDIA для поддержки переключаемой графики. - эти драйвера поддерживают переключение GPU, но предоставляют более низкую производительность, чем проприетарный драйвер Nvidia, также, до сих пор, не реализовано никакого энергосбережения. Не работают с новейшими Nvidia GPU. - решения сторонних разработчиков для реализации функционала подобного Optimus, поддерживающего переключение GPU и энергосбережение, но требующего более тонкой настройки.

Contents

Отключить один из GPU

Если требуется использовать только один из видеоадаптеров, проверьте опции BIOS. Найдите опцию, отключающую один из них. Некоторые лаптопы поддерживают отключение только одного из чипов. Если необходимо использовать обе видеокарты или невозможно отключить ту, что не нужна ищите решение ниже.

Используя драйвера Nvidia

Проприетарный драйвер Nvidia не поддерживает динамического переключения в отличие от nouveau. В наличии проблемы с тирингом, о которых Nvidia знает, но не спешит исправлять. Однако, эти драйвера предоставляют более высокую производительность в сравнении с драйверами nouveau.

Первым делом, установите пакеты nvidia, nvidia-libgl и xorg-xrandr из официальных репозиториев. После настройте xorg.conf. Узнайте PCI адрес карты Nvidia, для этого введите:

PCI адрес выглядит примерно так 01:00.0. В xorg.conf, отредактируйте 01:00.0 на 1:0:0.

Для более старых версий X сервера:

Далее добавьте в начало

/.xinitrc две строки:

Теперь перезагрузитесь для запуска драйверов и X. Если dpi дисплея не верный добавьте строку:

Если при загрузке X появился черный экран, удостоверьтесь, что в файле

/.xinitrc нет & перед xrandr. Если & есть, то видимо оконный менеджер запускается раньше, чем команда xrandr завершает выполнение, что и приводит к черному экрану.

Альтернативная конфигурация

Если возникли сбои в работе Xorg-server 1.17.1 и выше с описанной выше конфигурацией, измените раздел для Intel в /etc/X11/xorg.conf как показано ниже:

Как указано выше BusID должен совпадать с выводом lspci. Найдите строку с "VGA compatible controller", которая содержит "Intel". Например: $ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)

Если X запустился, но на экране ничего не происходит, проверьте содержит ли /var/log/xorg.conf подобную строку:

Если да, проблема может исчезнуть при добавлении раздела ServeLayout в /etc/X11/xorg.conf

Экранные менеджеры

При использовании менеджеров входа, создайте или отредактируйте скрипт настройки вместо использования

LightDM

Сделайте этот скрипт выполняемым:

Теперь настройте LightDM для запуска скрипта, отредактировав раздел [Seat:*] в /etc/lightdm/lightdm.conf:

Теперь перезагрузитесь и DM запуститься.

Для GDM создайте новый файл .desktop:

Удостоверьтесь, что GDM использует X как стандартный бэкенд.

Проверка 3D

Для проверки работает ли чип Nvidia установите mesa-demos и запустите:

$ glxinfo |grep NVIDIA

Проблемы

Тиринг и неработающий VSync

Для решения проблемы необходим xorg-server 1.19 или выше, ядро linux 4.5 или выше и nvidia 370.23 или выше. Затем включите "DRM kernel mode setting", что, в свою очередь, включит синхронизацию PRIME и исправит разрывы изображения.

См. также подробности в обсуждении на официальном форуме.

Также есть отчёт, что ядро linux 5.4 нарушает синхронизацию PRIME.

EDID errors in Xorg.log

Эта ошибка возникает когда драйвер nvidia не определяет EDID для дисплея. Необходимо вручную указать путь к файлу EDID или предоставить ту же информацию подобным образом.

Для предоставления пути к файлу EDID отредактируйте раздел "Device" для NVIDIA в Xorg.conf, добавив эти строки. Не забудьте изменить поля в соответствии с вашей системой:

Если Xorg не запускается попробуйте поменять ссылки CRT на DFB. card0 это идентификатор чипа Intel, который подключен к дисплею с помощью LVDS. Если расположение аппаратных средств отличается, значение пользовательского EDID может быть другим. Путь же будет начинаться с /sys/class/drm.

Используя nouveau

Свободные драйвера nouveau (xf86-video-nouveau)могут динамически переключаться с драйвером Intel (xf86-video-intel) используя технологию PRIME. Для более подробной информации смотрите PRIME.

Используя Bumblebee

Если хотите использовать Bumblebee, который поддерживает энергосбережение и другие полезные функции, смотрите Bumblebee.

Используя PRIME Render Offload

С выходом драйвера NVIDIA версии 435.17 появилась возможность использовать PRIME Render Offload. xf86-video-modesetting , xf86-video-amdgpu (450.57), и xf86-video-intel (455.38) официально поддерживаются как iGPU драйвера.

Использование

Чтобы запустить программу на карточке от NVIDIA, вы можете использовать prime-run - скрипт из nvidia-prime :

Можно писать всё вручную, к примеру, запуск Firefox:

Тот же запуск, но с использованием nvidia-prime :

Также доступен пакет prime AUR , который содержит в себе уже настроенный файл xorg.conf (Русский). Пример использования:

Решение проблем

Если по какой-либо причине автоматическая конфигурация не работает, то отредактируйте файл xorg.conf:

Проверьте, что загрузились оба модуля видеокарт:

См. официальную инструкцию по настройке для получения более подробной информации.

Если у вас установлен пакет bumblebee , вам следует убрать его, потому что он блокирует драйвер nvidia_drm, который необходим для загрузки драйвера nvidia X сервером для разгрузки (offloading).

Не запускается модуль Nvidia

Это можно решить, добавив в xorg.conf следующие строки:

Некорректная работа графического окружения

Иногда возникают различные ошибки связанные с использованием драйвера modesetting. Для решения таких проблем можно использовать драйвер intel или другие.

Основное требование к драйверу — использование и поддержка модуля Glamor.

Тогда блок конфигурации видеокарты Intel c драйвером intel будет выглядеть следующим образом.


Ubuntu

Что касается включения поддержки Nvidia Optimus в Linux, у пользователей Ubuntu это, пожалуй, лучшее. Нет необходимости возиться со сторонними источниками программного обеспечения, PPA, загружаемыми пакетами Deb или чем-то в этом роде. Вместо этого пользователям просто нужно включить проприетарный источник программного обеспечения Ubuntu (который поддерживает Canonical), установить некоторые пакеты и перезапустить вашу систему.

Использование apt-add-repository мгновенно активирует эти источники программного обеспечения на вашем ПК с Ubuntu. Затем запустите команду apt update, чтобы проверить наличие обновлений.

После запуска проверки обновлений вам необходимо установить все появившиеся обновления программного обеспечения. Установка этих обновлений гарантирует, что Bumblebee работает наилучшим образом.

После обновления программного обеспечения можно безопасно установить Bumblebee.

По завершении установки перезагрузите компьютер с Ubuntu. После повторного входа в систему поддержка Nvidia Optimus должна быть готова к работе!

Проверь это - Как использовать YouTube в качестве музыкальной библиотеки в Linux с помощью Magnesium

Debian

Как и Ubuntu, пользователям Debian не нужно делать никаких специальных настроек, чтобы получить поддержку Nvidia Optimus. Вместо этого, если вы хотите, чтобы ваш гибридный ноутбук Intel / Nvidia работал, достаточно установить несколько пакетов.

Примечание: нужно использовать Bumblebee с проприетарным драйвером Nvidia? Вам нужно будет включить non-free и contrib в /etc/apt/sources.list и сначала установить проприетарный драйвер Nvidia, включенный в Debian.

Bumblebee с драйверами Nvidia с открытым исходным кодом

Bumblebee с проприетарными драйверами Nvidia

После установки всех пакетов перезагрузите компьютер с Debian Linux, затем снова войдите в систему, и поддержка Optimus должна работать нормально!

Проверь это - 8 лучших художественных инструментов для пользователей Linux

Arch Linux

Получить Bumblebee в Arch Linux не так просто, как в других дистрибутивах Linux. Вместо того, чтобы все было предварительно настроено, вам нужно будет выполнить некоторую ручную настройку. Первым шагом является установка необходимых пакетов Bumblebee на Arch с помощью Pacman.

Примечание: не забудьте включить Multilib в /etc/pacman.conf, прежде чем продолжить, иначе 32-битные приложения не будут работать.

Затем добавьте своего пользователя в системную группу Bumblebee.

Включите сервис Bumblebee systemd с помощью systemctl.

Наконец, завершите процесс установки, перезагрузив компьютер с Arch Linux. Когда он завершит перезагрузку, Bumblebee и Nvidia Optimus будут работать правильно!

Fedora


В отличие от многих других дистрибутивов Linux, Fedora не включает Bumblebee в основные источники программного обеспечения. Вместо этого, чтобы пользоваться поддержкой Optimus в операционной системе Fedora, вам необходимо включить несколько сторонних источников программного обеспечения. Чтобы включить программные репозитории, откройте терминал и введите следующую команду.

Теперь, когда репозиторий Negativo17 включен в Fedora, установите необходимые драйверы Nvidia:

Затем включите репозиторий Bumblebee Copr.

Установите программное обеспечение Bumblebee в Fedora, используя DNF.

Добавьте своего пользователя в группу Bumblebee:

Наконец, включите службу Bumblebee systemd и отключите резервную службу Nvidia.

Завершите процесс перезагрузкой ПК с Fedora. Когда он вернется в сеть, ваша машина с Fedora Linux получит поддержку Optimus!

Проверь это - Как установить Google Cloud SDK в Linux

Общие инструкции

Распакуйте архив Bumblebee Tar:

Запустите сценарий конфигурации, чтобы сгенерировать файлы Makefile и все остальное, что необходимо для сборки программного обеспечения.

Наконец, скомпилируйте код и установите его:

После установки Bumblebee обратитесь к официальной странице прохождения чтобы узнать, как заставить его работать в вашем дистрибутиве.

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда активна


bumblebee - основной пакет проекта bumblebee, содержит в себе команду optirun
bumblebee-nvidia - обеспечивает поддержку проприетарного драйвера nvidia
virtualgl - Бэкенд VirtualGL
virtualgl-libs - необходимые библиотеки для работы virtualgl
virtualgl-libs-ia32 - обеспечивает установку 32 битных библиотек для запуска 32 битных приложений через VirtualGL бэкенд
primus - Бэкенд Primus
primus-libs - необходимые библиотеки для работы primus
primus-libs-ia32 - обеспечивает установку 32 битных библиотек для запуска 32 битных приложений через Primus бэкенд

Нам с вами понадобится лишь команда optirun . Но для начала нужно установить bumblebee . Все примеры мы будем рассматривать на примере Ubuntu.

Установка:

Хотя можно установить только bumblebee-nvidia , и он подтянет все зависимости автоматом. Но не будем рисковать, нам еще предстоят танцы с бубном.

Пакет установлен и готов к использованию. Казалось бы все хорошо, но вот таки не задача.

Для того, чтобы приложение использовало вычислительную мощь дискретной видеокарты потребуется выполнить всего одну команду optirun с передачей ей в качестве аргумента нужную программу.

Например: optirun Steam или optirun wine Steam.exe , в случае если софтина виндовая.

Все установлено и казалось бы готово к использованию, но я столкнулся с такой бедой при запуске optirun:

Эта ситуация вызвана тем, что нужно настроить наш bumblebee под нашу видюху.

Все основные настройки делаются путем правки файла конфига /etc/bumblebee/bumblebee.conf .

Открываем его в любом редакторе sudo gedit /etc/bumblebee/bumblebee.conf


Настройка:

Я пользуюсь проприетарным драйвером Nvidia. На момент написания мануала установлена версия 361.

Нам нужно указать, что мы используем драйвер nvidia, а не какой-то другой. Для этого находим строку Driver= в секции [bumblebeed] и подставляем туда значение с именем нашего драйвера, чтобы получилось Driver=nvidia .

Далее нужно указать имя драйвера в ядре и пути к библиотекам.

Нам нужно знать какой драйвер (с учетом версии) установлен и используется системой. Для этого выполняем команду:

Она вернет нам название из установленных пакетов или же можно посмотреть какие модули драйверов используются ядром для нашего железа выполнив команду:

В результате чего получаем:

Переходим к редактированию секции [driver-nvidia] . KernelDriver= должно быть задано значение, которое мы получили выше: KernelDriver=nvidia-361 .

LibraryPath=/usr/lib/nvidia-current:/usr/lib32/nvidia-current редактируем, чтобы получилось LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361 и строку XorgModulePath=/usr/lib/nvidia-361/xorg,/usr/lib/xorg/modules .

Настройка bumblebee завершена. Осталось перезагрузить демон командой:

Кайфуем

Как я писал выше запуск программ, которым требуется дискретная видеокарта, осуществляется командой:

Запустить настройку видеокарты в таком режиме можно используя такую команду:

Читайте также: