Мне нужна графическая сессия на сервере с Debian без монитора (headless) с нужным мне разрешением, например, 1920×1080. Давайте настраивать!
Варианты решения
Есть вариант физического устройства-заглушки (dummy plug), которое подключается к HDMI или VGA разъему видеокарты и имитирует подключенный монитор.
Есть вариант использования виртуального драйвера X-сервера (xserver-xorg-video-dummy), который позволяет запускать графическую сессию без физической видеокарты и монитора.
Еще есть вариант использования драйвера видеокарты NVIDIA со специальной конфигурацией. А поскольку у меня уже стоит драйвер видеокарты NVIDIA, то я остановлюсь на этом варианте решения.
Headless сервер на Debian с драйвером NVIDIA
Итак. Физического монитора на сервере с Debian нет. Но установлен драйвер видеокарты NVIDIA. При удаленном подключении к серверу нужна графическая сессия, например, с разрешением 1920×1080. И чтобы это реализовать, нам понадобится создать и настроить всего один конфигурационный файл /etc/X11/xorg.conf.
Автоматически создаем файл конфигурации X-сервера /etc/X11/xorg.conf, настроенный на использование графического драйвера NVIDIA:
nvidia-xconfig
Отредактируем полученный файл /etc/X11/xorg.conf. В Section «Monitor» добавляем:
HorizSync 28-80
VertRefresh 48-75
Это допустимые диапазоны горизонтальной частоты развертки монитора и частоты обновления кадров.

В Section «Device» добавляем:
Option "AllowEmptyInitialConfiguration" "true"
Option "ConnectedMonitor" "DFP-0"
Эти две опции для драйвера NVIDIA. Первая опция позволяет запускать X-сервер, даже если не подключен монитор. Вторая опция заставляет драйвер считать, что подключен определенный тип монитора. DFP-0 — это Digital Flat Panel, т.е. монитор с цифровым плоским экраном.
В Section «Screen» и SubSection «Display» добавляем:
Modes "1920x1080"
Это нужное нам разрешение экрана.
Чтобы изменения вступили в силу, нужно перезапустить дисплей-менеджер. Чтобы проверить, какой дисплей-менеджер используется:
cat /etc/X11/default-display-manager
/usr/sbin/lightdm — это LightDM, /usr/sbin/gdm3 — это GNOME Display Manager и т.д.
Я перезапускаю дисплей-менеджер с помощью команды:
systemctl restart lightdm
Все готово. Можно удаленно подключаться к серверу и проверять разрешение графической сессии.

Листинг файла /etc/X11/xorg.conf
Полный листинг файла /etc/X11/xorg.conf у меня получился следующий:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 570.124.06
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
Option "DPMS"
HorizSync 28-80
VertRefresh 48-75
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration" "true"
Option "ConnectedMonitor" "DFP-0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080"
EndSubSection
EndSection
Вывод
Мы создали графическую сессию с разрешением 1920×1080 на удаленном сервере с Debian без монитора и с видеокартой NVIDIA.
Обсуждаем тему в комментариях под статьей!
Комментарии