Команда display в linux

Обновлено: 07.07.2024

Пока разобрался лишь как получить активный tty: /sys/class/tty/tty0/active.

не подходит, это выдает дисплей на котором запущена программа.

она может быть запущена в любом иксовом сеансе или в текстовой консоли даже до запуска иксов.

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

типа такого пойдет как временная заглушка, но вдруг какие изменения в формате ps и приплыли. так что хочется найти вариант понадежнее

если нужно конкретно :screen.display (или как там оно правильно) то нужно (при таком подходе) грепать еще и сессии запущенные в тех иксах

т.к. подозреваю что:
* при запуске по проядку нескольких иксов без параметров будут назначаться автоматом
* не обязательно должен начинаться с vt7

ткчто припахать еще /tmp/.X?-lock , /var/log/Xorg. log, .

/tmp/.X?-lock в моей убунте вообще нету)
а с /var/log/Xorg. log та же проблема: небольшие изменения в формате и все.

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

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

меня устроит решение, которое будет игнорировать возможность мультисита.

меня устроит решение, которое будет игнорировать возможность мультисита.

anTaRes ★★★★ ( 02.05.15 02:14:14 )
Последнее исправление: anTaRes 02.05.15 02:15:06 (всего исправлений: 1)

Ну попробуй, например, что-нибудь типа этого:

если на своей машине - решение с ps и grep вполне подойдет и можешь быть уверен что в ближайшем будущем формат выхлопа не поменяется, просто запускай все свои иксы с указанием дисплея

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

придумал более менее стабильный костыль:

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

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


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

вообще изначальная задача - получить окно, которое имеет фокус ввода, но при нескольких запущенных сеансах иксов XGetInputFocus, для каждого из них, выдает валидное окно, но ввод идет только в окно активного сеанса, именно оно мне и нужно.


Так правильно выше говорят, что не рассматриваем случаи Xephyr/Xnest, не рассматриваем случай multiseat, не рассматриваем случай удаленных дисплеев и т .д.?

У тебя то, о чем выше говорят? То есть один монитор, там запущено много серверов на разных vt. Ты переключаешь vt. На одном vt есть иксы, на другом нет. Тебе надо получить активный tty, узнать, есть ли там иксы. Если есть, то они и активные. Так?

вообще изначальная задача - получить окно, которое имеет фокус ввода, но при нескольких запущенных сеансах иксов XGetInputFocus, для каждого из них, выдает валидное окно, но ввод идет только в окно активного сеанса, именно оно мне и нужно.

И также XQueryPointer не сработает - будет сообщать, где был указатель перед переключением на другой сервер.

Не может быть. Это скрытый файл. Посмотри еще раз. ls -a /tmp

Zubok ★★★★★ ( 02.05.15 15:05:23 )
Последнее исправление: Zubok 02.05.15 15:15:15 (всего исправлений: 2)


Можно в cd /tmp/.X11-unix узнать, кстати. Зайди в этот каталог - там будут X1, X2.

Еще интересное. которое может пригодиться. Сервер Xorg выставляет у root window свойство XFree86_VT с номером терминала, на котором запущен сервер. Вытащить свойство можно через xprop

То есть ты можешь узнать из сервера, на каком терминале он запущен. Указав -display или вместо него DISPLAY=, ты сможешь узнать VT и для других серверов.

Zubok ★★★★★ ( 02.05.15 15:33:23 )
Последнее исправление: Zubok 02.05.15 15:33:42 (всего исправлений: 1)

Так правильно выше говорят, что не рассматриваем случаи Xephyr/Xnest, не рассматриваем случай multiseat, не рассматриваем случай удаленных дисплеев и т .д.?

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

У тебя то, о чем выше говорят? То есть один монитор, там запущено много серверов на разных vt. Ты переключаешь vt. На одном vt есть иксы, на другом нет. Тебе надо получить активный tty, узнать, есть ли там иксы. Если есть, то они и активные. Так?

все так, но мониторов 2, естественно на обоих всегда одинаковый сеанс иксов

Не может быть. Это скрытый файл. Посмотри еще раз. ls -a /tmp

действительно, сейчас вижу. вчера ночью просто темно было вот и не заметил)

И также XQueryPointer не сработает - будет сообщать, где был указатель перед переключением на другой сервер.

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

Можно в cd /tmp/.X11-unix узнать, кстати. Зайди в этот каталог - там будут X1, X2

я таким образом и получаю все запущенные сеансы. Правда и тут приходится использовать небольшой костыль: если мы запустили новый сервер, но находимся в меню дисплей менеджера и не выбрали сеанс DE/WM, то в .X11-unix новый сокет уже появился, но XOpenDisplay возврашает 0, поэтому приходится использовать костыль: по таймеру проверять XOpenDisplay пока он не вернет подключение.

Я новичок в сценариях оболочки. Я не понимаю, что такое $DISPLAY переменная среды.

У меня Ubuntu 13.10 и я использую /bin/bash shell. У меня есть два монитора.

Команда echo $DISPLAY напечатает :0.0 на моей машине (на обоих мониторах). Что это значит?

В каких случаях $DISPLAY переменная будет пустой или NULL?

Есть ли какие-либо статьи или учебники по этому вопросу?

Волшебное слово в системе X Window - DISPLAY. Дисплей состоит (упрощенно) из:

Дисплей управляется серверной программой, известной как X-сервер. Сервер предоставляет возможности отображения другим программам, которые к нему подключаются.

Значение переменной среды отображения:

hostname - это имя компьютера, на котором работает X-сервер. Опущенное имя хоста означает localhost.

D - порядковый номер (обычно 0). Его можно изменить, если к одному компьютеру подключено несколько дисплеев.

S - номер экрана. Дисплей может иметь несколько экранов. Обычно есть только один экран, хотя по умолчанию 0.

hostname:D.S означает экран S на дисплее D имени хоста; X-сервер для этого дисплея прослушивает TCP-порт 6000 + D.

host/unix:D.S означает экран S на дисплее D хоста хоста; X-сервер для этого дисплея прослушивает сокет домена UNIX /tmp/.X11-unix/XD (поэтому он доступен только с хоста).

:D.S эквивалентно host / unix: DS, где host - локальное имя хоста.

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

Читайте больше здесь и здесь и здесь .

Со страницы руководства X (7):

С точки зрения пользователя, каждый X-сервер имеет отображаемое имя формы:

Имя хоста: displaynumber.screennumber

Эта информация используется приложением для определения того, как ему следует подключаться к серверу и какой экран следует использовать по умолчанию (на дисплеях с несколькими мониторами):

hostname hostname указывает имя машины, к которой физически подключен дисплей. Если имя хоста не указано, будет использован наиболее эффективный способ связи с сервером на том же компьютере. displaynumber Фраза «display» обычно используется для обозначения коллекции мониторов, которые имеют общую клавиатуру и указатель (мышь, планшет и т. д.). Большинство рабочих станций, как правило, имеют только одну клавиатуру и, следовательно, только один дисплей. Большие многопользовательские системы, однако, часто имеют несколько дисплеев, так что несколько человек могут одновременно выполнять графическую работу. Чтобы избежать путаницы, каждому дисплею на машине назначается номер дисплея (начиная с 0), когда X-сервер для этого дисплея запускается. Номер дисплея всегда должен указываться в имени дисплея. screennumber Некоторые дисплеи совместно используют одну клавиатуру и указатель между двумя или более мониторами. Поскольку каждый монитор имеет свой собственный набор окон, каждому экрану присваивается номер экрана (начиная с 0), когда X-сервер для этого дисплея запускается. Если номер экрана не указан, будет использоваться экран 0.

В обычном режиме это не должно происходить, если на вашем дисплее нет проблемы. В основном, перезапуск диспетчера дисплеев решит проблему. Но это не действие по умолчанию. @ChandrayyaGK Например, когда я не использую какую-либо рабочую среду, такую ​​как GNOME или KDE, но напрямую захожу с TTY (вроде /dev/tty1 ), я получаю пустое место $DISPLAY . @Maythux Иногда номер экрана опускается, когда он равен 0. Мой GNOME дает :0 для $DISPLAY .

Существующие ответы не соответствуют более широкой картине.

Если вы не используете графическое окружение (то есть вы входите в системную консоль без окон и т. Д .; вы входите удаленно с текстового терминала через SSH или аналогичный, например, с компьютера под управлением Windows, на котором установлен PuTTY), тогда GUI не задействован и DISPLAY обычно не устанавливается. Единственным средством связи с компьютером является командная строка (хотя могут быть способы перехода в сеанс графического интерфейса, если вы знаете, как).

Если вы входите в систему через консоль с графическим интерфейсом (в Ubuntu обычно используется GDM-приветствие) или с помощью графического терминала (например, с компьютера под управлением Windows, на котором работает eXceed или mobaX, или с помощью программного обеспечения для удаленного рабочего стола, такого как клиент VNC), DISPLAY переменная устанавливается программой, которая управляет вашим графическим сеансом, чтобы указать графическим клиентам, к каким устройствам ввода / вывода подключаться.

На X11 хост-часть DISPLAY может быть удаленным сервером, и вы будете использовать свой компьютер Ubuntu в качестве «графического терминала» для доступа к файлам и программам на этом удаленном сервере (в этом случае ваш компьютер является «сервером», который служит клавиатурой мыши и одного или нескольких устройств отображения для «клиентских» программ, запущенных на удаленном . сервере). Чаще всего на вашем компьютере работают сервер X11 (или Mir, или Wayland) и клиентские программы (менеджер рабочего стола и различные графические клиенты, такие как веб-браузер, почтовый клиент, программа-календарь и т. Д.). На это указывает «серверная» часть DISPLAY значения, которая в последнем случае обычно пуста (что подразумевает значение по умолчанию localhost ).

Сервер X11 может запустить один или несколько графических сеансов - например, ваш логин консоли и удаленный сеанс VNC могут выполняться одновременно. В этом случае (если ими управляет один и тот же экземпляр сервера X11) у вас есть несколько «отображений» в терминах X11. На практике один сеанс (одно событие входа в систему и экземпляр рабочего стола, порожденный этим) - это один дисплей в X11.

Один такой дисплей может иметь один или несколько экранов. Традиционно это означало один монитор, хотя в оригинальной архитектуре были некоторые прискорбные черты, такие как невозможность перемещения окна с одного экрана на другой. Надстройки, такие как Xinerama и Xrandr, еще больше запутали ситуацию до такой степени, что один экран часто соединяет несколько мониторов различными способами.

Если вы играли с системами с несколькими мониторами, вы, вероятно, обнаружили, что вы можете расположить мониторы различными способами и получить прямоугольную область, где ваши мониторы отображают некоторые ее части, а другие части не назначаются никаким мониторам. Это «экран», который создает X11, и если у вас более одной видеокарты, у вас может быть несколько таких экранов, каждый из которых назначен одному или нескольким мониторам (или теоретически работает без монитора; Xvfb использует это для разрешения чтобы запустить X11 без каких-либо мониторов, просто сопоставьте графический интерфейс с областью памяти для любых целей).

Если рассмотреть схему работы системы X Window немного подробнее. То сначала может показаться, что эта схема слишком запутана и сложна. Однако это лишь первое впечатление от нестандартного и универсального подхода к реализации принципов работы с видеодисплейными терминалами (вывода изображения на экран монитора) в сложных и распределённых системах UNIX и Linux. На самом деле такая концепция очень полезна. В первую очередь для системного администрирования. Она позволяет администраторам организовать удобную для себя программно-аппаратную среду для управления и контроля всей системы. Ведь система X Window основана на архитектуре клиент-серверного взаимодействия. Что делает её (X Window) очень податливой для централизации и масштабирования. А это в свою очередь прямо влияет на удобство администрирования и мониторинга систем и сетей (даже самых сложных), в которых используется X Window.

Распределённая схема запуска X-приложений

Информация об обновлении дисплея X Window передаётся по сети от клиентов. К дисплею может быть подключено несколько мониторов — для каждого клиента свой. Для этого клиенту необходимо знать:

  • хост, на котором запущен X-сервер;
  • номер активного дисплея (управляется менеджером дисплеев);
  • номер монитора, привязанного к активному дисплею.

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

Переменная окружения DISPLAY

Каким образом X-приложение на стороне клиента «узнаёт», к какому X-серверу подключаться и какие дисплей и монитор использовать для вывода GUI? Для этого существует специальная переменная окружения DISPLAY. Она содержит информацию об IP-адресе X-сервера (или имя хоста) и номера дисплея и монитора (если мониторов несколько). Естественно, что в том случае, когда X-сервер и X-приложение работают на одном компьютере, то вся эта информация может быть опущена за исключением номера монитора. В качестве которого указывается значение «0», если он один.

Для задания параметров переменной DISPLAY на стороне клиента можно выполнить следующую команду:

Однако следует помнить, что переменные окружения должны быть корректно заданы для каждого процесса, использующего X-сервер. Например, X-приложения, запущенные из одной командной оболочки и корректно работающие в системе X Window, могут не работать, будучи запущенными из другой. Если для этих оболочек переменная DISPLAY имеет разные значения.

Даже когда X-приложения работают через указанный X-сервер, то они могут отправлять в вывод клиентской командной оболочки (из которой были запущены) некоторую информацию по стандартным каналам ввода/вывода STDOUT и STDERR – в этом нет ничего необычного.

Разумеется, в имени хоста можно опускать название домена. Если клиент и сервер оба в него включены. Хотя это может зависеть от схемы распознавания доменных имён в конкретной сети. Ну и конечно стоит помнить о том, что если клиент и сервер работают на одном компьютере, то очень рекомендуется полностью исключать из переменной DISPLAY имя компьютера (вместо хоста как в случае с удалённым X-сервером). В этом случае будет задействован сокет UNIX вместо стандартного сетевого сокета TCP. Это очень полезно — ведь данный тип сокета более быстрый и эффективный, чем сокет сети. К тому же это позволяет избежать проблем с настройкой брандмауэров. Поскольку сокеты типа UNIX по-умолчанию не подлежат прослушиванию и блокировкам.

Авторизация клиентов

Когда-то к X-серверу могли подключаться абсолютно все клиенты. Но в эпоху всё нарастающих опасностей в киберпространстве возникла необходимость защиты соединений и взаимодействия по сети. Не стала исключением и система X Window. С помощью команды xhost, выполняющей подключение к X-серверу любой пользователь мог впоследствии навредить системе. Позже от неё закономерно отказались.

Самой распространённой моделью авторизации клиентов для X-сервера является использование куков (cookie). Которые представляют собой случайно генерируемые последовательности символов. Куки известны диспетчеру дисплеев, отвечающему за авторизацию. Клиент, предоставивший диспетчеру дисплеев такие куки воспринимается сервером как аутентифицированный. Сами куки сохраняются в файл

/.Xauthority на стороне клиента. Команда xauth позволяет просматривать куки сервера и добавлять их в файл

/.Xauthority. Когда X-приложение не может получить доступ к X-серверу по причине неудачной авторизации, может быть получен вывод примерно такого содержания:

Как видно, для X-приложения был отклонён доступ к X-серверу из-за отсутствия нужных куков. Но не стоит унывать, ведь сами куки можно получить, выполнив на стороне сервера:

В данном выводе получены куки для сокета UNIX, сетевого интерфейса Ethernet. А также для интерфейса с обратной связью localhost.

Далее, поскольку возможность копирования/вставки поддерживается командными оболочками. Чтобы добавить полученные куки в набор клиента нужно выполнить (на стороне клиента) следующую команду:

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

Как можно видеть, использование системы X Window позволяет легко выйти за рамки использования одного компьютера. Подобная концепция позволяет гибко масштабировать системы на основе UNIX\Linux не только в классическом представлении «командной строки», но и с использованием всех самых современных разработок и достижений для GUI.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

При использовании домашнего или офисного компьютера под управлением Linux-системы часто хочется получить от него максимальную отдачу, повысив производительность. Это особенно важно для тех компьютеров, которые одновременно используются для майнинга. Чтобы увеличить производительность системы, нужно устанавливать более мощные компоненты, отвечающие за проведение вычислений, а также уменьшать нагрузку за счет отключения/уменьшения нагрузки за счет ненужных и второстепенных приложений/служб.

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

Программные компоненты, обеспечивающие работу графического окружения в Linux

Для работы с графическим окружением компьютера под управлением linux, используется модульный принцип совместного использования программ, что дает пользователю гибкость в выборе компонентов и их настройке. Для обеспечения функционирования графической среды (или DE, сокращение от Desktop Environment) в операционных системах семейства Linux обычно используется три основных компонента:

Компоненты графической системы linux (слайд с Youtube-канала AcademyOfNetworking):


Запуск графического окружения Linux производится с определенной последовательностью. Обычно сначала производится вход в систему с помощью дисплейного менеджера, затем запускается дисплейный сервер (Xorg), а потом — другие программы, обеспечивающие работу графического окружения — оконный менеджер и другие приложения.

Механизм функционирования графической системы в Linux на основе X-Window (источник: сайт itproffi):


Работа дисплейного менеджера в операционных системах на основе ядра Linux

Основными задачами, которые выполняет дисплейный менеджер (менеджер доступа/экрана, диспетчер отображения), являются:

  • запуск окна приветствия (greeter) чтобы пользователь смог выбрать аккаунт и выбрать тип сессии, которую он желает использовать;
  • предоставление возможности выполнить аутентификацию (ввод логина для учетной записи и пароля) с помощью подключаемых модулей (PAM). Фактически это оконный аналог приглашения командной строки getty, которая используется в Linux при работе в консольном режиме;
  • запуск оконных процессов для сессии пользователя после прохождения им аутентификации (запуск сервера экрана и загрузка рабочего стола);
  • предоставление опций удаленного ввода логина и пароля.

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

Исходя из задач, которые выполняет Display Manager, его основными качествами должны быть:

  • поддержка разных оконных менеджеров (рабочих столов) и технологий работы с дисплеями (например, X, Mir, Wayland и другие);
  • удобство и простота пользования;
  • малое количество потребляемых ресурсов;
  • предоставление возможности работы в гостевой сессии (при необходимости);
  • поддержка работы с удаленным подключением (например, по протоколу VNC, XDCMP и другими).

Существует множество менеджеров дисплея, одним из лучших является LightDM (сокращение от английского словосочетания Light Display Manager — легкий менеджер дисплея):


lightDM используется по умолчанию в качестве дисплейного менеджера в таких Linux-дистрибутивах, как Xubuntu, Ubuntu 11.10+, Kubuntu, Edubuntu, Fedora, Xubuntu, LinuxMint и других.

LightDM поддерживает работу с несколькими рабочими столами и многими надстройками (легко расширяем). Он работает на основе движка с открытым исходным кодом WebKit, поэтому отображает интерфейс входа в систему как HTML-страницу, что не требует много ресурсов. Развитие lightdm ведется усилиями сообщества на Github.

Окна приветствия (greeters) для LightDM разрабатываются на альтернативной основе. В xubuntu это приложение GTK+ Greeter, которое отличается скромными требованиями к потреблению ресурсов. Если в системе используется автоматический логин, то Greeter не нужен.

Установка LightDM (в случае его отсутствия в системе) производится командой:

удаление производится командой:

Остановка работающего менеджера X с помощью lightdm делается командой

запуск lightdm производится командой

Файлы конфигурации lightdm находятся в каталогах

В xubuntu он работает в паре с сервером X и оконным менеджером xfwm4.

Работа оконного менеджера в дистрибутивах Linux

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

Кроме тройки часто использющихся компонентов (дисплейный и оконный менеджер, сервер X), для работы в графическом окружении Linux используются дополнительные программы, обеспечивающие функционал рабочего стола, например, кнопки пуска (стартового меню), панели, виджетов, программного обеспечения, эмулятора терминала (xfce4-terminal), файловый менеджер и другие программы.

Как работает сервер X Window

Система X Window (X11 или просто X) предназначена для отображения базовой графики. Более продвинутые графические возможности для пользователя создаются приложениями графического окружения DE (в xubuntu это среда xfce4) .

X работает независимо от ядра операционной системы по модели клиент-сервер. Сервером является X-процесс, а графические приложения и программы, работающие с видеокартой (в том числе майнеры), являются его клиентами. Так как X является серверным процессом, то к нему можно подключаться удаленно, не используя дополнительных инструментов.

X-Window отвечает за базовый функционал графической среды на низком уровне. Для работы графического окружения в Linux еще нужны оконный и дисплейный менеджеры плюс (при необходимости) другие программы.

