Как запустить приложение с дискретной видеокартой linux
Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?
Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.
Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.
И всё-таки драйвер NVidia работает
Я могу убедиться в этом, поскольку срабатывала команда
А также успешно работали приложения, использующие CUDA. Для всех других задач я не мог задействовать видеокарту NVidia.
Как установить видео драйвер NVidia в Linux
Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:
Возможно, этот же способ будет работать и для Debain и других производных.
Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:
Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.
Кайфуем
Как я писал выше запуск программ, которым требуется дискретная видеокарта, осуществляется командой:
Запустить настройку видеокарты в таком режиме можно используя такую команду:
У вас недостаточно прав для того чтобы тут гадить.
Комментарии
Hi there, You've done an incredible job. I'll definitely digg it and in my opinion suggest
to my friends. I am sure they'll be benefited from this site.
Заключение
Данный метод, как я понял, точно работают для программ, использующих библиотеки OpenGL и Vulkan. У меня, к сожалению, не получилось запустить так Windows приложение через Wine, которое использует DirectX, но это уже совсем другая история. (OpenGL приложения под Wine работают)
Долгое время я пытался перейти на Linux, но все попытки заканчивались фиаско. Связано было это с его незнанием и кривыми руками.
Как гласит пословица — «если долго мучиться, что нибудь получится», так получилось и в моей ситуации.
Совсем недавно, порядка недели назад, с моей Windows 8 что — то приключилось (темный экран при загрузке почему — то мерцал и система не грузилась). После пары неудачных попыток восстановления, я твёрдо решил перейти на Linux (чем — то давно он меня заинтересовал).
Самым главным для меня было наличие программ аналогичных тем, что есть в Windows и запуск тяжёлых игр.
Основная часть
Для установки я выбрал дистрибутив Ubuntu 12.04 LTS.
Я читал некоторые топики на Хабре о том, как запускать тяжёлые игры используя дискретную видеокарту Nvidia, спустя некоторое время добился следующих результатов:
— Отключил дискретную видеокарту в целях экономии энергии, тем самым увеличив время работы от батареи, да и просто от ненужного нагрева.
— Добился аналога Nvidia Optimus на Linux.
Для запуска игр на Ubuntu нам понадобится:
— Ноутбук с 2 видеокартами (дискретной Nvidia и интегрированной Intel)
— Bumbledee — аналог Nvidia Optimus для Linux
— Сама игра
Установка
1. Перед началом установки надо настроить видеокарту, чтобы интегрированная работала, а дискретная нет:
Чтобы установить Bumblebee нужно открыть терминал и выполнить следующие команды:
sudo add-apt-repository ppa:bumblebee/stable
Добавим репозиторий Bumblebee для установки и получения обновлений. Это официальный репозиторий Bumblebee.
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-313
sudo add-apt-repository -r ppa:xorg-edgers/ppa
Репозиторий содержащий последнюю версию драйверов Nvidia(драйвера в этом репозитории ничем не отличаются от драйверов с официального сайта, кроме того, что уже сделаны в понятном для системы формате .deb для упрощения процесса установки и обновления).
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia
Собственно сама установка Bumblebee и последних драйверов Nvidia.
sudo apt-get dist-upgrade
По завершении установки надо перезагрузиться!
2. Чтобы устанавливать и запускать приложения из Windows нам понадобится Wine (его можно найти в центре приложений Ubuntu)
3. После установки Wine можно наконец то приступить к установке игры (процесс установки описывать не стану так как он интуитивно прост и понятен, всё делается так же, как и на Windows)
4. Для запуска игры в свойствах ярлыка, в разделе «команда» надо перед началом приписать optirun (чтобы работала видеокарта Nvidia, а не Intel по умолчанию).
5. Всё готово, можем играть.
Заключение
В заключении хотелось бы сказать, что не все игры у меня запускаются корректно, но думаю это поправимо.
Также для установки игр я бы порекомендовал программу PlayOnLinux, её также можно найти в центре приложений, она поможет настроить игру для работы на вашей системе.
Ребят проблема такая, моя версия ubuntu 16.4 использует интеловскую встроенную видеокарту, а не дискретную Nvidia. Вопрос: как сделать чтобы игры запускались использую дискретную видеокарту?
Оценить 16 комментариев
Homise: судя по выводу у тебя вообще нет nvidia. Ты уверен что на твоём ноутбуке она есть, а если есть включена ли она в биусе??
Владимир Муковоз: То что она у меня есть это 100% а вот то что она включена или нет. Можно это какнибуть узнать?
Homise: если она у тебя есть она выключена, вероятно в биусе выключена, я незнаю как её можно выключить ещё.
Назар Мокринский: Ооо, дружище! Это я чувак с которым ты вчера общался по поводу WI-FI)) Лазил я уже где только можно и нельзя( Все статьи и форумы облазил( Реально только я один такой криворукий(((
Homise: Тогда нужно приводить:
1) Инструкцию по которой следовали
2) На каком шаге застряли (шаги не пропускать!)
3) Какая конкретно ошибка возникла (вывод текста из терминала вместо фотографий или скриншоты если текст скопировать невозможно)
Иначе звучит как "ничего не работает", с чем, очевидно, помочь нельзя.
Назар Мокринский: Дальше всех я продвинулся по этому видео. Остановился я на этапе включения DRI_PRIME=1 glxgears У парня FPS подскочил до 2000, а у меня все так и на 60 бегает(
Назар Мокринский: Хотя в диспетчере устройств показано то что она работает!
Homise: 1) Это инструкция для AMD
2) 60 это нормально если включена вертикальная синхронизация, оно всегда будет почти ровно 60, то есть равняться частоте обновления экрана
Напишите в поиске что-то вроде ubuntu nvidia laptop и получите нужную инструкцию
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 Optimus в Linux
Запустите тест видеокарты обычной командой:
А также с помощью optirun:
Обратите внимание, что FPS вырос примерно в 20 раз.
Ещё один вариант теста работы видеокарты:
А также с помощью optirun:
Вы должны увидеть прирост производительности при использовании optirun.
Во время работы этих тестов, выполните команду:
Вы должны увидеть процессы, которые используют дискретную видеокарту.
Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:
В обоих случаях откройте вкладку:
Там вы увидите информацию об используемом графическом чипе:
Система зависает после установки Bumblebee
Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:
Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.
Вместо удаления bbswitch вы можете попробовать в опции загрузки ядра добавить строку:
Для этого создайте файл /etc/modprobe.d/options.conf:
и скопируйте в него:
Но у меня сработало только удаление bbswitch.
1. Устанавливаем драйвер
a) Если у вас система на Qt (Как правило окружение KDE или LXQt), то с помощью данной команды через терминал загрузим программу для установки драйверов:
Если у вас система на GTK то с помощью это команды:
Хотя разницы принципиальной нет
b) Затем запускаем ее с правами root
Можно так же добавить ярлык для запуска в меню приложений
Инструкция для KDE
В папке ~/.local/share/applications/ создадим файл software properties qt.desktop с таким содержанием
И файл software properties qt.sh в той же папке:
После перезагрузки ярлык появится в меню
Но это далеко не обязательно, вполне достаточно запустить из консоли для наших целей настройки гибридной графики
c) Переходим на последнюю вкладку Additional drivers и устанавливаем нужный драйвер. Я выбрал самой последней версии, который не tested и не server
d) После установки перезагружаем устройство
Установлен проприетарный драйвер NVIDIA, но видеокарта не используется
К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.
Симптомы проблемы следующие:
- драйвера для видеокарты NVidia успешно установились
- система загружается и прекрасно работает
- но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
- попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
- программы использующие CUDA (например, Hashcat) прекрасно работают
Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.
Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)
Если ваша карта там есть, то переходите к выполнению следующих команд. У вас уже должен быть установлен проприетарный драйвер NVIDIA, как это показано выше.
На Kali Linux, Debian и их производных выполните:
В ПРОЦЕССЕ ПОДГОТОВКИ
На Arch Linux, BlackArch и их производных выполните:
Заключение
Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.
Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.
Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.
2. Настраиваем видеокарту
a) Загружаем следующую программу:
b) Переходим в PRIME Profiles Здесь мы видим три пункта:
NVIDIA (Performance Mode) - работать только на дискретной графике. Сильно потребляет батарею в несложных задачах, а так же ноутбук начинает греться. Зато система работает намного быстрее, но это того не стоит. У меня после установки драйвера этот пункт включился автоматически
NVIDIA On-Demand - некоторые приложения будут использовать дискретную графику nvidia, но по-умолчанию встроенная intel. Как запустить конкретное приложение с дискретной графикой напишу дальше
NVIDIA (Power Saving Mode) - отключение дискретной графики
Выбираем второй вариант - NVIDIA On-Demand , и перезагружаем систему
Как пользоваться Bumblebee / NVIDIA Optimus в Linux
Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:
Когда optirun не используется, то карта NVIDIA должна находиться в отключённом состоянии, что должно сберегать электричество.
3. Запуск приложения с использованием дискретной графики
Это то, что сложнее всего гуглилось.
Для запуска приложения с использованием графики nvidia нужно задать для OpenGL две переменные среды:
для Vulkan только:
Делать это надо перед командой для запуска приложения. Например, нам нужно запустить из терминала приложение program с использованием дискретной графики. Нужно вызвать его так:
Соответственно, если у приложения есть ярлык (.desktop) в меню приложений, то надо изменить команду запуска в ярлыке. В KDE Plasma нужно нажать на него ПКМ, открыть свойства (или "изменить приложение. "), перейти во вкладку "приложение" и перед командой приписать данную приставку. В других средах похожего стола примерно так же
Пример: ярлык игры Wolfenstein - Blade of Agony
Можно сделать это же действие через текстовый редактор. Открываем ярлык, находим Exec= , и приписываем перед коммандой данную приставку __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia minecraft-launcher
Настройка:
Я пользуюсь проприетарным драйвером 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 завершена. Осталось перезагрузить демон командой:
Установка:
Хотя можно установить только bumblebee-nvidia , и он подтянет все зависимости автоматом. Но не будем рисковать, нам еще предстоят танцы с бубном.
Пакет установлен и готов к использованию. Казалось бы все хорошо, но вот таки не задача.
Для того, чтобы приложение использовало вычислительную мощь дискретной видеокарты потребуется выполнить всего одну команду optirun с передачей ей в качестве аргумента нужную программу.
Например: optirun Steam или optirun wine Steam.exe , в случае если софтина виндовая.
Все установлено и казалось бы готово к использованию, но я столкнулся с такой бедой при запуске optirun:
Эта ситуация вызвана тем, что нужно настроить наш bumblebee под нашу видюху.
Все основные настройки делаются путем правки файла конфига /etc/bumblebee/bumblebee.conf .
Открываем его в любом редакторе sudo gedit /etc/bumblebee/bumblebee.conf
БОНУС. Как сделать видеокарту 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 и производных нужно выполнить команду:
а в Arch Linux и производных нужно выполнить такую команду:
Но всё это мне никак не помогло: настройка 20-nvidia.conf и/или блокировка в файле blacklist-intel.conf приводили к чёрному экрану во время загрузки. А последние два совета с файлами в arch.conf и указанием модуля в mkinitcpio.conf вообще не дали никакого эффекта.
Это простая инструкция как включить гибридную графику intel-nvidia на ноутбуке. Чтобы определенные приложения запускались на дискретном чипе, а другие на встроенном. На свое удивление в интернете не нашел простую инструкцию того, как запускать определенные приложения, используя дискретную графику. Так что напишу так просто, на сколько считаю нужным
У меня система KDE Neon 5.21 - по большому счету - Ubuntu LTS с окружением рабочего стола KDE Plasma 5.21, видеочип GeForce MX150
Как узнать, какая видеокарта используется в Linux
Есть несколько команд, которые покажут, какая видео карта используется:
Эта же самая команда, но запущенная через optirun из пакета Bumblebee:
Пример вывода, в котором показано, что задействована видеокарта NVIDIA:
Подробнее о optirun и Bumblebee будет позже.
Ещё одна команда, которая выводит информацию об используемой видеокарте (и прикольный треугольник в качестве бонуса):
С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:
Как проверить, используется ли видеокарта NVIDIA
Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):
Ещё одна команда, которая показывает процессы, потребляющие ресурсы видеокарты NVIDIA, а также уровень её загруженности, температуру и другие метрики:
Читайте также: