Как настроить драйверы видеокарты Intel HD Graphics в Ubuntu 14.04.
А началось все с того, что меня не устраивала работа драйвера видеокарты Intel linux Graphics в моей системе Ubuntu 14.04. Не то чтобы он совсем не работал - он работал. Просто я был уверен что он работает не полностью. Например, при просмотре Full HD видео процессор был загружен на 70-80 %. Или игрушка Warzone 2100 безбожно тормозила (специально поставил для проверки ибо игры при отрисовке объектов обращаются к видеокарте напрямую в обход xserver). И много других признаков того, что драйвер нормально не работает. В общем не нравился и все тут. Скажете почему это все не работает "из коробки"? Да потому, что Ubuntu устанавливается и запускается на компьютерах с различной аппаратной конфигурацией и настраивать ее на использование всех возможностей каких либо отдельных видеокарт не имеет смысла - она просто не заработает в другой (более слабой) аппаратной конфигурации. Для установки и запуска системы нужна минимальная конфигурация которая будет работать на большинстве железа. И если вы хотите получить производительность Вашей конкретной видеокарты, то систему нужно настроить именно под эту видеокарту. В общем, даже после установки Intel Linux Graphics Installer с последующей установкой новых драйверов, видеокарта выдавала 530 fps и процессор был постоянно загружен. Как обычно, началось копание в интернетах на предмет необходимой информации о настройках. Собрав кусками информацию из различных источников я приступил к настройкам. Огромное спасибо хочу сказать комрадам Gentoo-шникам (www.gentoo.ru) за прекрасную документацию. Итак перейдем к настройкам. У меня были установлены пакеты
xserver-xorg-video-intel, xserver-xorg-video-intel-lts-trusty, intel-linux-graphics-installer, mesa-utils.
Все эти пакеты есть в стандартном репозитории Ubuntu. Все кроме intel-linux-graphics-installer. Этот инсталлятор устанавливает наиболее новые драйвера для ядра выбранной системы. Например, выпущена новая версия ubuntu с новым ядром, а пакеты с новым драйвером, оптимизированным под это ядро, еще не собраны. В этом случае первыми они собираются на 01.org. Напомню как подключить репозиторий с этим пакетом. Для этого выполним в терминале echo "deb https://download.01.org/gfx/ubuntu/14.04/main trusty main #Intel Graphics drivers" | sudo tee /etc/apt/sources.list.d/intellinuxgraphics.list. Эта команда добавит репозиторий intelgraphics. Далее добавим ключи GPG для этого репозитория. Выполним команды:
wget --no-check-sertificate https://download.01.org/gfx/RPM-GPG-KEY-ilg -o - | sudo apt-key add - wget --no-check-sertificate https://download.01.org/gfx/RPM-GPG-KEY-ilg-2 -o - | sudo apt-key add -. После этого обновим список репозиториев командой apt-get update и установим пакет командой apt-get install intel-linux-graphics-installer.
И, соответственно, запустим эту программу и установим драйвера Intel. Рекомендую вам запускать ее из консоли, выполнив команду
sudo intel-linux-graphics-installer.
Далее вы увидите графический интерфейс программы позволяющий установить драйверы.
Если у Вас по какой-то причине не работает intel-linux-graphics-installer, Вы можете установить драйверы напрямую выполнив команды
apt-get install i915-3.16-3.13- dkms и apt-get install i965-va-driver.
У меня они уже установлены.
С момента написания заметки прошло довольно много времени и сейчас текущей версией ubuntu 14.04 является 14.04.4 lts. Самое новое ядро, которое есть в репозитории ubuntu 14.04.4 lts, это Linux-image-extra-4.2.0-34-generic. Вот в этом случае эти драйвера от Intel Вы не прикрутите. Можно попробовать обмануть intel-linux-graphics-installer 1.4.0 сменив название системы на Ubuntu 15.10. Но это даст только нестабильность, поскольку версии библиотек в репозитории intel Willy новее, чем версии библиотек в репозитории ubuntu 14.04. Например, kde-window-manager не сможет работать с новыми библиотеками. Соответственно, не будут прорисовываться полностью окна, у меня не прорисовывалась верхняя часть со значками сворачивания и закрытия, и не будет работать переключение между окнами. Учитывая все это, я поставил из стандартного репозитория ubuntu 14.04 драйвер xserver-xorg-video-intel-lts-wily. На всех тестах результаты он дает те же. И использует уже Mesa 11.0.2. Для того, чтобы обновить драйверы под новое ядро нужно выполнить команду sudo apt-get install --install-recommends linux-generic-lts-wily xserver-xorg-core-lts-wily xserver-xorg-lts-wily xserver-xorg-video-all-lts-wily xserver-xorg-input-all-lts-wily xserver-xorg-video-intel-lts-wily libwayland-egl1-mesa-lts-wily. Она установит ядро (если оно еще не установлено), стек x-сервера, включая и драйвера intel. И рекомендую после установки этих пакетов выполнить команду aptitude -f install. Данная команда даст менеджеру пакетов aptitude задание проверить зависимости пакетов. Если какие-то зависимости не удовлетворены менеджер предложит установить недостающие пакеты, удалить неактуальные и конфликтующие. Правда она настойчиво предложит установить и старые ядра. Потом, после перезагрузки, можно, например, с помощью Ubuntu Tweak, удалить старые ядра.
А вот в Ubuntu 16.04 LTS c ядром 4.4 нужно уже пользоваться пакетом драйверов xserver-xorg-video-intel. Он вполне сносно работает. Подтормаживает правда на тяжелом видео, выведенном на внешний большой монитор. Собирать весь стек от Intel Linux довольно сложно, поэтому придется подождать с месяц пока выпустят installer. Хотя и на этом драйвере 3D тесты тоже проходят нормально. В целом, на Plasma5 отрисовка окон неплохо работает. Можете убедиться посмотрев этот клип.
Проверить какой драйвер используется в системе можно выполнив команду lspci -k. Вот ее вывод:
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) Subsystem: Acer Incorporated [ALI] Device 0742 Kernel driver in use: i915
Это значит что у меня загружен и работает драйвер i915. Посмотреть информацию о данном модуле ядра можно выполнив команду modinfo i915 :
root@darkeye:/home/backup# modinfo i915 filename: /lib/modules/4.2.0-34-generic/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Intel Corporation author: Tungsten Graphics, Inc. firmware: i915/skl_dmc_ver1.bin srcversion: 5C38138799E6BC8691FB133 ....
Если поискать этот драйвер при помощи команды aptitude search i915 то найдется пакет i915-3.15-3.13-dkms. Если набрать в консоли
aptitude show i915-3.15-3.13-dkms
мы увидим следующее:
root@darkeye:~# aptitude show i915-3.15-3.13-dkms Пакет: i915-3.15-3.13-dkms Новый: да Состояние: установлен Автоматически установлен: нет Версия: 0.01 Приоритет: необязательный Раздел: kernel Сопровождающий: Jack Leigh Архитектура: all Размер в распакованном виде: 3.764 k Зависимости: debhelper, dkms, linux-headers Описание: Intel i915 video drivers from the mainline kernel, backported from the 3.15 series to the 3.12 series. This package contains the source to be built with dkms.
Это доказывает что установлен и работает драйвер Intel Graphics. Посмотрите в сети интернет кто такой Jack Leigh и какое отношение он имеет к сайту download.01.org? Убедились? Замечательно. Для полной настройки драйвера, включения нужных функций и загрузки в ядро необходимых модулей нужно добавить некоторые строки в файл xorg.conf. Сразу оговорюсь в ubuntu 14.04 его нет (там x-server настроен без xorg.conf однако если его создать, настройки при запуске сервера читаются из него) поэтому нужно генерировать этот файл. Переходим в режим консоли (ctrl+shift+F1). В консоли переходим в режим суперюзера (sudo -s). Останавливаем X-server выполнив в консоли service kdm stop (у кого Gnome service gdm stop или Unity - service lightdm stop). Далее выполняем команду Xorg -configure. Эта команда создаст в нашей домашней директории файл ~/xorg.conf.new. Его необходимо перенести в нужное место и назвать правильно. Выполним команду mv xorg.conf.new /usr/share/X11/xorg.conf.d/xorg.conf. В комментариях парень верно написал о невозможности в новых версиях Ubuntu (15.04, 15.10) генерировать таким методом xorg.conf.new. Команда Xorg -configure выдает ошибки и не создает файл. Я проверил на Ubuntu 14.04.4 LTS - это действительно так. Поэтому, я хочу предложить другой метод. Загрузитесь в recovery mode (при включении компьютера нажимаете клавишу esc, выбираете "Дополнительные параметры загрузки"). Там выбираете графу c последней версией Вашего ядра и с надписью (recovery mode). Загрузится ядро в recovery mode и появится список. В этом списке выбираете графу root. Внизу появится приглашение ввести команду #. Вводите сначала команду mount -o remount, rw /. Эта команда перемонтирует корневую файловую систему в режим чтения/записи (до этого корневая файловая система была смонтирована в режиме чтения). Потом вводите команду Xorg -configure. При выполнении программа сообщит о некоторых незначительных ошибках. Тем не менее, файл xorg.conf.new будет создан и будет находиться в директории /root. После этого можно перенести этот в нужное место и назвать правильно командой mv xorg.conf.new /usr/share/X11/xorg.conf.d/xorg.conf.
Открываем этот файл в любом доступном редакторе ( я пользуюсь nano) и правим необходимые секции. Сейчас я приведу содержимое, которое, помимо того что уже есть, должно быть в этом файле. Если в какой-то секции есть, например, одна строка, то нужно добавить остальные. Единственный момент - я правил первую секцию "Device" и остальные две генерированные секции "Device" оставил без изменений, так как у меня на ноутбуке одна видеокарта. Те секции, которых не было, я просто добавил в файл.
Какие секции я исправлял и добавлял:
Section "Module" Load "extmod" Load "record" Load "glx" Load "dbe" Load "dri" Load "dri2" EndSection
Эта секция загружает необходимые модули
Section "ServerFlags" Option "AIGLX" "true" EndSection
В секции ServerFlags включаются и отключаются некоторые функции Х-сервера, в данном случае AIGLX. Accelerated Indirect GLX ("AIGLX") открытый проект разрабатываемый сообществами Red Hat и Fedora Linux для поддержки прямого GLX рендеринга совместимого с X.Org и DRI драйверами. Это позволяет удалённому X клиенту получать полностью аппаратно ускоренный рендеринг через протокол GLX; эта разработка необходима для OpenGL менеджеров прозрачности (таких как Compiz и Beryl) для работы с аппаратным ускорением.
Section "Device" Option "AccelMethod" "sna" Option "TearFree" "true" // выбирайте сами добавлять эту опцию или нет. У меня продольных разрывов и дерганья нет и без нее. А вот парень в комментариях написал что у него были полосы и это их убрало. Option "Tiling" "false" // можно включить, у меня нормально работает с включенным. Option "DRI" "true" Identifier "Card0" Driver "intel" BusID "PCI:0:2:0" EndSection
В этой секции задаются параметры видеокарты. Sna - режим 2D ускорения для драйверов intel, Tiling - определяет, будет ли буферы памяти выделятmся в плиточный режиме. В большинстве случаев (особенно для комплексной визуализации), плиточный режим значительно повышает производительность. DRI - direct rendering infrastructure. Если у Вас в сгенерированном xorg.conf параметр BusID другой то оставьте его.
Section "Extensions" Option "Composite" "Enable" Option "RENDER" "Enable" EndSection
В этой секции задаются дополнительные опции такие как расширение композитного канала и разрешение ускорения 2D графики.
Section "DRI" Mode 0666 EndSection
Дополнительно, для подстраховки, я создал файл /etc/modprobe.d/i915-kms.conf со следующим содержимым: option i915 modeset=1. Я это сделал для стопроцентной уверенности в правильной загрузке графического модуля ядра.
Можно сказать зачем загружать модули которые и так по идее загружены? А для того чтобы перестраховаться. После правки конфигурационного файла перегружаем компьютер.
Сразу хочу сказать. Если графический сервер не загрузился, не впадайте в панику и не кричите что все сломалось, что, мол, испортил работающую систему экспериментами. Еще раз спокойно проверьте конфигурационный файл на предмет ошибок, посмотрите логи (/var/log/Xorg.0.log). В любом случае, переименовав xorg.conf командой mv /usr/share/X11/xorg.conf.d/xorg.conf /usr/share/X11/xorg.conf.d/xorg.conf.bak, вы сможете вернуть настройки Xserver к первоначальному состоянию и потом, при желании, исправить конфигурационный файл в графическом режиме.
Так как я правильно написал все секции конфигурационного файла, после перезагрузки компьютера, у меня все загрузилось нормально. Открываем консоль и проверяем работоспособность 3D-графики:
glxinfo | grep direct direct rendering: Yes glxinfo | grep render OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile grep Composite /var/log/Xorg.0.log (II) Initializing built-in extension COMPOSITE
Выполняем в терминале команду glxgears и видим 56-60 fps. Да и производительность даже на первый взгляд слабее стала. Для решения проблем со скоростью графики (сейчас драйвер рендерит по умолчанию не на полную мощность), необходимо настроить DRI самостоятельно. Direct Rendering Infrastructure (DRI) — это интерфейс и реализация в виде свободного ПО, используемая в системе X Window System, позволяющая пользовательским приложениям безопасно получать доступ к видеоаппаратуре без необходимости использования X server (замедляющего этот процесс). Основное назначение DRI — обеспечение аппаратного ускорения Mesa, одной из реализаций OpenGL. Для настройки DRI, если, конечно еще не создан, необходимо создать файл ~/.drirc в домашней директории следующего содержания: Файл: ~/.drirc
<driconf> <device screen="0" driver="i915"> <application name="Default"> <option name="force_s3tc_enable" value="false" /> <option name="no_rast" value="false" /> <option name="always_flush_cache" value="false" /> <option name="always_flush_batch" value="false" /> <option name="bo_reuse" value="1" /> <option name="vblank_mode" value="0" /> </application> </device> </driconf>
Полный перечень конфигурационных опций драйвера DRI можно получить выполнив команду: #xdriinfo options i915. Эти же операции можно выполнить, произведя настройку в графическом режиме. Для этого просто установите программу driconf (apt-get install driconf) и запустите ее из меню. Не забудьте предварительно создать файл командой touch ~/.drirc. Кстати можно попробовать переключить опцию <option name="force_s3tc_enable" value="true" />. Вы можете изменить эту опцию в файле настроек используя текстовый редактор. Или Вы можете сделать это в соответствующей закладке только что установленной программы 3D Acceleration (пакет driconf). Кстати она делает более полный файл настроек. И обратите внимание на вкладку "неизвестные опции". Если она есть, то опции, находящиеся в этой вкладке, необходимо удалить из файла .drirc. Они будут мешать работе драйвера. Это справедливо для случая когда у вас одна встроенная видеокарта intel и нет дискретной видеокарты, использующей эти опции. Все эти пояснения Вы можете прочесть в помощи к программе.
Перезагрузите компьютер. После этих нехитрых манипуляций в логах (/var/log/Xorg.0.log) появятся заветные строчки, говорящие о том что драйвера нормально загружены и работают.
[ 33.093] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets: i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, 915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, GM45, 4 Series, G45/G43, Q45/Q43, G41, B43 [ 33.093] (II) intel: Driver for Intel(R) HD Graphics: 2000-5000 [ 33.093] (II) intel: Driver for Intel(R) Iris(TM) Graphics: 5100 [ 33.093] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics: 5200 [ 33.099] (--) intel(0): Integrated Graphics Chipset: Intel(R) HD Graphics 2500 [ 33.099] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3, sse4.1, sse4.2 [ 33.102] (II) intel(0): [DRI2] DRI driver: i965 [ 33.102] (II) intel(0): [DRI2] VDPAU driver: i965 [ 33.102] (II) intel(0): direct rendering: DRI2 Enabled и т. д.
Проверяем снова с помощью glxgears. Снова 50-60 fps. А это происходит из-за того, что программа проводит не совсем корректный тест и, в итоге, считает частоту обновления экрана. Запустите эту команду вот так: $ vblank_mode=0 glxgears. При таком варианте запуска у меня тест показал 4200 fps. Но в самом деле этот тест не информативен. Обычно его используют только для того, чтобы убедиться что OpenGl работает. Для более полной проверки, я рекомендую установить, например, glmark2 (apt-get install glmark2) и запустить ее в терминале.