Рейтинг: 5 / 5

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

Не для кого не секрет, что Linux активно продвигается на роль популярной ОС и все больше любителей этой замечательной системы могут позволить себе удовольствие поиграть в современные компьютерные игры. В наши дни уже достаточно хорошо развит Wine для запуска игр семейства Windows, а также для Linux выпущен Steam. Игр в Стиме еще не много под Linux, но Valve активно пропагандируют Linux, как систему отлично подходящую для сего дела. Но в этом коротеньком мануале я хочу рассказать вам вовсе не об этом. На момент написания статьи (лето 2016) владельцам ноутбуков с двумя видеокартами (встроенной и дискретной) весьма неудобно переключаться между ними. Для тех кто не знает, встроенная создана для экономии потребления энергии, а дискретная - более мощная созданная для графических приложений, в частности для игр. Хотя производители видеокарт уже активно выпускают драйвера для своих продуктов под Linux, однако одно неудобство все же осталось - это невозможность автоматического или хотя бы быстрого переключения между встроенной и дискретной видеокартами. У меня стоит NVIDIA GeForce 840M и для переключения нужно открыть nvidia-settings, далее выбрать нужную видеокарту, после чего перелогиниться (требуется перезапуск X.Org). Бывает и так, что и вовсе приходится перезагружаться. Конечно это все не смертельно, но что делать если хочется зайти на пол часика в любимую игру, после чего снова продолжить работать. Лично я не люблю часто перезагружаться. Для этих целей была создана утилита bumblebee, которая позволяет запускать приложения с иcпользованием в нем дискретной видеокарты. В состав приложения входит следующий набор компонентов:

 

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.

 

Установка:

sudo apt-get install bumblebee-nvidia primus virtualgl

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

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

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

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

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

[ 812.244712] [ERROR]Cannot access secondary GPU - error: Could not load GPU driver
[ 812.244740] [ERROR]Aborting because fallback start is disabled.


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

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

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


Настройка:

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

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

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

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

dpkg -l | grep "NVIDIA binary driver"

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

lspci -k| grep -EA2 'VGA|3D'

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

04:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 840M] (rev a2)
Subsystem: ASUSTeK Computer Inc. GM108M [GeForce 840M]
Kernel modules: nvidiafb, nouveau, nvidia_361

Способов масса. Как видно из вывода что версия драйвера nvidia-361. Осталось указать, что ядро использует именно этот драйвер и подправить пути к библиотекам драйвера.

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

sudo service bumblebeed restart

 

Кайфуем

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

optirun имя_программы

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

optirun nvidia-settings -c :8

 

Кайфуйте :)

 

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

У вас недостаточно прав для того чтобы тут гадить.

Комментарии   

Eulalia
# Eulalia 16.05.2017 01:57
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.