Debian запустить x server
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Янв | Март » | |||||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
Лекция №28 - X-сервер в Linux
Сегодня мы поговорим о графике в Linux. В отличии от Windows графическая подсистема в Linux не является неотъемлемой частью - она существует отдельно от ядра системы. Именно поэтому есть возможность работать в Linux без графической подсистемы - только в алфавитно-цифровом режиме.
Графическая подсистема в Linux называется X Window System. Разрабатывалась она изначально как модель клиент/сервер, поэтому и состоит из двух частей: сервера и клиента. В роли сервера выступает процесс X-server, а в роли клиентов графические приложения. Клиент и сервер общаются между собой по правилам описанным в X-протоколе. Собственно сам X-сервер и состоит из двух больших частей: это набор драйверов для работы с устройствами ввода-вывода и X-протокол для работы с приложениями.
Сейчас важно понять, что с устройствами ввода (клавиатурой, мышью и другими) и устройствами вывода (видеоадаптеры, мониторы и прочие) взаимодействует именно X-сервер, а не приложения. Мы не будет углубляться в подробности X-протокола и тонкости взаимодействия всех компонентов. Отметим себе, что X-сервер взаимодействует с приложениями при помощи механизма unix-сокетов и internet-сокетов. Возможность взаимодействия через internet-сокеты позволяет X-серверу и клиенту работать в связке находясь на разных компьютерах объединенных в сеть.
Попробуем выполнить несколько практических упражнений, которые помогут разобраться с основами взаимодействия X-сервера и приложений. Как правило на рабочей станции уже запущен один экземпляр X-сервера. Запустим еще один экземпляр командой (команда должна запускаться от имени суперпользователя):
В результате на одной из виртуальных консолей будет запущен экземпляр X-сервера. На этой консоли вы увидите черный (либо серый) экран с крестиком вместо указателя мыши. Теперь перейдите на свободную консоль и наберите команду:
Перейдите на консоль в которой запущен X-сервер. Вы должны увидеть в левом верхнем углу аналоговые часы. Программа xclock в данном примере является клиентом для X-сервера. С помощью ключа -display мы указали программе с каким X-сервером ей нужно взаимодействовать, то есть какой X-сервер выведет на устройство вывода (монитор) изображение программы xclock.
X-сервер, который запускается по умолчанию при загрузке системы имеет порядковый номер 0. То есть команда xclock -display :0 выведет часы на седьмую виртуальную консоль.
Вернемся к нашим часам на втором экземпляре X-сервера. Вы видите что у программы нет привычной окантовки окна с кнопками свернуть, развернуть, закрыть. Дело в том, что их рисует не X-сервер, а другой процесс, который называется менеджер окон. Менеджер окон также занимается масштабированием и перемещением изображения программ. Такое разделение функций также повышает гибкость всей графической подсистемы X Window. Так как вы можете выбирать какой менеджер окон использовать для прорисовки рамок приложений.
Как уже было сказано, X-сервер работает с устройствами ввода/вывода информации. Основной конфигурационный файл в котором хранятся настройки X-сервера называется /etc/X11/xorg.conf. Хотя во многих современных настольных дистрибутивах этот файл пустой, так как за настройку оборудования отвечает другая подсистема, тем не менее X-сервер продолжает читать конфигурацию из этого файла. Рассмотрим этот файл, так как возможны ситуации когда параметры ваших устройств ввода/вывода будут автоматически определяться некорректно и тогда ручная правка файла /etc/X11/xorg.conf может помочь решить проблему.
Файл /etc/X11/xorg.conf разбит на секции при помощи ключевых слов section и end section. Рассмотрим наиболее важные секции.
section "Files".
FontPath "/usr/share/fonts/X11/misc"
FontPath "tcp/192.168.1.1:7100"
.
end section
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
EndSection
Section "Device"
Identifier "Intel Corporation 82815 CGC [Chipset Graphics Controller]"
Driver "i810"
BusID "PCI:0:2:0"
EndSection
Section "Monitor"
Identifier "Универсальный монитор"
Option "DPMS"
HorizSync 28 - 64
VertRefresh 43 - 60
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation 82815 CGC [Chipset Graphics Controller]"
Monitor "Универсальный монитор"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
Об этих и других параметрах можно подробно прочесть в справке Linux - man Xserver, man xorg.conf, man X и других разделах.
modeline “ 1024 × 768 @ 60 ″ 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsyncВ кавычках указывается название параметра modeline - “1024×768@60″ - оно может быть любым и никак не влияет ни на какие характеристики. Далее идет число указывающее частоту тактового генератора видеоадаптера (dot clock) - 65.0. Четыре следующих числа - 1024 1048 1184 1344 - указывают на разрешение по горизонтали. 1024 - это и есть само разрешение по горизонтали - количество видимых точек в строке. 1048 - это общее количество точек в строке, в том числе и невидимых (черная кромка экрана). 1184 - это число тактов развертки от начала строки до импульса синхронизации, а 1344 - это общее число тактов необходимое на формирование одной строки.
Числа 768 771 777 806 означают ту же информацию только для вертикального разрешения. Если вы не совсем поняли, что значат эти параметры не расстраивайтесь. В любом случае вам не нужно вычислять их вручную, так как они должны быть указаны в документации к вашему монитору. И ваша задача просто найти эти параметры и правильно прописать их в строке modeline.
-vsync, -hsync или могут быть +vsync, +hsync, обозначают тип синхроимпульса. Эти параметры также берутся из документации к монитору.
Строк modeline может быть несколько, а может быть только одна - для нужного вам разрешения.
Хотя такое ручное добавление параметров уже редкость, тем не менее еще может иметь место, и поэтому будьте осторожны в установке этих параметров, так как неправильная их установка может привести даже к выходу монитора из строя.
Давайте теперь более подробно поговорим о дисплей менеджерах (Display managers) или менеджерах экрана.
Вы должны помнить, что для того, чтобы начать работу в алфавитно-цифровом режиме, вы должны ввести логин и пароль, которые запрашивает консольная программа getty. getty проверяет введенные данные, и если они корректны, то пускает пользователя в систему, предоставляя доступ к командному интерпретатору. Дисплей менеджер - графический аналог программы getty. Основная задача менеджера экрана - это предоставить пользователю графический интерфейс для ввода логина и пароля, проверить введенные логин и пароль и в случае успеха пустить пользователя в систему запустив для него графическую оболочку или менеджер окон.
Термином графическая оболочка очень часто называют как оконные менеджеры (WindowMaker, IceWM, Blackbox, JWM и другие), так и полнофункциональные графические оболочки (GNOME, KDE, XFCE и другие).
Базовым дисплей менеджером Linux является xdm. Для двух наиболее популярных графических оболочек Gnome и KDE существуют свои дисплей менеджеры - gdm и kdm соответственно. Кроме основной функции, дисплей менеджеры имеют и ряд дополнительных: возможность выбрать язык ввода, предоставить возможность выбора оконного менеджера или графической оболочки, возможность, не заходя в систему, выключить компьютер.
Конфигурационные файлы дисплей менеджера xdm, расположены в каталоге /etc/X11/xdm/. Поле успешной регистрации пользователя в системе с помощью xdm, будет выполнятся скрипт Xsession, расположенный в /etc/X11/xdm/. Из этого скрипта будет выполнен запуск скрипта /etc/X11/Xsession, который продолжит загрузку графической подсистемы.
Конфигурационные файлы для дисплей менеджера gdm расположены в каталоге /etc/gdm/, а для kdm в каталоге /etc/kde4/kdm (для четвертой версии KDE).
Если вы работаете в алфавитно-цифровом режиме, то для перехода в графический режим достаточно выполнить команду startx. В результате будет запущен графическая среда по умолчанию. Дисплей менеджер в процессе выполнения скрипта startx, не запускается, так как пользователь уже аутентифицировался в системе при помощи программы getty
По умолчанию, Xorg это X Window сервер, начиная с версии Debian 4.0 (etch). Он заменил XFree86 и поддерживается в Debian командой XStrikeForce.
- Текущий статус
- Нумерация версий
- Конфигурация X
- Редактирование xorg.conf
- Как отредактировать конфигурационный файл xorg?
- Что делать, если у меня нету конфигурационного файла xorg?
Текущий статус
Нумерация версий
Xorg version numbering has changed since xorg 7.0. Nowadays, Xorg is released with a version number (like 7.4). This release is composed of various modules which have their own version number (each module started at version "1.0" when Xorg 7.0 development cycle started). For instance, Xorg 7.3 was shipped with Xserver version v1.4, xf86-input-evdev v1.1.5, xf86-video-intel v2.1.1, etc.. If you want to learn more about Xorg releases/versions, see this blog.
Debian version number follows upstream convention. The module's version may be different (The maintainers sometimes cherry-pick more recent and stable modules). Reminder: Debian package version sometimes starts with a digit followed by a column, like 1:7.3.1-2. That part (1:) is Debian-specific. Also, anything after the dash (-2) is the Debian packaging version.
Конфигурация X
Пример настройки клавиатуры в Squeeze (и позже). Выполните в терминале, от имени пользователя root, команду:
Редактирование xorg.conf
Некоторые настройки доступны только через редактирование файла xorg.conf.
Как отредактировать конфигурационный файл xorg?
Откройте терминал (или консоль) от имени root, и выполните:
Что делать, если у меня нету конфигурационного файла xorg?
Если по какой либо причине конфигурационный файл xorg.conf отсутствует, то xorg будет определять ваше оборудование при каждом запуске. В большинстве случаев это работает нормально, но некоторые параметры могут остаться не доступны/настроены. Чтобы создать отправную точку для настройки xorg, выполните следующие действия.
Переключитесь в консоль, и зайдите под пользователем root (не в эмулятор терминала X). Далее запустите следующие:
Альтернативный метод это перезагрузить компьютер в режим одиночного пользователя, и выполнить следующие команды:
Далее следовать инструкциям на экране. Follow the on-screen instructions. This should give you something to work with.
Вопрос: what should be done if generating this file fails, giving the message, 'Number of created screens does not match the number of detected devices'?
Anyway, probably, this is unnecessary. Per this comment and this advice, it seems best to create the directory /etc/X11/xorg.conf.d and place in it a few files in order to tweak sections of the implicit xorg.conf, as for example is done here.
Xorg reads vendor configuration information from the directory /usr/share/X11/xorg.conf.d, as stated by man xorg.conf.d.
Rather than in xorg.conf, another quite useful way to adjust X settings is on the fly, in a desktop environment's list of scripts to run at startup.
Запуск X
После установки выполнить:
или выполнить от root:
(смотри справку (man) gdm).
Пользователи KDE должны использовать kdm. Другие могут использовать xdm, gdm3, lightdm.
Администраторы, да и некоторые продвинутые пользователи систем UNIX и Linux нередко сталкиваются с проблемами, касающимися работы X-сервера или просто Xorg. Это происходит по разным причинам: восстановление сломанной системы, установка нового оборудования, конфигурация, сборка и задействование нового ядра системы и т. д. Для того, чтобы успешно решать подобные проблемы, необходимо понимать как устроена, во-первых система X Window, а во-вторых уверенно ориентироваться в особенностях конфигурации самого сервера Xorg.
Способы конфигурирования Xorg
Когда-то сервер Xorg имел очень скудные возможности по конфигурации. Это связано было с не самой широкой номенклатурой используемого оборудования — его было мало и оно работало одинаково. В последствии ситуация изменилась, что и повлекло за собой необходимость по модернизации Xorg таким образом, чтобы его можно было настроить для работы на любом оборудовании для вывода и обработки графики, а также устройств ввода.
Вообще, сервер Xorg способен работать без использования файлов конфигурации, благодаря специализированным KMS-модулям ядра. Однако это далеко не самый распространённый и гибкий вариант эксплуатации Xorg. Куда лучше использование других вариантов:
- работа с конфигурационными файлами;
- использование утилит конфигурации Xorg (таких как xrandr).
Конечно же, вариант с использованием утилиты предпочтительнее, однако следует уметь работать и непосредственно с объектами конфигурации, одним из которых для сервера Xorg является файл xorg.conf.
Конфигурационный файл Xorg и его разделы
По-умолчанию в большинстве систем местом расположения основной конфигурации Xorg является файл xorg.conf по пути /etc/X11/xorg.conf. Файлы конфигурации могут располагаться и в других местах и Xorg их скорее всего найдёт, поскольку просматривает целый набор каталогов для поиска конфигурации. Подробнее об этом можно почитать на страницах интерактивного руководства (man xorg) в разделах CONFIGURATION и FILES.
Для того, чтобы как-то представить себе, что являет собой конфигурация Xorg, можно выполнить следующую команду:
Однако в настоящее время во многих системах опция -probeonly является устаревшей и вместо неё можно использовать -showconfig, но она менее информативна. Следующая команда:
создаст файл конфигурации, основанный на исходных «безопасных» параметрах, которые далее можно (и нужно) приводить к фактическому соответствию для используемого в системе оборудования.
Структура и формат файла xorg.conf основаны на специфических разделах конфигурации, заключаемых между ключевыми словами Section и EndSection. В следующей таблице приведены самые основные разделы конфигурации файла xorg.conf:
Раздел Описание Device Содержит параметры конфигурации о видеоплате, её драйвере и другом оборудовании Monitor Определяет параметры для используемого монитора, такие как синхронизация, разрешения дисплеев и т. д. InputDevice Описывает устройства ввода — клавиатуры и мыши ServerLayout Задаёт параметры связывания устройства ввода с экранами и определяет позиционирование экранов относительно друг друга Module Задаёт динамически загружаемые модули для ускоренной графики, визуализаторов шрифтов и т. д. ServerFlags Хранит главные конфигурационные параметры Х-сервера Screen Связывает используемый монитор с видеоплатой (Device), а также определяет значения разрешений и глубину цвета, доступные в данной конфигурации Разделы файла xorg.conf подчинены иерархии по уровню использования в системе. Так например, раздел Device является самым «нижним» уровнем, далее следуют Monitor, затем Screen и на самой вершине — ServerLayout. Этот принцип удобно использовать в задании конфигурации Xorg, поскольку данный подход легко адаптировать для разных систем с разным аппаратным обеспечением. Суть подхода заключается в том, чтобы начинать задание конфигурации с самых «нижних» разделов, постепенно продвигаясь наверх.
На следующем рисунке изображена схема иерархии разделов конфигурации файла xorg.conf, из которой видно как из комбинации физического дисплея Monitor и видеоплаты Device формируются экраны Screen. А совокупность экранов и устройств ввода образуют единую структуру SrverLayout, которых может быть несколько. Однако использоваться для одного экземпляра X-сервера может только одна.
Следует заметить, что некоторые из разделов xorg.conf являются стандартными и даже универсальными для разных систем и оборудования. В свою очередь разделы Device, Monitor, Screen, InputDevice, а также ServerLayout требуют задания эксклюзивной конфигурации.
Раздел Device
В этом разделе указываются видеоустройство (видеокарта), а также соответствующий видеоустройству драйвер. Каждая запись (настроййка) делается отдельной строкой и выглядит примерно так:
Следует обратить внимание на то, что драйвер будет подключен только в том случае, если в соответствующем разделе Screen имеется корректная ссылка на соответствующее видеоустройство.
Не лишним будет ознакомиться с информацией из справочного руководства для драйвера. В данном примере команда man amdgpu выведет основную информацию о поддерживаемых драйвером amdgpu устройствах, а также список и описание опций для настройки и управления режимами работы (отключение/включение аппаратного ускорения, вертикальной синхронизации, режима FreeSync и т. д.) видеокарты AMD Vega 64.
Раздел Monitor
Для того, чтобы X-сервер корректно управлял мониторами, подключенными к системе, ему необходима некоторая информация о них, а именно:
- идентификатор монитора;
- опции управления;
- частоты горизонтальной и вертикальной развертки (для CRT-мониторов).
Хотя последний пункт и необязателен для современных мониторов, однако и для них он может быть полезным. Пример записи из секции Monitor:
Строка Identifier определяет имя, по которому диспетчер дисплеев будет ссылаться на данный монитор. Опция «DPMS» позволяет X-серверу автоматически отключать питание монитора используя для этого сигналы управления питанием для лучшего энергосбережения.
Значения для параметров HorizSync и VertRefresh стоит брать из руководства по эксплуатации монитора. Обычно здесь указываются диапазоны частот.
Раздел Screen
В данном разделе формируются доступные дисплеи из связки видеоустройства и монитора, описанных в предыдущих разделах более «низкого» уровня, согласно вышеупомянутой иерархии разделов файла xorg.conf. Также в этом разделе приводятся несколько записей, каждая из которых связывает в единый дисплей (которым потом и управляет менеджер дисплеев) видеокарту и монитор при определённой глубине цвета. Пример раздела Screen:
Как можно видеть, в данном примере имеются подразделы — для каждой глубины цвета отдельно. А значение по-умолчанию задаётся опцией DefaultDepth.
Для выбора определённых установок (заданных в подразделах) с соответствующими разрешением и глубиной цвета специальные клавиатурные комбинации (подробнее на соответствующих man-страницах) X-сервера. Однако он способен самостоятельно подобрать оптимальный режим.
Раздел InputDevice
В этом разделе описываются устройства ввода, например клавиатура и мышь. Каждое устройство описывается в собственном разделе InputDevice, в котором, как и по аналогии с другими разделами задаётся идентификатор устройства. Пример описания клавиатуры:
Назначение всех опций становится понятным из самого имени опции, в частности опция AutoRepeat задаёт интервал, в течении которого нужно удерживать клавишу, чтобы начался повторный ввод символа, а также с какой скоростью будет производиться повтор ввода.
Типичная запись раздела InputDevice для мыши может выглядеть так:
Файл устройства мыши задаётся опцией Device. Для указания системе, что данная мышь используется как основное указывающее устройство определяется значение CorePointer. Для указания протокола связи с мышью (который зависит от конкретной модели и производителя) существует параметр Protocol – в данном случае IMPS/2. Если после задания конфигурации для мыши с ней возникают проблемы, то необходимо в первую очередь попробовать использовать другие протоколы связи: ExplorerPS/2 (для мышей с 3-мя и более кнопками), а также VUID. Если вместо значения Protocol задать значение auto, то X-серевер самостоятельно попытается определить оптимальный протокол для используемой мыши.
Для эмуляции работы 3-й кнопки мыши (нажатие двух кнопок интерпретируется как нажатие 3-й) существует параметр Emulate3Buttons. Для улучшенной поддержки колёсика, а также для работы джойстиков применяется параметр ZaxisMapping.
Раздел ServerLayout
Как уже ранее отмечалось, раздел ServerLayout объединяет в единую компоновку параметры из других разделов файла xorg.conf. Компоновок ServerLayout может быть определено несколько — для каждой аппаратной платформы своя, которая определяет дисплей (не путать с мониторами) конкретного экземпляра X-серевера. Компоновка идентифицируется опцией Identifier:
Когда к видеокарте подключено несколько мониторов, то они должны связываться с определённым направлением относительно друг друга. Например, как в приведённом примере экран «Screen 1» расположен левее экрана «Screen 2». Опциями InputDevice определяются, как видно, устройства ввода, используемые для данной компоновки.
Ниже следуют строки, задающие настройки для энергосберегающего режима, используемого для конкретной аппаратной платформы, которой соответствует компоновка «Simple Layout». Обычно используемая компоновка определяется в командной строке X-сервера.
Конфигурирование утилитой xrandr
Для сервера Xorg существуют функциональные модули расширений, упрощающие конфигурирование. Одним из таких расширений является утилита xrandr. Она позволяет без ручного копания в файле xorg.conf задать требуемую компоновку X-сервера, выполнив всю рутинную работу. При выполнении без аргументов утилита xrandr выводит информацию о текущей компоновке, включающей в себя данные о подключенных мониторах и доступных им разрешениях и режимах работы:
Для задания произвольной конфигурации можно использовать команду xrandr, например со следующими аргументами:
Утилиту xrandr можно запускать автоматически во время запуска X-сервера. Для этого соответствующую команду нужно поместить в файл
Какие здесь можно сделать выводы? Конфигурирование X-сервера — задача довольно сложная, но ещё сложнее вручную копаться в синтаксисе и формате файла xorg.conf. Поэтому для облегчения и экономии времени по настройке Xorg стоит использовать только утилиту xrandr или подобные ей. Вместе с тем, однако, нужно обязательно разобраться в основах работы конфигурации X-сервера, вручную настроив хотя бы пару компоновок. В дальнейшем это позволит смело и уверенно использовать такие утилиты как xrandr, при этом понимая, что и как они делают и, таким образом, более полно контролировать ситуацию.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Локальный запуск X-клиентов
Поэтому для автоматизации запуска X-сервера и всех клиентов X-сеанса пользователя предназначается специальная команда xinit, проиллюстрированная в листинге ниже.
Запуск сеанса iceWM с отображением на сервере Xnest
$ ps f
Запускатель xinit может быть сконфигурирован пользовательскими dot-файлами -/.xinitrc и
/.xserverrc, представляющими собой сценарии командного интерпретатора, которые запускают, клиентскую и серверную части оконной системы соответственно.
В примере из листинга ниже показан сценарий .xserverrc, позволяющий xinit использовать виртуальный X-сервер Xnest по умолчанию на указанном дисплее, что сокращает командную строку запуска.
Запуск сеанса TWM с отображением на сервере «по умолчанию» (Xnest)
$ ps f
В примере из листинга ниже показан сценарий .xinitrc, позволяющий xinit использовать X-сеанс среды KDE по умолчанию, что еще более сокращает командную строку запуска.
Запуск локальной X Window System (окружение KDE с отображением на сервере Xnest)
$ cat .xserverrc
$ cat .xinitrc
$ ps f
31004 pts/2 S 0:00 | \_ /bin/sh /usr/bin/startkde
31064 pts/2 S 0:00 | \_ kwrapper4 ksmserver
31179 pts/2 R+ 0:00 \_ ps fНужно заметить, что все три пользовательских сеанса, запущенных из листингов выше, могут существовать одновременно, т. к. используют разные экземпляры X-сервера.
Дистанционный запуск X-клиентов
Оконная система X изначально: проектировалась для распределенной работы ее компонент на различных узлах сети, что достаточно широко используется на практике, когда нужно запускать графические приложения на удаленном узле, их окна отображать на локальном дисплее.
В большинстве случаев для дистанционного запуска используется ssh. Попытка «прямого» запуска xeyes на узле centos от лица пользователя lich не увенчалась успехом потому, что в большинстве инсталляций аппаратный X-сервер на дисплее :0 не принимает сетевые соединения.
Попытка запуска локального виртуального сервера Xnest на дисплее :1 с перенаправлением ему вывода дистанционного xeyes тоже оказалась неудачной, но уже по другим причинам.
Запуск дистанционного X-клиента
$ Xnest :1 &
No protocol specified
При сетевом взаимодействии X-клиентов и X-сервера для аутентификации клиентских подключений используется механизм, основанный на предъявлении общего (известного обеим сторонам) «секрета», называемого «волшебной печенькой» (см. W:[magic cookie]), использование которых проиллюстрировано в примере ниже.
На стороне сервера «печеньки» всех клиентов, которым разрешено подключение, размещаются при помощи утилиты xauth в «банке с печеньками» (jar), откуда извлекаются сервером для проверки при подключении клиента. На стороне клиента «печеньки» при помощи той же утилиты xauth размещаются в «банке» -/.Xauthority, откуда извлекаются библиотекой Xlib для предъявления серверу при соединении с ним.
Аутентификация дистанционного X-клиента
$ mcookie
8f36c904dc0c9934c506c21ea7860eb2
$ xauth -f cookie-jar
xauth: file cookie-jar does not exist Using authority file cookie-jar
xauth> add ubuntu:1 MIT-MAGIC-C00KIE-1 8f36c904dc0c9934c506c21ea786Oeb2↵
xauth> exit↵
Writing authority file cookie-jar
$ Xnest :1 -auth cookie-jar &
Last login: Fri Jan 8 17:43:04 2016 from ubuntu
xauth: file /home/lich/.Xauthority does not exist
Using authority file /hone/lich/.Xauthority
xauth> add ubuntu.local:1 MIT-MAGIC-COOKIE-1 8f36c904dc0c9934c506c21ea7860eb2↵
xauth> exit↵
]$ logout
onnection to centos closed.
Необходимость установки общего секрета и переменной окружения display и необходимость запуска дополнительного виртуального X-сервера (или необходимость активации приема сетевых соединений аппаратным сервером) делают «ручной» запуск дистанционных X-клиентов неудобным «чуть более, чем полностью».
В примере из листинга ниже показано поведение SSH-сервера при туннелировании X-протокола. По запросу (-x) от SSH-клиента SSH-сервер начинает эмулировать поведение X-сервера, устанавливает О переменную окружения display, указывающую на «дисплей» :10 на «том же» узле localhost, и создает «волшебную печеньку» для этого дисплея.
При последующем запуске X-клиента xeyes им будет установлено соединение с «SSH-эмулятором» X-сервера на localhost: 10, а SSH-сервер перенаправит (туннелирует) это соединение X-протокола обратно SSH-клиенту внутри зашифрованного соединения SSH.
SSH-туннелирование X-протокола (SSH-сервер)
Last login: Fri Jan 8 17:48:34 2016 from ubuntu
]$ echo $DISPLAY
]$ sudo lsof -nP -i 4:6010
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
]$ logout
Connection to centos closed.
Листинг ниже иллюстрирует поведение SSH-клиента в режиме (-X) X-туннелирования, при котором он эмулирует «Х-клиента» и соединяется с аппаратным (!) Х-сервером через локальный сокет /tmp/.x11-unix/X0.
При получении от SSH-сервера перенаправленных соединений X-протокола они ретранслируются SSH-эмулятором «X-клиента» локальному X-серверу, тем самым вывод дистанционных X-клиентов изображается в окнах локального X-сервера.
SSH-туннелирование X-протокола (SSH-клиент)
Так как SSH-туннелирование X-протокола позволяет перенаправлять любое количество X-соединений внутри одного SSH-соединения, то дистанционно можно запускать целые сеансы пользовательских сред, таких как GNOME с использованием xinit и виртуального X-сервера Xnest.
Запуск дистанционного сеанса GNOME с отображением на локальном сервере Xnest
$ ps f
Управление X-дисплеями: XDMCP-менеджер и протокол
В большинстве современных инсталляций Linux работа пользователей в системе осуществляется сразу с использованием оконной системы X и какой-либо пользовательской среды, например GNOME.
Оконная система запускается сразу при старте операционной системы и не требует использования xinit или startx.
Если при работе в автоматически запущенной оконной системе проследить дерево процессов от командного интерпретатора до прародителя процессов init, то обнаружится менеджер дисплеев (например, lightdm), осуществляющий запуск пользовательского сеанса в (gnome-session).
Более того, аппаратный -сервер дисплея :0 тоже окажется запущенным этим менеджером.
Менеджер дисплеев является специальной компонентой оконной системы, управляющей автоматическим запуском ее X-серверов и X-сеансов. Именно он запускает аппаратные X-серверы для обслуживания дисплеев в указанном количестве (по умолчанию один дисплей :0), а затем «графическим» образом производит аутентификацию пользователя в системе и запускает менеджер сеансов пользовательской среды.
Кроме этого, менеджер дисплеев предназначен и для запуска дистанционных пользовательских X-сеансов, но делает это при помощи специального протокола W:[XDMCP], а не посредством протокола SSH, как при «ручном» дистанционном их запуске.
В листинге ниже показано дистанционное подключение виртуального X-сервера Xnest с узла terminal к узлу ubuntu.local по протоколу XDMCP (-query), в результате чего менеджер дисплеев lightdm (при помощи X-протокола) отобразил экран аутентификации пользователей в системе узла ubuntu. При успешной аутентификации пользователя будет запущен его X-сеанс на узле ubuntu.local так, что вывод всех X-клиентов будет направлен на дистанционный X-сервер узла terminal.
Дистанционный графический вход в ubuntu
$ sudo lsof -p 32494 -a -i4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
$ Xnest :1 -query ubuntu.local
Надо заметить, что при использовании дистанционного XDMCP-запуска данные XDMCP- и X-протоколов при передаче в публичной сети оказываются никак не защищены (включая согласование «волшебной печеньки» и ее последующее использование), поэтому на практике безальтернативно используют SSH-запуск дистанционных сеансов с туннелированием X-протокола внутри криптографически защищенного SSH-соединения.
За отрисовку всех графических элементов в Linux отвечает графический сервер. Он реализует интерфейс прослойки между драйверами видеокарты и различными программами, которые работают с графикой.
В самых современных дистрибутивах на замену Xorg серверу пришел новый дисплейный сервер Wayland. Но он все еще находится в активной разработке и не совсем готов к постоянному использованию. Поэтому Xorg все еще применяется в большинстве дистрибутивов.
После установки видеокарта работает достаточно хорошо и настроек по умолчанию в большинстве случаев хватает, но иногда нужно изменить некоторые параметры. Мы не будем рассматривать установку драйверов. В этой статье мы сосредоточимся на том, как выполняется настройка видеокарты linux через xorg.conf.
Настройка видеокарты Linux c помощью xorg.conf
Конфигурационный файл xorg.conf - это обычный текстовый файл, в котором хранятся параметры работы Xorg сервера. Сюда входят настройки дисплея, мыши, видеокарты и клавиатуры. В былые времена этот файл был очень большим и сложным, но со временем его функции были перенесены в другие компоненты системы. Поэтому в последнее время он был видоизменен, и упрощен. Во многих дистрибутивах вообще такого файла нет, а вся конфигурация хранится в бинарном формате.
Но настройка xorg linux может все еще понадобиться, если вы хотите сделать нестандартные настройки, повысить частоту обновления экрана, изменить расширение экрана, увеличить производительность и многое другое.
Создание Xorg.conf
Обычно, этот файл размещен в директории /etc/X11/xorg.conf. Но если в вашем дистрибутиве его нет, можно без проблем создать xorg.conf на основе журнала.
Сначала скопируйте файл журнала для новой сессии:
cp /var/log/Xorg.0.log /var/log/Xorg.1.log
Xorg -configure :1
Программа проанализирует файл лога, и на его основе создаст новый файл /etc/X11/xorg.conf учитывая конфигурацию вашей системы. В вашем домашнем каталоге появиться файл xorg.conf.new, который нужно скопировать в /etc/X11/:
cp xorg.conf.new /etc/X11/
Синтаксис конфигурационного файла
Перед тем как переходить к настройке xorg.conf нужно разобраться в его синтаксисе, чтобы вы могли немного ориентироваться в самом файле. X сервер отвечает за все интерактивные связи во время сессии. Поэтому конфигурационный файл разбит на секции, несколько из них отвечают за работу с дисплеем, другие за мышь и клавиатуру. Рассмотрим основные секции файла:
- Module - в этом разделе описываются подключение модулей, расширяющих функциональность видео драйвера. Например, GLX модуль добавляет 3D ускорение, а модули Type1 и Freetype используются для рендеринга шрифтов;
- ServerLayout - в этой секции указаны имена трех самых необходимых устройств для каждой рабочей сессии Xorg - имена мыши, клавиатуры и экрана, которые могут использоваться в других местах файла;
- InputDevice - в xorg.conf обычно есть две секции InputDevice, первая для мыши и вторая для клавиатуры. Большинство мышей работают отлично по умолчанию, здесь понадобиться что-то менять только если вы захотите добавить дополнительные возможности;
- Monitor - в этой секции перечислены все настройки вашего экрана, один из наиболее важных параметров, частота горизонтальной развертки HorizSync и вертикального обновления VertRefresh, именно на основе них рассчитывается разрешение экрана. Также можно жестко задать разрешение с помощью строки ModeLine;
- Device - тут перечислено все ваше графическое оборудование вместе с драйверами, которые используются. Чаще всего, это nv с открытым исходным кодом для NVIDIA, или fglrx для карт от AMD. Имя драйвера Intel будет зависеть от версии вашей карты, например, i810.
- Screen - здесь расположены все настройки вашего монитора и других графических устройств. Вы можете использовать эту секцию, например, для настройки нескольких экранов.
Настройка экрана xorg
Большинство параметров вашего экрана система получает с помощью технологии EDID или Extended Display Identification Data. Это информация, переданная дисплеем видеокарте. Здесь обычно содержится модель, производитель, такйминги, разрешение и размер дисплея. Xorg использует эти параметры для выбора оптимального разрешения экрана и глубины цвета.
Но иногда информация из EDID может быть неточной или неверной. Тогда вы можете установить нужные параметры вручную через xorg.conf. Но будьте осторожны, если ваш экран не поддерживает некоторые параметры, вы можете его повредить. Характеристики каждого отдельного устройства можно найти в интернете или же в инструкции от производителя.
Например, вот секция Monitor с настройкой вертикальной и горизонтальной частот, а также разрешения:
Identifier "Monitor0"
VendorName "Unknown"
ModelName "DFP-0"
HorizSync 28.0 - 72.0
VertRefresh 43.0 - 60.0
ModeLine "1440x900_60.00" 106.5 1440 1520 1672 1904 900 901 904 932 -hsync +vsyncДобавив такие опции в секцию Device, вы можете отключить использование EDID:
Option "UseEDIDFreqs" "FALSE"
Option "UseEDIDDpi" "FALSE"
Option "ModeValidation" "NoEdidModes"Наиболее важное значение - это две частоты, которые определяют диапазон работы устройства. Строка ModeLIne необязательна, поскольку она вычисляется автоматически, но если X сервер задает значения неверно, вы можете их прописать жестко в этой строке.
Настройка видеокарты в xorg.conf
У драйверов видеокарт ест множество различных полезных опций, которые вы можете настроить с помощью xorg.conf. Большинство из них специфичны для конкретного производителя видеокарт. Например, есть множество настроек для видеокарт NVIDIA, но с другой стороны карты от ATI не настраиваются через этот файл. Драйвера с открытым исходным кодом от Intel имеют только несколько настроек. Дальше будет рассмотрена настройка видеокарты linux для различных производителей.
Настройка Nvidia
У видеокарт NVIDIA есть множество настроек, которые можно указать в xorg.conf. Каждая строка состоит из ключа и значения, ее можно разместить в секции Screen или Device:
- Option "NoLogo" "true" - во время инициализации драйвера показывается логотип NVIDIA. Это занимает некоторое время, поэтому с помощью такой строки можно отключить логотип;
- Option "LogoPath" "адрес_файла" - вы можете заменить логотип NVIDIA на свое изображение, для этого просто укажите его адрес в этой строке;
- Option "CursorShadow" "true" - если вы хотите видеть тень вокруг курсора, включите эту опцию. Тут есть два дополнительных параметра CursorShadowXOffset и CursorShadowYOffset, которые позволяют установить положение тени;
- Option "Coolbits" "true" - эта опция позволяет включить возможность разгона частоты процессора и скорости памяти вашей видеокарты. Но вам нужно быть аккуратным с этим параметром, поскольку так вы можете повредить сове оборудование. Параметры разгона будут отображаться в утилите nvidia-config;
- Option "DPI" "75 x 85" - если значение DPI (количество точек на дюйм) установлено неверно, то это может повлиять на правильность отображения шрифтов. Обычно, Xorg вычисляет этот параметр на основе EDID, но вы можете установить его вручную. Например, для монитора с разрешением ,440x900 и физическим размером 16x10 дюймов, значение DPI будет составлять (1,440/16)x(900/10) = 90x90.
Настройка видеокарты Intel
Графическими картами от Intel не всегда поддерживается настройка xorg.conf. Поэтому вам нужно проверить каждую из опций чтобы увидеть дает ли она какой-либо результат. Опции нужно добавлять в раздел Device:
- Option "AccelMethod" "EXA" - эта опция позволяет включить новую архитектуру ускорения EXA. Она поддерживается в большинстве интегрированных карт Intel 943/940 и позволяет улучшить скорость композитинга.
- Option "MigrationHeuristic" "greedy" - позволяет уменьшить использование видеопамяти на хранение различных текстур, что повышает общую производительность;
- Option "TripleBuffer" "true" - этот параметр включает использование более совершенного метода двойной буферизации (используется для противостояния мерцанием).
Решение проблем xorg.conf
Если у вас не получается правильно настроить xorg.conf, нужно начать с самого меньшего. Используйте драйвер Vesa. Это стандартный видеодрайвер, а значит, его поддерживает любая видеокарта. Просто установите значение опции Driver - Vesa и попробуйте запустить X сервер. Вы должны увидеть свой рабочий стол.
Но драйвер Vesa работает намного медленнее, чем более современные драйвера. Если Vea позволяет запустить графическое окружение, значит проблема в вашем графическом драйвере или в настройке.
Попробуйте использовать утилиту lspci, чтобы посмотреть точную версию своей видеокарты, обычно для старых карт нужны более старые драйвера.
Выводы
Теперь вы знаете достаточно и настройка видео Linux с помощью xorg не должна для вас быть очень сложной, даже если вы раньше этим не занимались. Особенно, если вы недовольны текущими настройками. Настройка x сервера поможет вам получить больше от старого оборудования или интегрированных карт. Только не забывайте делать резервные копии перед внесением каких-либо изменений.
Читайте также: