Hardware,  Статьи

Установка разрешения экрана на удаленном компьютере без подключенного дисплея в Linux

При проведении многопотоковых вычислений на удаленном компьютере иногда требуется подключиться к его графическому окружению. Чаще всего для этого используются программы, работающие по протоколу VNC (Virtual Network Computing).

Если к компьютеру физически не подключен монитор, то обычно автоматически устанавливается минимальное разрешение виртуального экрана (обычно 640×480 пикселей – headless mode). Из-за этого невозможно полноценно работать с большинством программ даже в консольном режиме.

Стандартным способом изменить разрешение экрана не получается, так как при вызове программы настроек дисплея появляется ошибка:

Вид виртуального экрана, с разрешением 640×480, устанавливаемым по умолчанию на компьютере с видеокартами Nvidia под управлением ОС xubuntu 18.04 (клиент RealVNC):

На картинке, приведенной в качестве примера, видно, что стандартное окно программы «Cеансы и запуск» не помещается на виртуальном экране. Из-за этого затруднен доступ к кнопкам сохранения сеанса и закрытия окна.

Для получения доступа к этим кнопкам нужно перетянуть в другое место окно программы, вызвав нажатием на правую кнопку мыши служебное меню (строка «Переместить»):

Такой способ управления не очень удобен, поэтому для увеличения разрешения виртуального экрана часто используют эмуляторы монитора, как аппаратные, так и программные.

Пример китайского аппаратного HDMI-адаптера дисплея со встроенной EDID-микросхемой с поддержкой различных разрешений экрана:

Переходник (адаптер) HDMI на VGA фирмы Cablexpert, обеспечивающий виртуальные разрешения от 720х480 до 1920х1080:

Видео переходник (адаптер) Cablexpert HDMI > VGA (A-HDMI-VGA-001) - фото 1

На компьютере с видеокартами Nvidia под управлением операционной системы с ядром Linux в headless-режиме для изменения разрешения виртуального экрана можно задействовать штатные средства.

Как изменить разрешение виртуального монитора в операционной системе Linux?

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

Перед внесением изменений в параметры отображения удаленного дисплея, желательно изучить информацию о его видеовыходах и возможном разрешении.

Для этого можно использовать xrandr — служебную консольную утилиту для управления дисплеями.

Вывод информации программой xrandr на компьютере с 6 видеокартами без подключенного дисплея/эмулятора:

В данном случае, благодаря программе xrandr можно увидеть, что ни к одному из выходов видеокарт (DP0-DP-5 и HDMI-0) не подключен монитор, а разрешение основного дисплея (Screen 0) выставлено в режим 640×480.

Для изменения разрешения этого компьютера нужно добавить виртуальный монитор для screen0 и установить для него нужное пользователю разрешение.

Пример информации, отображаемой xrandr на компьютере с подключенным 19-дюймовым монитором Philips:

В данном случае видно, что к компьютеру подключен дисплей через видеовыход DVI-I, установлено разрешение 1440×900.

Компьютер с 4 видеокартами Nvidia с HDMI-VGA-адаптером Cablexpert, имеющим встроенный эмулятор монитора:

В этом случае отображается информация о том, что эмулятор подключен к выходу HDMI-0, установлено разрешение 1024×768.

Изменение разрешения монитора для выхода, к которому он подключен производится командой:

xrandr --output HDMI-1 --mode 800x600

где HDMI-1 (опция output) – это выход видеосигнала, к которому подключен монитор (или эмулятор), 800×600 (опция mode) – выбранное разрешение.

Список возможных значений разрешения монитора берется из данных EDID (Extended Display Identification Data). Они могут храниться в микросхеме памяти подключенного монитора, эмулятора или эмулироваться программным способом.

В xrandr можно назначить один из видеовыходов (output) в качестве основного путем указания опции primary, например:

xrandr --output HDMI-1 --primary

Для программного изменения разрешения экрана удаленного компьютера без физически подключенного монитора в системном файле xorg.conf (каталог /etc/X11) нужно прописать виртуальный дисплей с нужным разрешением.

С этой целью в xorg.conf, в подразделе Display раздела Screen добавляют строку Virtual, например:

Section "Screen"

Identifier "Screen0"

Device "Device0"

Monitor "Monitor0"

DefaultDepth 24

Option "AllowEmptyInitialConfiguration" "True"

Option "Coolbits" "31"

SubSection "Display"

Depth 8

Virtual 800 600

EndSubSection

EndSection

Подключать монитор (в том числе виртуальный) лучше всего к самой мощной видеокарте, так как слабые GPU при выводе изображения могут терять производительность (компьютер будет «тормозить»).

Чтобы корректно внести информацию о виртуальном дисплее в файл /etc/X11/xorg.conf, лучше использовать служебную программу nvidia-xconfig.

Например, для экрана с нулевым номером подключение виртуального дисплея делается командой:

sudo nvidia-xconfig --screen=screen0 --virtual=800x600

Проконтролировать применение изменений можно в текстовом редакторе:

sudo nano /etc/X11/xorg.conf

После перезагрузки дисплей удаленного компьютера работает с установленным в режим 800×600 разрешением. Благодаря этому удаленная работа в графическом режиме с окнами стала более комфортной (они полностью помещаются на экране):

Программа xrandr теперь показывает, что разрешение screen0 установлено в режим 800×600:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

English English Русский Русский