× К оглавлению На главную Об авторе

   Дата и время публикации   :

Теория и практика


1. Теория

В статье, посвященной составу программному обеспечению графического обеспечения Wayland уже говорилось о том, что включение/выключения функции KMS подсистемы DRM осуществляется на уровне ядра. Поэтому неудивительно, что название подсистемы DRM (англ. Direct Rendering Manager) смешивают с её функцией KMS, которая обеспечивает неразрывную обратную совместимость программного интерфейса подсистемы DRM.

Таким образом,

2. Практика

В Debian включение KMS производится последовательным вводом следующих команд, как показано в дампе 2.1

Дамп 2.1

user@home2:~$ sudo echo "GRUB_GFXMODE=1152x864x24" >> /etc/default/grub
user@home2:~$ sudo echo "GRUB_GFXPAYLOAD_LINUX=keep" >> /etc/default/grub
user@home2:~$ sudo update-grub

Как видно из выставляемого значения переменной GRUB_GFXMODE, она представдяет собой сочетание нескольких параметров в следующем формате:

<screen-width>X<screen-heigh>X<screen-depth> ,

Где

В тоже время, переменной GRUB_GFXPAYLOAD_LINUX устанавливается значение ‘keep’, для того, чтобы ядро поддержало выставленное разрешение экрана

Примечание. Ранее, для установки разрешения экрана использовалась опция ‘vga=’, которя теперь не работает. При обнаружении каких-либо проблем следует устанавливать GRUB_GFXPAYLOAD_LINUX в текстовое значение ‘text’.

Отключение производится путем добавления опций загрузки ядра опции nomodeset , что можно добиться следующим образом, как показано в дампе 2.2

Дамп 2.2

user@home2:~$ nano /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
...
# GRUB_GFXMODE=1152x864x24
GRUB_GFXPAYLOAD_LINUX=text
...
user@home2:~$ sudo

При этом, до включения функции KMS, необходимо установить пакет с поддержкой DRM/KMS на уровне ядра для выбранного семейства графического процессора GPU, который объединяет сразу несколько моделей одного или нескольких производителей.

Но, установка (настройка) отдельно функции DRM/KMS в ядре GNU/Linux не требуется, т.к. обычно настроено в ходе удовлетворения зависимостей, которые находятся в разделе Device Drivers:

    Device Drivers  --->
           Graphics support  --->

В дампе 2.3 показана настройка DRM для триады широкоприменяемых графических карт AMD/Intel/Nvidia .

Дамп 2.3

Device Drivers  --->
    Graphics support  ---> 
        <*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
        <*/M> ATI Radeon
        <*/M> AMD GPU
        <*/M> Nouveau (NVIDIA) cards 
        <*/M> Intel 8xx/9xx/G3x/G4x/HD Graphics
        -*- Enable legacy drivers (DANGEROUS)  --->                                                               
            Frame buffer Devices  --->                                                                             
            Backlight & LCD device support  --->                                                                  
            Console display driver support  --->

Как показано в дампе 2.3, для поддержки функции DRM/KMS, указанной широкоизвестной триады производителей графических адаптеров, их драйверы должны быть выставлены, как показано в дампе 2.4

Дамп 2.4

<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  ---> 
<M> ATI Radeon
<M> AMD GPU
<M> Nouveau (NVIDIA) cards
<M> Intel 8xx/9xx/G3x/G4x/HD Graphics

Раздел "Enable legacy drivers" для старых графических адаптеров оставлен в ядре 5-й версии для обратной совместимости, поэтому его можно пропустить.

В результате сделанные настройки в разделе "Graphics support" будут сохранены в виде config-переменных в файле конфигурации ядра .config, быстрою проверку которых без собственно ручного перетряхивания ядра можно провести введя в командной строке последовательность команд, показанную в дампе 2.5

Дамп 2.5

user@home2:~$ cat /boot/config-`uname -r` | sed -n -e '/#/d' -e 's/.*\(CONFIG_DRM.*\).*/\1/p'
...
CONFIG_DRM=m
...
CONFIG_DRM_RADEON=m
...
CONFIG_DRM_AMDGPU=m
...
CONFIG_DRM_NOUVEAU=m
...
CONFIG_DRM_I915=m
...

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

Примечание. Вышеперечисленные драйверы широкоприменяемой триады графических адаптеров требуют, чтобы переменные config-переменные CONFIG_DRM and CONFIG_DRM_KMS_HELPER были установлены. CONFIG_DRM Включает подсистему DRM на уровне ядра для аппаратных платформ на базе архитектуры x86 . CONFIG_DRM_KMS_HELPER Устанавливает поддержку вспомогательных функций CRTC (helper functions CRTC), реализующие функциональность КMS. При этом CONFIG_DRM и CONFIG_DRM_KMS_HELPER обычно устанавливаются вместе.
      CONFIG_DRM=m
      CONFIG_DRM_KMS_HELPER=y
     
CONFIG_DRM_RADEON, CONFIG_DRM_AMDGPU, CONFIG_DRM_NOUVEAU Требуют соблюдения следующих зависимостей CONFIG_HAS_IOMEM=y и CONFIG_DRM=m и CONFIG_PCI=y и CONFIG_MMU=y CONFIG_DRM_I915 Имеет иной джентельментский набор CONFIG_HAS_IOMEM=y и CONFIG_DRM=m и CONFIG_PCI=y и CONFIG_X86=y. CONFIG_PCI, CONFIG_MMU Выставляется при установки используемой аппаратной платформы микропроцессорной архитектуры x86,config-переменной CONFIG_X86=y.

 

3. Библиография

3.1 Wayland.freedesktop.org. The architecture

3.2 CONFIG_DRM: Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

3.3 Can't find CONFIG_PCI on menuconfig

3.4 Kernel mode setting

3.5 GNU/GRUB manual:gfxpayload