Как запустить приложение с дискретной видеокартой linux

Обновлено: 04.07.2024

И в один прекрасный день я решил попробовать на своей шкуре, что же представляют, так называемые, «юзерфрендли» дистрибутивы и остановился на одном из самых популярных — Linux Mint. Он мне показался наиболее подходящим именно для моих задач, и сколько я не пробовал другие варианты, все время возвращался к первоначальному выбору. Все-таки, стереотип как должна выглядеть ОС срабатывает, и с этим сложно бороться. А Mint уж очень похож на то, к чему я привык за последние 25 лет. Скорость работы системы меня приятно удивила. Ноутбук 2012 года выпуска буквально полетел как самолет. И выбор был сделан. Вскоре я пришел к выводу, что Windows мне не нужен ни на работе, ни на стационарном компьютере дома. Практически сразу же я определился с необходимыми приложениями (оказалось, что почти все есть в Менеджере программ) и довольно быстро нашел способы установки необходимых Windows-программ.

Но иногда хочется и поиграть. Как оказалось, все не так плохо, как ожидалось. Особенно, если не гнаться за свежими играми. Кроме этого, выяснилось, что отдельные игроделы практически одновременно выпускают сразу версии под все «операционки». Здесь тоже нет проблем с запуском. Не будем сбрасывать со счетов и многочисленных энтузиастов Linux, которые выкладывают в сети уже готовые скрипты для запуска той или иной игры.

В данной статье попытаемся рассмотреть способы запуска Windows-игр (и просто игр) глазами неподготовленного пользователя, то есть, обычного «некомпьютерного» жителя планеты Земля.

Технологии и приложения для запуска

Не хочу перегружать читателей излишними теоретическими выкладками, но без некоторого их количества никак не обойтись для объяснения самого процесса запуска Windows-игр (да и просто приложений) в GNU /Linux.

А начнем мы с Wine. Первоначально название расшифровывалось как аббревиатура от Wine Is Not an Emulator (Wine не эмулятор). Это слой совместимости (скажем так, набор библиотек), позволяющий запускать приложения Windows в нескольких POSIX-совместимых операционных системах, таких как Linux, macOS и BSD. Вместо имитации внутренней логики Windows, такой как виртуальная машина или эмулятор, Wine транслирует вызовы Windows API в вызовы POSIX на лету, устраняя потери производительности и памяти, связанные с другими методами, и позволяя вам полностью интегрировать приложения Windows в ваш рабочий стол.

Как и многое ПО в Linux, Wine предоставляется без графической оболочки и довольно сложно для понимания для рядового пользователя. Но, как я уже сказал выше, для популяризации системы и привлечения менее опытных, чем системные администраторы пользователей, сообществом предпринимаются определенные усилия в части создания различных графических оболочек для работы с Wine. Рассмотрим некоторые из них.

PlayOnLinux (POL). Название можно перевести как «играй на Линукс». Это front-end приложение для Wine, запускающее скрипты с уже готовыми настройками для старта Windows приложений. При этом для каждого приложения создается свой виртуальный диск, устанавливается конкретная версия Wine, обеспечивающая стабильность работы именно этой программы. При этом совершенно неважно, какая версия Wine установлена в системе.

Окно выбора устанавливаемого приложения

Требуемые от пользователя действия для развертывания минимальны. В большинстве случаев требуется лишь следовать указаниям инсталлятора.

Winetricks. Крайне полезная утилита для настройки префикса Wine и для облегчения установки, необходимых той или иной программе, компонентов или DLL-библиотек.

Внешний вид программы. Минималистичность по сравнению с PlayOnLinux очевидна

На мой взгляд, это более сложная для новичка программа, требующая определенных базовых знаний, как это работает. Но зато она имеет достаточно много поклонников, что способствует, несомненно ее популяризации. Вообще — в случае с Unix-программами — чем больше пользовательское комьюнити (чем больше людей пользуется программой и участвует в ее развитии), тем проще ее установить, настроить, получить обратную связь в случае каких-то затруднений, что, несомненно важно, особенно для тех, кто только делает робкие шаги в стране Unix.

CrossOver. Программа, позволяющая запускать многие приложения, написанные для Microsoft Windows в операционной системе Linux. CrossOver создаётся компанией CodeWeavers на основе исходных кодов свободного аналога — Wine. При этом сам он является коммерческим продуктом. Разработчики добавляют собственные «заплатки», а также графические утилиты конфигурации. Кроме того компания регулярно нанимает нескольких разработчиков Wine для развития своего коммерческого продукта, а затем внедряет многие свои наработки в свободный проект, чем вносит большой вклад в его развитие.

CrossOver. Внешний вид программы

Приложение очень лояльно к неподготовленному пользователю. Однако, лояльность не бесплатна. Разработчики хотят от 30 до 50 долларов за годовую подписку. Если учесть, что за сами игры тоже нужно платить, а лицензия Windows стоит от 110 долларов, то возникает мысль о том, что надо очень сильно любить данное специальное ПО, чтобы преодолевать трудности и делать это еще и небесплатно для себя.

А это, как минимум, архитектура Kepler (GeForce GT 630, GeForce MX110 и выше) и драйвер NVIDIA 415.22 или более старших версий. Это обстоятельство вызывает вселенскую грусть у владельцев более старого «железа». Например, все эти прелести недоступны для моей GeForce GT 555M, установленной в ноутбуке. И еще одна видеокарта осталась за бортом прогресса — GeForce GTX 550 Ti. Счастье улыбнулось только GeForce GTX 660 на которой и запускаются игры с поддержкой Vulkan. И это непривычная ситуация для пользователей Linux, который славился лояльностью к старому оборудованию.

Стоит упомянуть и проект DXVK. Он может применяться для запуска 3D-приложений и игр в Linux при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенной в Wine реализации Direct3D 11, работающей поверх OpenGL . В некоторых играх производительность связки Wine+DXVK отличается от запуска в Windows всего на 10-20%, в то время как при использовании реализации Direct3D 11 на базе OpenGL производительность снижается более сильно. Для использования DXVK снова требуется наличие драйверов с поддержкой API Vulkan. И снова, увы — многим придется просто тихо завидовать более свежим решениям.

Самое обидное в том, что игры, которые невозможно запустить в Linux на древнем оборудовании, спокойно запускаются и работают в той самой, всеми ругаемой, Windows 10.

Но венцом эволюции я бы назвал инструмент для запуска от компании Valve — Proton. Непосредственно Proton предназначен для интеграции в клиент Steam как «Steam Play», что обеспечивает бесперебойную работу Windows игр и программного обеспечения в Steam, но его можно использовать и как отдельное приложение. Он обеспечивает реализации DirectX 11 (на базе DXVK) и DirectX 12 (на базе vk3d), работающие через трансляцию вызовов DirectX в API Vulkan, что позволяет снизить негативное влияние на производительность и улучшить совместимость с играми.

Это мой личный фаворит, и я постоянно его использую для запуска своих игр. В следующей части статьи мы и рассмотрим, чего же можно достичь, используя все достижения инженерной мысли и соответствующие программные решения.

Проверяем на себе

Не мудрствуя лукаво, для неподготовленного пользователя я бы рекомендовал использовать клиент Steam от компании Valve. В этом есть определенный резон, поскольку разработчики этого приложения сделали максимально комфортным жизнь начинающего линуксоида-геймера. Кстати, количество игр с поддержкой Линукс достигло впечатляющих 7,5 тысяч и постоянно увеличивается. Возможно, количество скоро перерастет в качество, и мы увидим больше проектов рейтинга ААА, доступных для запуска без различных дополнительных действий.

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

Удобное и понятное меню для добавления программы

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

Список игр в Steam

Armada: Modern Tanks, Tank Force, The Pirate имеют нативную поддержку Linux «из коробки» да и графическая составляющая там не особо продвинута, что позволяет даже не запускать дискретную видеокарту на своем ноутбуке для комфортной игры в любой ОС.

War Thunder, Everspace сразу стартуют без танцев с бубном (есть поддержка Linux), но комфортной игру на GeForce GT 555M не назовешь из-за откровенной слабости видеокарты. Но совершенно так же игры ведут себя и в Windows. Не стану называть это недостатком, так как игры запустились и работали. То есть, игры заработают на любой видеокарте и проблемой будет только их производительность, а не возможность запуска.

Dirt Rally, Mad Max портированы командой Valve для Linux. Запускаются на любом железе, но играть на GeForce GT 555M опять невозможно. В Windows вполне сносно на минимальных настройках, ведь игры довольно пожилые и не очень требовательные к железу. А GeForce GTX 660 щелкает их как семечки, вне зависимости от ОС. На лицо проблемы потери производительности при использовании слоев совместимости Wine на не очень мощных ПК.

Lara Croft, Fallout 4 не имеют портов под Linux. Я их запускал при помощи текущей версии Proton, пробовал играть с различными версиями. Заработали игры только на GeForce GTX 660 с поддержкой новых технологий и без каких либо дополнительных телодвижений. На старом железе данные игры просто не стартуют.

World of Tanks BLITZ сперва закапризничал и отказался запускаться, чем меня крайне удивил, так как работает игра, в том числе, и на Android, а это, скажем так, дружественная система для Linux. Пришлось методично подбирать версию Proton:

Настройки, на которых удалось запустить WOT BLITZ

Заработала игра только на GeForce GTX 660. На старом железе просто стартует или выдает ошибки, жалуясь на отсутствие библиотек и тут же падает. Это обидно вдвойне, так как разработчики игры явно не чужие остальным жителям СНГ с штаб-квартирой в Минске. То есть, они прекрасно представляют себе финансовые возможности населения. Да и покупать OS Windows ради пары игрушек такое себе удовольствие, знаете ли. Проще найти альтернативу, коих развелось превеликое множество, и выбрать наиболее интересный вариант.

Совсем другое впечатление оставляют ребята из Atom Team, явно не страдающие звездной болезнью и кровно заинтересованные в продвижения своих игр. Лично я большой поклонник их творчества (серия Atom RPG создана явно с оглядкой на серию Fallout, а именно на 1 и 2 её часть) и мне вдвойне приятно, что разработчики предусмотрели возможность запуска на всех системах независимо от аппаратного обеспечения. Браво!

Перед запуском есть возможность выбора варианта обработки графики: Vulkan дает большую производительность, а OpenGL лучшую совместимость с оборудованием

Вместо заключения

Эксперименты по запуску игр можно продолжать бесконечно с переменным успехом, но определенные выводы можно сделать уже сейчас.

Времена, когда Linux был уделом бородатых юношей в драных свитерах ушли в прошлое. Не смотря на то, что эта ОС, все-таки, пока не дотягивает до удобства ванильных операционных систем, покупка компьютера без операционной системы Windows или ноутбука с какой-нибудь предустановленной Ubuntu или Deepin обычным человеком уже не кажется странным. Тем более, не кажется странным установка не пиратской копии Windows, а какого-нибудь дистрибутива GNU /Linux. Помимо финансовой составляющей, менее требовательная и более безопасная ОС может быть прекрасным вариантом как для домашнего, так и для рабочего компьютера.

А наличие программного обеспечения для запуска различных игр, в будущем, сможет увеличить популярность ОС. И когда-нибудь бесконечная петля «Linux непопулярен, потому что нет прикладного ПО и игр, а их нет потому, что Linux непопулярен», в конце-концов, разорвется.

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


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 завершена. Осталось перезагрузить демон командой:

Кайфуем

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

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

Это простая инструкция как включить гибридную графику intel-nvidia на ноутбуке. Чтобы определенные приложения запускались на дискретном чипе, а другие на встроенном. На свое удивление в интернете не нашел простую инструкцию того, как запускать определенные приложения, используя дискретную графику. Так что напишу так просто, на сколько считаю нужным