Взаимодействие X-сервера и клиентских приложений осуществляется с помощью протокола X через драйвера, которые обеспечивают непосредственную работу с устройствами ввода-вывода. К устройствам ввода относятся клавиатура, мышь и другие, а к устройствам вывода — видеокарты, монитор и т. д.

Посмотреть, какие компоненты на компьютере связаны с сервером X можно командой

Установка xorg при его отсутствии делается командой

Конфигурирование сервера X в консольном окружении делается командой

В результате в директории /etc/X11/ появится конфигурационный файл xorg.conf.

В системе, уже работающей в графическом окружении, при попытке выполнить эту команду появится ошибка Fatal server error: (EE) Server is already active for display 0. If this server is no longer running, remove /tmp/.X0-lock and start again.

Запуск X-сервера делается командой

можно вывести информацию об окне, с которым работает сервер X:


можно посмотреть информацию о версии x-сервера,и его возможностям.

Если на компьютере, работающей в консольном режиме запустить сервер X, то уже можно ограниченно работать с оконными программами, использовать мышь и клавиатуру.

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

Это связано с тем, что для видеокарт Nvidia для включения опций разгона и управления температурным режимом используются настройки файла xorg.conf из директории /etc/X11/, в то время как Ubuntu-подобные системы для этого используют конфигурационные файлы, находящиеся в каталоге /usr/share/X11/xorg.conf.d/


Продвинутая настройка требуется, если нужно использовать нестандартную конфигруацию, например, Internal GPU или видеокарту AMD для работы xserver (вывода видео), а GPU Nvidia — задействовать для CUDA-вычислений с включенными опциями разгона.

Разные способы настройки видеокарт nvidia, AMD и Intel осложняют их совместное использование в Linux. При работе в сложной конфигурации необходимо работать с конфигурационными файлами X-сервера, точно указывая параметры работы видеокарт, прописывая мониторы к которым они подключены, даже если они виртуальные.

Структура конфигурационного файла xorg.conf

xorg.conf состоит из нескольких секций, разделенных словами section и end section, которые определяют порядок взаимодействия с устройствами ввода-вывода:мышью, клавиатурой и дисплеем, например:

  • Module — отвечает за подключение/загрузку модулей вместе с x-сервером, которые расширяют функциональность драйверов видеокарты;
  • ServerLayout — определяет имена устройств ввода и вывода информации для рабочей сессии сервера Xorg (мыши, клавиатуры и экрана);
  • InputDevice — разделы, необходимые для работы с мышью и клавиатурой. Для каждого устройства создается свой раздел;
  • Device — раздел, касающийся установленного на компьютере графического оборудования, драйверов;

Вид секции Device для видеокарты GeForce GTX 1060 3GB:

  • Monitor — определяет настройки экрана мониторов, в частности, частоты горизонтальной развертки (HorizSync) и вертикального обновления (VertRefresh), разрешение экрана. Для корректной работы X-сервера обязательно должна указываться информация об идентификаторе монитора, опции его работы, например, DPMS для автоматического отключения монитора для энергосбережения;

Пример автоматически сгенерированной секции Monitor при отсутствии монитора, подключенного к видеокарте:

  • Screen — определяет настройки дисплея как аппаратной связки монитора и графического адаптера, описанных в разделах более низкого уровня (Device и Monitor). Указанные в этом разделе настройки в процессе работы используются менеджером дисплеев;

Как видно из примера, в секции Screen для видеокарты, соответствующей номеру Screen0, прописаны ссылки на разделы Device0 и Monitor0, которые стоят ниже по иерархии, чем раздел Screen. Драйвер видеокарты будет работать корректно, если информация, указанная во всех этих разделах будет коррелировать.

Изменения, внесенные в автоматическом режиме командой nvidia-xconfig в файл xorg.conf, вступают в силу после перезапуска X-сервера. Как уже упоминалось ранее, в сложных аппаратных конфигурациях необходимо вручную корректировать xorg.conf, в противном случае графическое окружение не запустится, или будет работать некорректно. Эта тема будет рассматриваться в отдельной статье.

Вам также может понравиться


Майнинг в Китае и его влияние на крипторынок

Читайте также: