суббота, 21 января 2012 г.

NVIDIA Optimus в Linux

В современных ноутбуках с процессорами i3/i5/i7 для экономии заряда аккумулятора используется технология NVIDIA Optimus с дискретными видеокартами NVidia. Технология эта, конечно, замечательная, но реализована она только в операционной системе Windows 7. Те же, кто устанавливал на такие ноутбуки линукс, получали две работающие видеокарты и ни о какой экономии энергии аккумулятора мечтать уже не приходилось. Мало того, еще и температурные датчики давали куда более высокие показатели, нежели при работе Windows 7 на таком компьютере. Попытки владельцев ноутбуков с дискретными видеокартами с технологией NVIDIA Optimus отключить неиспользуемую видеокарту зачастую давали только один результат - черный экран.
Неофициально технология NVIDIA Optimus поддерживается и в Linux благодаря проекту Bumblebee. И вот разработчики порадовали нас новой реализацией своего проекта, а пользователей Ubuntu (Linux Mint) еще и появлением нового репозитория PPA, из которого установка всех необходимых пакетов стала также проста, как установка любого программного обеспечения из репозитория. Не буду описывать, что из себя представляет проект Bumblebee, лучше сразу перейду к практической части, то есть к установке.

Если вы до этого эксперементировали с установкой драйверов на NVidia, то необходимо удалить их, от них всё равно не было никакого прока, а для установки bumblebee они будут мешать, вызывая конфликт:

sudo apt-get purge nvidia-current
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates


Если же вы никаких экспериментов в драйверами NVidia не производили и в этом плане у вас система в "девственном" состоянии, то вышеуказанные действия производиь не надо и просто переходим к добавлению нового репозитория:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update


Разработчики еще требуют наличия в системе некоторых пакетов, но в Linux Mint они имеются по умолчанию и, думаю, что в Ubuntu тоже (нет возможности проверить). Чтобы убелиться в их наличии, просто выполните команду (эта же команда выполнит установку, если эти пакеты в системе отсутствуют):

sudo apt-get install virtualgl-libs:i386 libgl1-mesa-glx:i386 libc6:i386


И после этого устанавливаем bumblebee и другие необходимые пакеты, установка будет не сильно быстрой, так как будет добавляться новые модули в ядро системы:

sudo apt-get install acpi-call-tools acpi-call-source bbswitch-dkms bumblebee virtualgl


Собственно это и есть вся установка, действительно, всё стало очень просто, пользователям же других дистрибутивов линукса необходимо перейти на страницу с инструкцией  https://github.com/Bumblebee-Project/Bumblebee/wiki/Install-and-usage и собрать bumblebee из исходников.

После перезагрузки системы добавьте свой логин в группу пользователей, которые могут использовать Bumblebee, командой:

sudo usermod -a -G bumblebee USER

где вместо USER ваш логин.

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

optirun ИМЯ_ПРОГРАММЫ

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

optirun glxspheres



Помощь по bumblebee можно получить командой bumblebee --help или man bumblebee, помощь по работе клиента: optirun --help или man optirun


И еще несколько слов о новом переключателе bbswitch. Если у вас всё правильно установлено и демон запускается при старте системы, то выполнение команды: sudo cat /proc/acpi/bbswitch сообщит вам, что по умолчанию дискретная видеокарта отключена. Включение и отключение вручную дискретной видеокарты с помощтю bbswitch выполняется соовествующими командами (см. скриншот).




P.S. У меня при отключенной дискретной видеокарте системные датчики температуры показывают температуру на 5-7 градусов ниже, нежели они показывали ранее без bumblebee, следовательно, нет шума от кулера, судорожно охлаждающего систему. Так что, если у вас ноутбук с технологией NVIDIA Optimus, то имеет смысл не только из-за экономии заряда аккумулятора использовать bumblebee, но и чтобы не заставлять своё железо работать на все 100%, когда, например, вам надо просто в нете посидеть или фильм посмотреть :)