У меня система KDE Neon 5.21 - по большому счету - Ubuntu LTS с окружением рабочего стола KDE Plasma 5.21, видеочип GeForce MX150

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) После установки перезагружаем устройство

2. Настраиваем видеокарту

a) Загружаем следующую программу:

b) Переходим в PRIME Profiles Здесь мы видим три пункта:

NVIDIA (Performance Mode) - работать только на дискретной графике. Сильно потребляет батарею в несложных задачах, а так же ноутбук начинает греться. Зато система работает намного быстрее, но это того не стоит. У меня после установки драйвера этот пункт включился автоматически

NVIDIA On-Demand - некоторые приложения будут использовать дискретную графику nvidia, но по-умолчанию встроенная intel. Как запустить конкретное приложение с дискретной графикой напишу дальше

NVIDIA (Power Saving Mode) - отключение дискретной графики

Выбираем второй вариант - NVIDIA On-Demand , и перезагружаем систему


3. Запуск приложения с использованием дискретной графики

Это то, что сложнее всего гуглилось.

Для запуска приложения с использованием графики nvidia нужно задать для OpenGL две переменные среды:

для Vulkan только:

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

Соответственно, если у приложения есть ярлык (.desktop) в меню приложений, то надо изменить команду запуска в ярлыке. В KDE Plasma нужно нажать на него ПКМ, открыть свойства (или "изменить приложение. "), перейти во вкладку "приложение" и перед командой приписать данную приставку. В других средах похожего стола примерно так же

Пример: ярлык игры Wolfenstein - Blade of Agony

Пример: ярлык игры 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

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia minecraft-launcher

Заключение

Данный метод, как я понял, точно работают для программ, использующих библиотеки OpenGL и Vulkan. У меня, к сожалению, не получилось запустить так Windows приложение через Wine, которое использует DirectX, но это уже совсем другая история. (OpenGL приложения под Wine работают)


Плюсую PRIME, отлично работает. Про вайн не совсем вопрос ясен.


Я правильно понял, что



У тебя интегрированная видеокарта Intel или тоже AMD?


По умолчанию дискретная карта отключена. Чтобы ее включить для определенного приложения нужно запускать примерно так:

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

Medar ★★★★★ ( 03.08.14 17:24:13 )
Последнее исправление: Medar 03.08.14 17:24:45 (всего исправлений: 1)


Тогда: xrandr --setprovideroffloadsink radeon Intel настраивает механизм PRIME: указывает, что на видеокарту с идентификатором radeon теоретически можно оффлоадить рендеринг с видеокарты Intel. Это нужно выполнить один раз при запуске X-сервера (при графическом входе в систему).

Заставить эту команду автоматически выполняться при старте иксов можно, например, так.

    создать файл-скрипт /etc/X11/xinit/xinitrc.d/90-offload со следующим содержимым:

(Примечания: всё от рута, и имя 90-offload может быть любым.)

После этого, чтобы запустить любую программу на дискретной видеокарте, нужно передать ей переменную окружения DRI_PRIME=1.
Например, ввести DRI_PRIME=1 <нужная программа> в терминале.

intelfx ★★★★★ ( 03.08.14 17:27:20 )
Последнее исправление: intelfx 03.08.14 17:27:43 (всего исправлений: 2)


Арч у меня 64-х битный, как поставить 32-х битную версию wine и winetricks на 64-х битный арч

Удаляешь дефолтный префикс или делаешь отдельный:
export WINEPREFIX=/home/blabla/wine32 например
После чего:
WINEARCH=win32 winecfg

RevenantX ★★★★ ( 03.08.14 17:36:55 )
Последнее исправление: RevenantX 03.08.14 17:37:10 (всего исправлений: 1)


А как проверить какая видеокарта в данный момент активна?

А как проверить какая видеокарта в данный момент активна?

И да я не знаю особенности рача, но на убунте вообще ничего не надо настраивать. Главное убедись что xorg.conf у тебя нет.


При такой настройке Intel активна всегда, а дискретка — как уже сказали, пока не завершится последнее приложение, запущенное с DRI_PRIME=1 .

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