X сервер linux что это
Сетевые соединения X11
Есть две технологии в ИТ, которые казалось должны были исчезнуть на рубеже прошлого века, но их живучесть и удобство раз за разом отодвигает их уход со сцены. Речь идет об IPv4 и X11. Если первый из них практически во всех аспектах уступает IPv6, то преимущества Wayland, как технологии над X11 очевидны не всем. Wayland вовсе не универсален, как X Windows System, он намного более прост. Это дает ему ряд преимуществ по сравнению с иксами, но в этом же кроются его недостатки.
Если говорить о преимуществах, то это в первую очередь простота реализации и долгожданное избавление пользователей графической среды Linux от таких артефактов перерисовки, как разрывы изображения, a․ k․ a․ tearing. С этим особенно часто сталкиваются обладатели видеокарт NVidia. Хватает и недостатков и противники замены X-сервера напирают на гибкость использования сетевых возможностей в различных сценариях.
As mentioned, X is essentially a networking protocol with graphical displaying capabilities.
▍ Сетевая структура взаимодействий X-сервера
Наиболее распространенным IPC, т․ е․ способом взаимодействия между процессами, X-клиента и X-сервера, являются сокеты. Их роль в предоставлении API связи с использование TCP/IP, а также сокетов домена Unix. Помимо сокетов клиент и сервер для коммуникации могут также использовать иные каналы IPC, например MIT Shared Memory Extension.
Доменные сокеты Unix (от англ. Unix Domain Sockets, UDS) являются POSIX-механизмом IPC, с помощью которого различные процессы ОС могут взаимодействовать друг с другом. Такие сокеты эффективнее локальных TCP/IP соединений, так как не требуют дополнительных байтов в заголовке протокола. Подобно сокетам TCP/IP, доменные сокеты Unix поддерживают надёжную потоковую передачу данных с помощью SOCK_STREAM. Они также могут работать в режиме упорядоченной ( см․ SOCK_SEQPACKET) и неупорядоченной ( см․ SOCK_DGRAM) передачи датаграмм.
Рис. 1 Сетевое взаимодействие между клиентом и сервером X с помощью UDS.
UDS используют файловую систему ОС в качестве адресного пространства имён (например /tmp/my_xapp ), сами сокеты в ней всего лишь inode, а процессы обращаются к сокетам, так же, как к файлу. Однако обмен данными в активном соединении использует не файловую систему, а только буферы памяти ядра.
Рис. 2 Сетевое взаимодействие между клиентом и сервером X поверх TCP/IP.
Количество таких интерфейсов определено константой NUMTRANS в файле X11/Xtrans/Xtrans.c.
Таблица Xtransports[] определена в том же самом файле и содержит 10 элементов, таким образом NUMTRANS ≤ 10.
Проследив цепочку до системного вызова socket() находим такую последовательность транспортных процедур.
▍ Взгляд изнутри трафика между клиентом и сервером X
Запустим простейшую иксовую программу Xclock и проверим как все это работает на практике.
Рис. 3 Установка параметров соединения в сессии X11.
Рис. 4 Сетевой след соединения X11 в WireShark.
То же самое и во всех подробностях можно увидеть в tshark в текстовом формате. Так выглядит клиентский запрос X11 в сторону сервера.
Пакет с ответом со стороны X-сервера совсем не так лаконичен, в нем указаны все необходимые детали для форматирования графического вывода на экран.
▍ Удаленное подключение к X-серверу по ssh
Переходя от теории сетевых взаимодействий X Window System к практике, рассмотрим, как запустить графическое приложение на уделенном X-сервере при подключении по ssh.
/.Xauthority y. Если все нормально, то файл уже создан и проверка показывает на наличие MAGIC COOKIE.
Рис. 5 Собственно xclock, значит удаленные иксы настроены и работают.
Я стараюсь по мере возможности тестировать сеанс Wayland при каждом новом релизе KDE Plasma, несмотря на многочисленные улучшения с каждым разом, на версии kde-apps-21.04.3 работать можно лишь на Plasma-X11. В чем бы не состояли преимущества Wayland, до тех пор пока в терминале зависает команда man, хаотично прыгают элементы ниспадающего меню и блуждает внешний монитор, старый и добрый X Window System остается вне конкуренции. Надеюсь так не будет продолжаться долго.
X-сервер
Материал из Пингвиньи радостей
Содержание
X-сервер это набор пакетов обеспечивающих приём от пользователя управляющих сигналов с клавиатуры, мышки (и прочее) и отрисовку экрана(нов).
Благодаря сетевой природе, использования X- и XDMCP-протоколов, X-сервер позволяет клиентам осуществлять удалённое подключение и работу в режиме сервера терминалов.
Установка
X-сервер присутствует в хранилище пакетов Debian GNU/Linux. При развёртывании графического рабочего стола, он устанавливается автоматически. В состав X-сервера входят такие пакеты как xorg, xserver-xorg, x11-utils и так далее.
Некоторые часто используемые команды
Маркировка дисплеев
Параметр имени дисплея и переменная окружения DISPLAY имеют следующий формат:
Подключение к удалённому серверу
X-сервер имеет сетевую природу, что позволяет осуществлять подключение X-клиентам не только с локальной машины, но и с удалённой.
В качестве программ-клиентов обычно выступают Менеджеры рабочих столов с поддержкой XDMCP-аутентификации. В этом случае также необходимо, чтобы и сервер должен разрешать подключения по XDMCP.
Для настройки удалённого подключения к X-серверу с помощью X-системы
Данный способ удалённого подключения к серверу терминалов XDMCP позволяет прекратить использование на «толстых» клиентах локальной сети менеджеров рабочих столов и оставить только X-систему.
Для автоматизации подключения к серверу терминалов при запуске системы
Теперь при включении рабочей станции произойдёт подключение к менеджеру рабочих столов запущенному на сервере X-терминалов и запуск сессии авторизации.
Для осуществления удалённого подключения используются следующие порты: TCP и UDP порты 177 и TCP порты от 6000 до 6005, а при использовании XFS-сервера ещё и 7100.
X Window System CentOS
Как установить X-server
Существует несколько вариантов X серверов. Сперва рассмотрим установку MATE Desktop а затем установку Server with GUI
Установка MATE Desktop на виртуальную CentOS 7
Перед установкой иксов желательно подключиться к виртуальной машине по ssh стать суперпользователем и уже оттуда сделать
И затем непосредственно установка
systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
systemctl isolate graphical.target
После предыдущей команды в окне Virtualbox должны запуститься иксы
Установка GNOME
Или если вы хотите GNOME Desktop
sudo yum groupinstall «GNOME Desktop» «Graphical Administration Tools»
Установка Server with GUI
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Determining fastest mirrors * base: centos.mirror.far.fi * epel: mirror.cspacehostings.com * extras: centos.mirror.far.fi * updates: centos.mirror.far.fi Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Cinnamon Desktop MATE Desktop Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Available Groups: Cinnamon Compatibility Libraries Console Internet Tools Development Tools Educational Software Electronic Lab Fedora Packager General Purpose Desktop Graphical Administration Tools Haskell LXQt Desktop Legacy UNIX Compatibility MATE Milkymist Scientific Support Security Tools Smart Card Support System Administration Tools System Management TurboGears application framework Xfce Done
sudo yum groupinstall «Server with GUI»
Определить тип X
Узнать кое-что о своих иксах можно командами
Если вы хотите проверить установлен ли у вас GNOME выполните
-bash: gnome-shell: command not found
Как перезапустить X-server
Перезапустить X-server (предварительно уйдя в консоль Ctrl + Atl + F1)можно командой
Как остановить X сервер
Остановить/Запустить X-server (предварительно уйдя в консоль Ctrl + Atl + F1) можно командой
Если не знаете какой у Вас X сервер, можете попробовать:
/etc/init.d/gdm stop || /etc/init.d/gdm3 stop || /etc/init.d/kdm stop || /etc/init.d/xdm stop || /etc/init.d/lightdm stop
Если и это не помогло попробуйте варианты отсюда
Как запустить X сервер
Работает, если у Вас X-server gdm, gdm3 или kdm если у Вас что-то другое, просто замените.
Перейти из X в терминал и обратно
В CentOS по умолчанию 6 tty под консоль: 1-6 и один под X: 7.
Поэтому, нажав Ctrl-Alt[F1-F6] вы попадёте в терминал.
А нажав Ctrl-Alt-F7 в иксы.
История
X Window System — оконная система, обеспечивающая стандартные инструменты и протоколы для построения графического интерфейса пользователя. Используется в UNIX-подобных ОС.
X Window System обеспечивает базовые функции графической среды: отрисовку и перемещение окон на экране, взаимодействие с устройствами ввода, такими как, например, мышь и клавиатура.
X Window System не определяет деталей интерфейса пользователя — этим занимаются менеджеры окон, которых разработано множество. По этой причине внешний вид программ в среде X Window System может очень сильно различаться в зависимости от возможностей и настроек конкретного оконного менеджера.
В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя.
В контексте X Window System термины «клиент» и «сервер» имеют непривычное для многих пользователей значение: «сервер» означает локальный дисплей пользователя (дисплейный сервер), а «клиент» — программу, которая этот дисплей использует (она может выполняться на удалённом компьютере).
Система X Window System была разработана в Массачусетском технологическом институте (MIT) в 1984 году.
По состоянию на февраль 2016 года версия протокола — X11R7.7 — появилась в июне 2012 года.
Проект X возглавляет фонд X.Org Foundation. Референсная (или образцовая) реализация (reference implementation) системы свободно доступна на условиях лицензии MIT и подобных ей лицензий.
X Window System часто называют X11 или просто X (в разговорной речи — «иксы»)
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Янв | Март » | |||||
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 |
Графическая подсистема в 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-сервера. Вы видите что у программы нет привычной окантовки окна с кнопками свернуть, развернуть, закрыть. Дело в том, что их рисует не X-сервер, а другой процесс, который называется менеджер окон. Менеджер окон также занимается масштабированием и перемещением изображения программ. Такое разделение функций также повышает гибкость всей графической подсистемы X Window. Так как вы можете выбирать какой менеджер окон использовать для прорисовки рамок приложений.
Чтобы на нашем втором экземпляре X-сервера запустить менеджер окон по умолчанию выполните команду x-window-manager –display=0:1 и снова вернитесь на консоль где запущен второй X-сервер. Теперь вы видите вокруг часов привычную рамку и верхнюю полоску окна с тремя привычными кнопками. Окно можно масштабировать и перемещать по экрану, используя “мышь”, а также закрыть его нажав на привычный “крестик”.
Как уже было сказано, X-сервер работает с устройствами ввода/вывода информации. Основной конфигурационный файл в котором хранятся настройки X-сервера называется /etc/X11/xorg.conf. Хотя во многих современных настольных дистрибутивах этот файл пустой, так как за настройку оборудования отвечает другая подсистема, тем не менее X-сервер продолжает читать конфигурацию из этого файла. Рассмотрим этот файл, так как возможны ситуации когда параметры ваших устройств ввода/вывода будут автоматически определяться некорректно и тогда ручная правка файла /etc/X11/xorg.conf может помочь решить проблему.
Файл /etc/X11/xorg.conf разбит на секции при помощи ключевых слов section и end section. Рассмотрим наиболее важные секции.
В секции “ServerFlags” указываются опции с которыми запускается X-сервер:
В секции “Files” указываются пути к файлам которые могут понадобиться в работе X-сервера. Например, здесь указываются путь к шрифтам X-сервера. Причем путь может указывать на другой компьютер в сети на котором установлен XFS (X Font Server):
В секции “Modules” указываются модули, которые будут подгружаться во время загрузки X-сервера:
Секция “InputDevice“. Таких секций может быть несколько и отличаются они уникальным идентификатором (Identifier). Одна секция “Input Device” отвечает за одно устройство ввода. То есть в настольных компьютерах есть как минимум две такие секции: одна для описания клавиатуры, и одна для описания манипулятора “мышь”.
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
Небольшое замечание к секции “InputDevice” для клавиатуры. Именно в этой секции определяются раскладки клавиатуры для графического окружения. Обращаю на это ваше внимание, так как для алфавитно-цифрового режима (виртуальные консоли, например) раскладку поддерживает драйвер терминала встроенный в ядро.
Если у вас есть манипулятор “мышь” с более чем тремя кнопками и дополнительные кнопки не работают, то реакцию на эти дополнительные кнопки можно определить в секции “InputDevice” для этого устройства. Например, параметр Option “ZAxisMapping” “4 5″ отвечает за прокрутку колесика “мышки”. Если числа 4 и 5 поменять местами, то прокрутка будет реализована в обратном направлении.
Секции “Device“, “Monitor” и “Screen” являются секциями, которые отвечают за устройства вывода информации. В секции “Device” прописана информация о видеоадаптере и драйверах для него, в секции “Monitor” описаны характеристики монитора, а в секции “Screen” характеристики экрана (разрешение и прочие). Количество этих секций в зависимости от конфигурации может быть разное, но как минимум каждая из них присутствует в единичном экземпляре в файле xorg.conf.
Section «Device»
Identifier «Intel Corporation 82815 CGC [Chipset Graphics Controller]»
Driver «i810»
BusID «PCI:0:2:0»
EndSection
Section «Screen»
Identifier «Default Screen»
Device «Intel Corporation 82815 CGC [Chipset Graphics Controller]»
Monitor «Универсальный монитор»
DefaultDepth 24
SubSection «Display»
Depth 16
Modes «1280×1024» «1024×768» «800×600»
EndSubSection
SubSection «Display»
Depth 24
Modes «1280×1024» «1024×768» «800×600»
EndSubSection
Для этого в секции “Monitor” необходимо прописать один или несколько параметров modeline. Рассмотрим для примера следующую строку:
Числа 768 771 777 806 означают ту же информацию только для вертикального разрешения. Если вы не совсем поняли, что значат эти параметры не расстраивайтесь. В любом случае вам не нужно вычислять их вручную, так как они должны быть указаны в документации к вашему монитору. И ваша задача просто найти эти параметры и правильно прописать их в строке modeline.
-vsync, -hsync или могут быть +vsync, +hsync, обозначают тип синхроимпульса. Эти параметры также берутся из документации к монитору.
Хотя такое ручное добавление параметров уже редкость, тем не менее еще может иметь место, и поэтому будьте осторожны в установке этих параметров, так как неправильная их установка может привести даже к выходу монитора из строя.
При решении проблем с запуском X-сервера, много информации можно почерпнуть из файла /var/log/Xorg.0.log, в котором можно увидеть все сообщения о процессе запуска X-сервера.
Давайте теперь более подробно поговорим о дисплей менеджерах (Display managers) или менеджерах экрана.
Термином графическая оболочка очень часто называют как оконные менеджеры (WindowMaker, IceWM, Blackbox, JWM и другие), так и полнофункциональные графические оболочки (GNOME, KDE, XFCE и другие).
Конфигурационные файлы дисплей менеджера xdm, расположены в каталоге /etc/X11/xdm/. Поле успешной регистрации пользователя в системе с помощью xdm, будет выполнятся скрипт Xsession, расположенный в /etc/X11/xdm/. Из этого скрипта будет выполнен запуск скрипта /etc/X11/Xsession, который продолжит загрузку графической подсистемы.
Конфигурационные файлы для дисплей менеджера gdm расположены в каталоге /etc/gdm/, а для kdm в каталоге /etc/kde4/kdm (для четвертой версии KDE).
Если вы работаете в алфавитно-цифровом режиме, то для перехода в графический режим достаточно выполнить команду startx. В результате будет запущен графическая среда по умолчанию. Дисплей менеджер в процессе выполнения скрипта startx, не запускается, так как пользователь уже аутентифицировался в системе при помощи программы getty
X сервер linux что это
Изо всех графических пользовательских интерфейсов ОС UNIX лишь X Window server удалось выйти за рамки внутрикорпоративного продукта. Возможно, секрет в том, что этот интерфейс лучше других соответствует природе UNIX.
Учитывая принципы функционирования X-протокола, будет естественным принять решение, свойственное сетевым технологиям,- разделить клиентскую и серверную части физически, то есть разместить их на разных машинах. Такая организация вычислительного процесса обычно позволяет более эффективно использовать компьютерный парк организации: все ресурсоемкие операции выполняются на специально выделенном мощном компьютере.
Мы рассмотрим два варианта организации X-терминалов на ПК, выступающих в роли «толстых клиентов», то есть компьютеров, в оперативной памяти которых выполняется операционная система. В нашем случае это Linux.
Бездисковый X терминал.Компьютер, который загружается с использованием памяти EPROM или подобной ей и устанавливает примитивный контакт с сервером для загрузки операционной системы в оперативную память. В дальнейшем ведет себя как «немой» X-терминал.
Рабочая X-станция. Компьютер, на котором ОС, X-Server и графическая сессия загружаются самостоятельно. Эта станция может вести себя как «немой» X-терминал.
Сервер графических приложений. Здесь: компьютер, на котором работают приложения, осуществляющие ввод/вывод с удаленного X-терминала.
X-сервер. Программа, выполняемая на компьютере, к которому непосредственно подключены манипуляторы ввода (клавиатура, мышь и др.) и дисплей. X-сервер предоставляет другим программам интерфейс графического ввода/вывода.
X-клиент. Программа, которой для осуществления процедур ввода/вывода нужен X-сервер. Она может выполняться локально, то есть на том же компьютере, к которому подключены манипуляторы, так и удаленно, обмениваясь данными с X-сервером через сетевое соединение.
Теперь рассмотрим несколько моментов, непосредственно связанных с функционированием X-терминалов. Мы привыкли, что в текстовом режиме процессами управляет пользовательская оболочка (такая как sh или bash). Когда компьютер работает в графическом режиме, ее заменяет интерфейс X Display Manager (XDM). Он запускается с привилегиями root, выводит окно регистрации и открывает так называемую сессию пользователя, сконфигурированную надлежащим образом.
Наиболее эффективным способом конфигурирования сессии X-станции является использование протокола XDMCP (X Display Manager Control Protocol). Эта программа работает на сервере графических приложений и управляет сессиями, выделяемыми X-серверам, работающим на терминалах. Однако следует помнить, что такой способ организации X-терминалов уязвим для атак, основанных на прослушивании сети, поскольку данные между компьютерами передаются в незашифрованном виде. Рекомендуется использовать технологии, описанные в этой статье, только в доверяемых сетях.
Прием XDM-сервером запроса от X-сервера
Существует две основные возможности взаимодействия X Display Manager (XDM) и X-сервера:
В первом случае X-сервер, запущенный на терминальной рабочей станции, должен генерировать в формате XDMCP запрос с просьбой выделить окно регистрации и открыть графическую сессию на определенном хосте. До получения такого запроса XDM, расположенный на сервере графических приложений, не предпринимает никаких действий.
Запрос может быть осуществлен следующими способами.
Настройка X-сервера XDM-сервером
Для того чтобы создать группу компьютеров, которые будут работать с единственным в сети сервером приложений, этот сервер можно сконфигурировать так, чтобы он автоматически направлял XDM на X-терминалы («немые» X-терминалы).
Поведение X Display Menager определяется следующими системными файлами, которые находятся в каталоге /etc/X11/xdm (для RedHat-совместимых ОС):
В файле xdm-config описано расположение других основных конфигурационных файлов, а также скриптов, выполняемых при инициализации сессии. При запуске системы XDM инициализируется процедурой init с параметрами, указанными в /etc/inittab или с помощью скрипта startx.
В некоторых дистрибутивах Linux (в том числе в RH7.1 и RH7.2) файл xdm-config в целях безопасности сконфигурирован таким образом, чтобы не принимать запросы от терминалов на открытие XDM. Для того чтобы сервер смог принимать запросы, необходимо изменить следующий фрагмент:
Строку DisplayManager.requestPort: 0 нужно закомментировать, чтобы получилось:
В файле Xaccess определены хосты и шаблоны для контроля прямого, косвенного и широковещательного запроса XDMCP.
В файле Xresources описаны ресурсы, используемые окном XDM,- размер, цвет, шрифт и др.
Для эффективной работы терминалов желательно настроить их на автоматический запуск X-сервера с необходимыми параметрами. Как известно, в Linux существует понятие «уровень выполнения» (runlevel). При запуске системы процесс init анализирует файл /etc/inittab и определяет, на какой уровень загружать ОС. Обычно это уровень 3 (текстовый режим) или 5 (графический). Для выбора по умолчанию уровня 5 необходимо изменить inittab, чтобы строка id:3:initdefault: выглядела так:
Теперь X-сервер запустится автоматически при загрузке ПК.
В этом же файле находится строка с параметрами, которые передаются в систему при ее работе на уровне 5:
Эти параметры также можно изменять в зависимости от ситуации.
Для KDM в файл /usr/share/config/kde/kdmrc нужно внести следующие изменения:
Для GDM нужно внести изменения в файл /etc/X11/gdm/gdm.conf:
XDM-сервер графических приложений управляет X-сервером терминала
Теперь рассмотрим настройку системы, в которой сервер графических приложений «раздает» сеансы «немым» терминалам.
В файле Xservers сервера графических приложений нужно указать список хостов, которые к нему подключены:
Строка :0 local /usr/X11R6/bin/X стандартна и означает, что XDM работает на локальном ПК. Две другие строки описывают терминалы, которым будет отсылаться приглашение XDM. Как видим, хост может быть задан как по имени, так и по адресу. Цифра 0 указывает на номер дисплея и подходит практически всегда, кроме случая, когда на компьютере выполняется сразу несколько X-серверов или подключено несколько дисплеев.
Терминал запускается путем загрузки X-сервера без клиентов и с параметром, отменяющим контроль доступа с удаленных машин. Для этого нужно в файле /etc/inittab на компьютере, используемом в качестве терминала («wolf»), заменить строку:
на следующий фрагмент:
После перезагрузки сервера приложений и терминала сервер должен запустить на консоли терминала XDM-сессию. Аналогичные действия, естественно, нужно выполнить и с машиной 192.168.0.11.
Прием XDM-сервером графических приложений прямого запроса от X-сервера терминала
В приведенном примере разрешены запросы от хоста wolf, хоста 192.168.0.15 (только прямые запросы) и всего домена socrat.com, кроме хоста guest (это правило имеет приоритет перед доменным). Для того чтобы разрешить прямой и широковещательный запрос всем хостам, нужно изменить файл Xaccess следующим образом:
Для запуска X-сервера с функцией прямого запроса к XDM нужно внести изменения в файл inittab машины wolf:
Прием XDM-сервером графических приложений широковещательного запроса от X-терминала
В этом случае настройка подобна предыдущей. В файле Xaccess снова разрешаем широковещательный опрос XDM (как в предыдущем разделе), а X-сервер запускаем строкой из inittab:
LTSP: готовое решение для Linux-терминалов
Если компьютер выступает в роли терминала, перекладывая заботу о выполнении задач на сервер приложений, то возникает один интересный эффект. Пока пользователь находится в графической среде, он работает в системном окружении удаленного сервера и, таким образом, теряет доступ к локальным файловым ресурсам, в том числе и к жесткому диску. Получается, что последний нужен на компьютере только для загрузки ОС и запуска X-сервера.
А нельзя ли обойтись без него? Оказывается, можно. Такие ПК называются бездисковыми рабочими станциями. Принцип их работы основан на расширении функций стандартного BIOS путем подключения ROM сетевой платы. Если в память чипа ROM записать программу начальной загрузки, то с ее помощью можно обращаться к ОС сервера по сети.
Если мы хотим загружать на терминалы Linux, то нужно решить две важные задачи: предоставить возможность загрузки по сети ядра Linux и создать на сервере структуру директорий, которая будет служить корневой структурой подключаемых терминалов. Первая задача решается путем динамического конфигурирования сетевого интерфейса (dhcp-запроса) и протокола TFTP (Trivial File Transfer Protocol, примитивный протокол передачи файлов). Корневой раздел монтируется с сервера по протоколу NFS. Этим же способом создается раздел подкачки.
Загрузка бездискового терминала: теория
Загрузка бездискового терминала происходит следующим образом.
В ходе выполнения этой операции обнаруживается Etherboot BOOTROM сетевой карты. После завершения POST начинает выполняться записанный в нем код. Etherboot находит сетевую карту и инициализирует ее.
Затем программа сетевой загрузки инициирует DHCP-запрос, передавая в нем путем широковещательной рассылки свой MAC-адрес. Сервер принимает запрос, находит конфигурацию, соответствующую данному MAC-адресу, и возвращает данные, необходимые для конфигурирования сетевого интерфейса:
Etherboot конфигурирует TCP/IP-параметры сетевого интерфейса, используя информацию из ответа на DHCP-запрос.
Используя TFTP, ядро ОС загружается в память. По окончании загрузки управление переходит к ядру, и оно выполняет стандартную инициализацию локального оборудования.
К моменту завершения работы ядра на RAM-диске при помощи опции root=/dev/ram0 монтируется корневая файловая система.
Обычно при завершении своей работы ядро загружает программу init, которая продолжает загрузку ОС. В данном пакете используется ядро со встроенной опцией init=/linuxrc, и вместо init вызывается срипт linuxrc.
Этот скрипт сканирует PCI-слоты. Если в одном из них он обнаруживает сетевую карту и идентифицирует ее с помощью файла описаний /etc/niclist, то загружается соответствующий модуль.
Затем терминал генерирует еще один запрос к DHCP-серверу. По получении ответа он конфигурирует интерфейс eth0.
К этому моменту корневой раздел находится на RAM-диске. Теперь все готово к монтированию корня поверх NFS. Для этого в ответе на DHCP-запрос указывается путь к образу корневой системы (обычно /opt/ltsp/i386), но ядро не может просто смонтировать его в корень. Вначале сетевой ресурс монтируется как /mnt. Затем программа pivot_root перемещает /mnt в корень, а старая корневая система монтируется в директорию /oldroot. В результате этих действий образуется новая корневая система. В конце работы скрипта linuxrc вызывается обычная процедура init, которая для установки системного окружения init читает /etc/inittab.
Терминал запускается на уровне 2, согласно параметрам строки initdefault в /etc/inittab. Вначале система инициализируется скриптом rc.local. Он создает в памяти диск объемом 1 Мб и монтирует его в директорию /tmp. Туда копируются все необходимые программы, и на них создаются символические ссылки.
Если терминал сконфигурирован для использования сетевого раздела подкачки, то NFS-ресурс /var/opt/ltsp/swapfiles монтируется в точку /tmp/swapfiles. При необходимости создается файл подкачки и выполняется swapon.
Затем создается скрипт /tmp/start_ws, отвечающий за запуск X-сервера, создается конфигурационный файл демона syslog и производится его запуск.
Управление передается к процедуре init, которая читает /etc/inittab и определяет необходимый уровень загрузки. В текущей версии LTSP это уровень 2.
На уровне 2 с помощью lts.conf определяется индивидуальный уровень загрузки для каждого терминала. По умолчанию это уровень 5, который соответствует графической среде.
Установка LTSP на сервере приложений
Пакет LTSP поставляется в TAR-архивах и в RPM-пакетах и состоит из четырех следующих частей:
Перед установкой LTSP необходимо установить в системе сервисы DHCP, TFTP, NFS и PORTMAP. Их настройкой можно заняться после инсталляции основного пакета. Установка пакета выполняется при помощи следующих команд.
В результате создается rfnfkju /opt/ltsp с тремя подкаталогами: i386, templates, install_scripts. Причем каталог /opt/tsp/i386 в дальнейшем будет служить корневым для терминалов. Дальнейшую установку предлагается производить командой ltsp_initialize из каталога templates. Она внесет изменения в конфигурационные файлы перечисленных сервисов. Настоятельно рекомендуется вам сделать резервную копию следующих файлов:
Впрочем, программа сама заботится о создании резервных копий этих файлов.
Теперь все готово к выполнению команды
Но здесь есть одно замечание. Дело в том, что скрипт инициализации все равно не в состоянии полностью сконфигурировать все системные файлы. Приходится прибегать к «ручной доводке» системы. В связи с этим лучше выполнить всю работу (ее не много) самостоятельно, полностью контролируя все изменения. Это важно, если вас беспокоит целостность ОС.
Прежде всего, нужно настроить сервис TFTP.
В результате файл /etc/xinetd/tftp будет выглядеть так:
Существенная для нас информация содержится также в записи
Настройка сервиса DHCP
Интересно, что при установке этого сервиса в Red Hat конфигурационный файл не создается. Может потребоваться выполнение команды
Здесь надо оговориться о некоторых допущениях, связанных с конфигурацией локальной сети.
Предположим, в сети 192.168.0.0/255.255.255.0 для бездисковых терминалов выделены адреса с 192.168.0.200 по 192.168.0.254. Серверы LTSP и DHCP находятся на одной и той же машине с адресом 192.168.0.1. Тогда параметры DHCPD в файле /etc/dhcpd.conf могут выглядеть так:
Здесь требуются небольшие пояснения. Для удобства управления терминалами их IP-адреса выбираются по значению MAC сетевой карты в диапазоне 200-254 последнего октета. Диапазон 2-199 отдан остальным машинам, которые не требуют индивидуального контроля IP.
В первой части конфигурационного файла приведены инструкции, относящиеся ко всем компьютерам сети:
Их смысл очевиден. Далее идут записи, относящиеся к каждому терминалу в отдельности. Здесь, кстати, можно переопределить значения глобальных инструкций. Рассмотрим эту часть подробнее.
IP-адрес терминала назначается в соответствии с MAC-адресом сетевой карты:
Сетевое имя хоста указывается опцией
описывает файл, содержащий ядро ОС. Поскольку ftpt делает соответствующую папку корневой для подключаемых по этому сервису терминалов, необходимо указать только имя файла. После загрузки ядра Linux потребуется смонтировать корневой раздел, находящийся в NFS. Этот ресурс указывает опция
Поскольку на наших терминалах не предполагается использование локальных дисковых ресурсов, то демону журналирования событий системы (syslogd) требуется указать удаленный сервер, который будет принимать сообщения от него. Эта информация предоставляется с помощью опции
И еще одно замечание. Настоятельно рекомендуется записать данные о каждом терминале, загружаемом по сети, в файл /etc/hosts сервера приложений:
Впоследствии это поможет избежать многих проблем, вплоть до краха системы.
Сетевая файловая система NFS
В Red Hat сетевыми ресурсами NFS управляет файл /etc/exports. Для обеспечения работы пакета LTSP достаточно внести в него несколько строк:
Настройка демона syslog
Контроль доступа к TCP-сервисам
Если в системе производится ограничение/контроль доступа к сетевым портам посредством TCPD, необходимо открыть все необходимые сервисы для терминалов в сети. Для этого нужно внести изменения в файл /etc/host.allow:
Для того чтобы терминалы могли запрашивать у сервера сеанс XDM, нужно правильно настроить файлы /etc/X11/xdm/Xaccess и /etc/X11/xdm/x/dm-config. Кроме того, LTSP использует предварительную настройку XDM-окна, добавляя в список xdm-config скрипт Xsetup_workstation. Таким образом, список xdm-config в файле /etc/X11/xdm/xdm-config имеет следующий вид (изменения выделены жирным шрифтом):
Сам скрипт Xsetup_workstation, расположенный в файле /etc/X11/xdm/Xsetup_workstation, выглядит так:
В файле ltsp.gif находится логотип LTSP, который отображается на начальной стадии загрузки XDM.
На этом настройка сервера завершена. Переходим к подготовке терминалов.
Получение ядра сетевой загрузки Etherboot
Для того чтобы обеспечить возможность начальной загрузки бездисковой рабочей станции, необходимо создать образ загрузчика, поддерживающего необходимую сетевую карту, и записать его в EPROM.
Мы воспользуемся пакетом Etherboot, распространяемым по лицензии GNU. На помощь нам придет веб-проект, предоставляющий удобный интерфейс для загрузки etherboot-образа сетевой карты или дискеты. Дело в том, что для записи EPROM нам потребуются услуги специализированных центров, а на этапе отладки удобно воспользоваться загрузкой с флоппи-диска.
Итак, идем на сайт и выбираем версию продукта (я пользовался версией 5.06). Затем выбираем модуль сетевой карты и тип загружаемого образа (для EPROM или загрузочной дискеты). Если загружен образ дискеты, далее следует выполнить команду
Не забудьте указать правильное название загруженного файла.
Это команда Linux. В DOS следует воспользоваться утилитой RAWRITE, поставляемой с дистрибутивами Linux. Теперь все готово к загрузке терминала. Если все настроено правильно, то на экране появится приглашение XDM. Впрочем, если видеокарта не поддерживает XFree86 4.x, возможно, придется выполнить дополнительную настройку данного терминала.
Подбор X-сервера для устаревших видеокарт
Чтобы устранить эту проблему, достаточно указать в каталоге /opt/ltsp/i386/usr/X11R6/bin/ подходящий сервер. В нашем случае это программа XF86_S3V.
Единые параметры настройки терминалов
В проекте LTSP существует возможность корректировки общих и индивидуальных параметров терминалов, благодаря чему система достаточно легко адаптируется к аппаратным и программным особенностям среды. Необходимые параметры и значения хранятся в файле /opt/ltsp/i386/etc/lts.conf. Знакомство с ним мы начнем с секции [Default], определяющей значения, общие для всех подключаемых терминалов. При необходимости для отдельных терминалов эти значения могут быть переопределены:
Рассмотрим эти параметры по очереди.
SERVER = 192.168.0.1 обозначает машину, выступающую в роли сервера графических приложений.
XSERVER = auto указывает на то, что система сама определяет тип загружаемого сервера XFree86. Рекомендуется это значение не изменять.
USE_XFS = N показывает, надо ли использовать сетевой сервер X-шрифтов. Советую настроить XFS-сервер приложений так, чтобы он мог использоваться удаленными машинами (подробнее об этом будет рассказано отдельно). После этого не забудьте изменить соответствующую запись в lts.conf:
Индивидуальная настройка терминалов
Используя этот же файл, можно произвести настройку отдельного терминала, параметры которого отличаются от остальных. Для этого создается секция [terminal], где указываются дополнительные опции или опции, уже существующие в [Default]. В последнем случае локальные значения параметров «перекрывают» общие. В качестве определения [terminal] может выступать имя хоста (в этом случае оно должно быть определено в /etc/hosts или средствами DNS), IP- или MAC-адрес терминала, например [ 00:30:84:0a:62:8d], [192.168.0.200] или [term01].
Теперь можно указать, что данный компьютер использует мышь на порту COM1 и получает список шрифтов с сетевого сервера:
Важные параметры файла lts.conf
Теперь рассмотрим наиболее часто используемые параметры в конфигурации lts.conf.
XSERVER. Определяет тип X-сервера, который будет выполняться на рабочей станции. Для XFree86 4.x указывают видеомодуль, например atati ati, cirrus, i810. Для XFree86 3.3.6 надо указать имя сервера, например XF86_SVGA, XF86_S3.
X_MODE_0 : X_MODE_10. Настраивает параметры вывода на экран. Можно просто указать разрешение: X_MODE_0 = 800×600, а можно все параметры полностью:
X_MOUSE_PROTOCOL. Тип мыши. Обычно это «PS/2» или «Microsoft».
X_MOUSE_DEVICE. Порт, к которому подключена мышь: /dev/psaux для PS/2 и /dev/ttyS0 для COM1.
X_MOUSE_EMULATE3BTN. Режим «Y» соответствует эмуляции третьей кнопки мыши (нажатием двух кнопок одновременно).
USE_XFS. Использование внешнего сервера X-шрифтов.
XFS_SERVER. Имя или IP-адрес сервера шрифтов.
XF86CONFIG_FILE. Использование для терминала собственного конфигурационного файла XFree86. Можно создать для терминала term01 отдельную конфигурацию X, например в файле XF86Config.term01, который находится в папке /tftpboot/ltsp/etc. Затем нужно ввести в секции [term01] параметр, указывающий на этот файл с индивидуальными параметрами настройки X-сервера терминала:
XkbSymbols. Таблица скан-кодов. По умолчанию это «us(pc101)», но ее можно заменить на «en_US(pc105)+ru».
Запуск X-клиента по шифрованному каналу SSH | ||
Установка сетевого сервера X-шрифтов | |
При использовании группы X-терминалов, подключаемых к серверу приложений, последний часто используют в качестве сервера шрифтов. Тогда уделенные X-серверы получают единообразный набор шрифтов, что обеспечивает еще один уровень централизованного администрирования. Для реализации этой идеи нужно сначала подготовить сам сервер к выполнению этой роли. Для этого демон xfs должен запускаться в режиме, допускающем обращение сетевых компьютеров к его ресурсам. С этой целью можно использовать конфигурационный файл /etc/X11/fs/config. Деактивируем в нем параметр no-listen = tcp: # don’t listen to TCP ports by default for security reasons Затем надо установить загрузку демона xfs с ключом, предполагающим его конфигурирование необходимым файлом. В системе RH можно исправить стартовый сценарий /etc/rc.d/init.d/xfs, заменив в секции start() строчку Для использования сетевого сервера шрифтов конфигурация X-сервера предусматривает параметр FontPath «unix/:7100» в файле XF86Config и XF86Config-4. Это значение используется по умолчанию и означает обращение к локальному xfs через порт 7100. Для загрузки шрифтов с сетевого ресурса вместо unix нужно указать имя хоста или IP-адрес сервера: Пакет LTSP, в свою очередь, предлагает использовать для этой цели параметры
|