Semenalidery.com

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

X window linux

Xming. Подключение к X-Window Linux из Microsoft Windows

Ключевые слова: Xming, X-Window, Putty, Ssh

Предисловие

Случилось так, что вместо FreeBSD я поставил CentOS 5.2. Когда я ставлю FreeBSD, то не предполагаю использование оконных интерфейсов, вроде KDE или GNOME. Имхо, во FreeBSD их реализация сделана чуть хуже, чем в Linux, но не важно, я не хочу разводить политических войн. А тут поставил CentOS с KDE. Все сервера стоят у меня в серверной, соответственно, если бы я захотел использовать графические приложения, мне пришлось бы сидеть на табурете в тесной и жаркой комнатухе и… Короче, я решил, что попытаюсь сделать так, чтобы можно было использовать преимущества графического интерфейса Linux, не сидя при этом непосредственно за компьютером.

Из Википедии:

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

В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя. В контексте X Window System термины «клиент» и «сервер» имеют непривычное для многих пользователей значение: «сервер» означает локальный дисплей пользователя (дисплейный сервер), а «клиент» — программу, которая этот дисплей использует (она может выполняться на удалённом компьютере).

Поэтому для меня был необходим X-Server для Windows. С его помощью я подключился бы к программе-клиенту на компьютере с Linux в графическом режиме.

Наиболее удобным оказался бесплатный Xming X Server.

Xming X Server

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

На любом компьютере с Linux есть запущенный ssh-сервер. Если у вас это не так – вы – исключение и вам надо установить openssh-сервер на вашем Linux-компьютере.

На компьютере с Windows нам потребуется клиент ssh, например, putty.

Настройка putty

Меню Connection -> SSH -> X11:

Здесь 192.168.0.10 – адрес компьютера, с которого мы подключаемся к Linux.

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

В конце вводим ip-адрес Linux компьютера, сохраняем настройки putty и соединяемся:

Вот, теперь установим и настроим Xming

Установка и настройка Xming

Скачиваем файл Xming-6-9-0-31-setup.exe (на 26.02.09 я скачал эту версию). Запускаем.

Указываем, в каком виде желаем работать с программами-клиентами:

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

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

В поле «Addtional parameters for Xming” можем вписать следующее (нашел в интернете):

«-dpi 96» — уточняем размер шрифтов.
«-xkblayout us,ru» — для работы с двумя раскладками клавиатуры.
«-xkbvariant basic,winkeys» — уточнение раскладок.

Полный список (но без нормальных комментариев) есть на странице http://www.straightrunning.com/XmingNotes/manual.php.

Жмем далее, «Save configuration», «Готово». Все, настройка закончена, значок Xming висит в трее и ждет подключений со стороны Linux. Не дадим ему долго ждать и в окне сессии ssh, открытой нами ранее, вводим, например, «system-config-network &». Знак «&» пишется через пробел для того, чтобы запускаемое приложение работало в фоновом режиме.

Если все прошло нормально, вы увидите окно:

Ну вот и все, все как всегда не очень сложно, бесплатно и безопасно!

X window linux

OpenNET

Издательство «БИНОМ. Лаборатория знаний»

Интересное

7.4. Запуск системы X Window.

Глава 7. Графический интерфейс

7.4. Запуск системы X Window.

Запустить X Window можно несколькими способами. Иногда при инсталляции ОС соглашаются с предложением инсталлятора запускать их автоматически. Если при инсталляции все прошло нормально, то вы будете сразу после запуска ОС попадать в графический режим. Однако, судя по моему опыту (особенно по опыту работы с 3-й версией XFree86), система X далеко не всегда устанавливается автоматически, поэтому в разделе об инсталляции ОС я советовал отказаться от автоматического запуска. Как же запустить графическую оболочку?

Из предыдущего текста вы должны знать, что вначале необходимо запустить X-сервер. Это можно сделать, непосредственно запустив на выполнение подходящий сервер из каталога /usr/X11R6/bin. Вы уже знаете, что в результате вы увидите на экране серый прямоугольник с крестиком курсора мыши посередине. Но дальше вы вряд ли чего-нибудь добьетесь, поскольку не запущен менеджер окон и ни одной программы-клиента. Поэтому просто нажмите комбинацию клавиш + + для того, чтобы завершить работу X-сервера.

Несколько более успешный (но все еще не самый правильный) способ выхода в графический режим состоит в том, что вы даете команду xinit .

Программа xinit (она расположена в каталоге /usr/X11R6/bin) предназначена для запуска сервера системы X Window и хотя бы одной программы-клиента.

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

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

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

xterm -geometry +1+1 -n login -display :0

Если вы после установки Red Hat Linux еще не создали свой файл .xinitrc, и просто запустите команду xinit из командной строки, вы увидите почти пустой рабочий стол с единственным окном терминала. Поскольку менеджера окон нет, вы ничего не можете сделать с этим окном (переместить, изменить размер и т. д.), но вы можете в этом окне запустить другие программы, в том числе менеджер окон. Перейдите, например, в каталог /usr/X11R6/bin и дайте команду fvwm или twm (один из этих оконных менеджеров обычно по умолчанию установлен). После этого вид экрана несколько изменится, вы сможете перемещать окна (обычным способом, захватывая мышкой заголовок окна), а по щелчку левой кнопкой по пустому полю рабочего стола получите выход в меню.

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

Ниже приведен пример скрипта .xinitrc, который запускает часы, несколько терминалов и оставляет менеджер окон в качестве «последнего» клиента.

xrdb -load $HOME/.Xresources

xsetroot -solid gray &

xclock -g 50×50-0+0 -bw 0 &

xload -g 50×50-50+0 -bw 0 &

xterm -g 80×24+0+0 &

xterm -g 80×24+0-0 &

Важно отметить, что программы, запускаемые из .xinitrc, должны запускаться в фоновом режиме, если только они не завершаются немедленно. Иначе эти программы будут препятствовать запуску других программ. Однако одна из запущенных программ (обычно менеджер окон или эмулятор терминала) должна выполняться не в фоновом режиме, а на переднем плане, чтобы работа скрипта не завершалась (завершением работы этой программы пользователь сообщает программе xinit , что закончил работу и что сама программа xinit должна завершиться). В приведенном примере, если менеджер окон правильно сконфигурирован, то для завершения работы в X-сессии достаточно выбрать команду Exit в меню менеджера twm .

Аргументы, заданные в командной строке вызова xinit , позволяют обойти выполнение скриптов .xinitrc и .xserverrc. В командной строке может быть указана альтернативная программа-клиент и/или альтернативный сервер. Клиентская программа должна быть первым аргументом в командной строке вызова xinit . Для того чтобы вызвать конкретный X-сервер, добавьте двойное тире (после указания программы-клиента и ее аргументов), после которого укажите имя нужного сервера.

Читать еще:  Как включить linux

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

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

Вот несколько примеров командной строки вызова программы xinit .

Этой командой будет запущен сервер, на который указывает ссылка (линк) X, и выполнен пользовательский скрипт .xinitrc , если таковой существует, а иначе просто запущен xterm .

[user]$ xinit — /usr/X11R6/bin/Xqdss :1

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

[user]$ xinit –geometry =80×65+10+10 -fn 8×13 -j -fg white -bg navy

По этой команде будет запущен сервер, на который указывает ссылка X , и запускаемой по умолчанию команде xterm будут переданы аргументы, перечисленные в командной строке. Скрипт .xinitrc будет проигнорирован.

[user]$ xinit -e widgets — .Xsun -l -c

В этом случае для запуска сервера используется команда .Xsun -l -c, а запускаемому по умолчанию программе-клиенту xterm будет переданы аргументы -e widgets .

Поскольку пользователю-новичку обычно не хватает квалификации для создания собственного варианта скрипта .xinitrc, администраторы сайтов могут помочь им в вызове графического интерфейса, создав общедоступный скрипт, выполняющий эту функцию. Такие скрипты обычно называются x11 , xstart , или startx и являются удобным способом создания простого интерфейса для пользователей-новичков. Вот пример простейшего скрипта такого вида:

xinit /usr/local/lib/site.xinitrc — /usr/X11R6/bin/X bc

При инсталляции стандартной версии Red Hat Linux создается более сложный вариант скрипта startx , который расположен в каталоге /usr/X11/bin (вы можете его просмотреть). Для него существует и man-страница, в которой говорится, что этот скрипт создается просто как образец для администраторов сайтов, и предназначен для создания собственных вариантов такого скрипта.

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

xauth add $display . $mcookie

xauth add `hostname -f`$display . $mcookie

xinit $clientargs — $display $serverargs

То есть, в конечном итоге, startx вызывает уже рассмотренную нами команду xinit , только предварительно формирует нужные значения аргументов командной строки для нее. Первый аргумент — имя файла xinitrc, причем если в домашнем каталоге пользователя есть файл .xinitrc, то берется он (с указанием пути), а если в домашнем каталоге нет такого файла, то берется общесистемный файл /etc/X11/xinit/xinitrc, т. е. «clientargs» = «/etc/X11/xinit/xinitrc».

Аналогично формируется значение переменной serverargs : если существует файл .xserverrc в домашнем каталоге пользователя, то переменная serverargs будет указывать на него. Если такого файла нет, то serverargs укажет на /etc/X11/xinit/xserverrc. Переменной display присваивается значение: 0. Далее в скрипте startx производится анализ аргументов, которые были заданы в командной строке при его вызове (эту часть мы пока не будем детально разбирать, поскольку для начала будем вызывать скрипт без параметров) и, наконец, в конец строки вызова xinit добавляется auth $HOME/.Xauthority . Таким образом, сразу после установки системы (пока пользователь не создал файлов .xinitrc и .xserverrc в своем домашнем каталоге) будет вызываться в следующем виде:

xinit /etc/X11/xinit/xinitrc — :0 /etc/X11/xinit/xserverrc -auth  $HOME/.Xauthority

Команды xauth и опция -auth $HOME/.Xauthority , передаваемая X-серверу, служат для авторизации пользователя, запускающего графический режим. Механизмы авторизации нас пока не интересуют, так что рассматривать эту часть не будем (если интересно, см. интерактивное руководство man с параметром Xsecurity ).

Система X Window в Linux

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

Поскольку ОС UNIX/Linux обладают архитектурой, ключевой особенностью которой является сетевое клиент-серверное взаимодействие, то реализация графической системы также построена на схеме «клиент-сервер». Ядром такой системы является протокол, описывающий правила организации и предоставления неким сервером X своих мощностей и вычислительных ресурсов клиентам — пользовательских машин, на которых запускается графическая оболочка, позволяющая работать приложениями в виде окон (Window) с характерными для них органами управления и оформлением. Причём внешний вид и сопутствующие функциональные возможности GUI будут зависеть от соответствующих графических библиотек, установленных на клиентской машине. Всё это в совокупности определяет графическую систему X Window.

Как появилась X Window?

В распределённых (достаточно больших) системах на некоторых компьютерах (или даже в подсетях, охватывающих целые отделы организации) было необходимо, в связи со спецификой выполняемых задач, работать с полноценным графическим интерфейсом, например для: инженерной графики в CAD, верстки документов, 3D-графики. Конечно, в дальнейшем вполне закономерно использование графических оболочек для общепользовательских специальных задач стало повсеместным. Однако серверные компьютеры по сей день могут (и, вероятнее всего должны) обходиться без GUI.

Ещё в начале 1980-х годов в Массачусетсском технологическом институте (MIT) в рамках проекта Project Athena была разработана оконная система W (Window), задачей которой было обеспечение полноценного GUI для рабочих станций, занятых соответствующими задачами. Позже преемницей W стала система X – более универсальная и гибкая для интеграции сложных ОС. Её более поздняя версия X Window System 10, которая вышла 1985 году, завоевала довольно широкое распространение. Версия 11 этой ОС или просто X11 так и вовсе благодаря своим довольно открытым условиям лицензии стала самым популярным решением в области GUI поскольку благодаря своим продуманной архитектуре и потенциалу активно переносилась на другие платформы. Появлялось всё больше реализаций протокола XDM и как следствие — новых реализаций системы X11.

С 1998 года компетентная группа в составе MIT начала работы по формализации протокола X, в рамках которой должно было определяться дальнейшее его развитие. Параллельно среди многих реализаций X11 продолжали появляться и свободные, такие как XFree86. В 2004 году для ветви с оригинальным проектом X11 изменились условия лицензионного соглашения, в которые были включены пункты, не позволявшие дистрибьюторам и разработчикам свободно её использовать. Поэтому многие из них вынуждены были полностью перейти на использование ветви XFree86, которая под новые условия лицензии не подпадала. Сама же ОС XFree86 активно поддерживается компанией X.Org Foundation, которая является некоммерческой организацией. Таким образом, на сегодняшний день подавляющее большинство дистрибутивов Linux для обеспечения графического окружения использует систему X Window в её свободной реализации X.Org.

Как работает система X Window?

X Window обеспечивает работу графического окружения благодаря всего трём основным её компонентам: X-сервера, диспетчера дисплеев, менеджера окон. Диспетчер дисплеев авторизует и/или регистрирует пользователей для предоставления им среды для запуска (набор сценариев запуска) системы. Также диспетчер дисплеев управляет работой X-сервера, т. е. он может запускать его когда клиент отправил соответствующий запрос. В свою очередь X-сервер по завершении запуска предоставляет клиентам абстрактный интерфейс для устройств ввода (мышь, клавиатура), а также для отрисовки растровых изображений. Менеджер окон служит для организации приложений в виде окон, позволяя переключаться между ними, сворачивать/разворачивать, открывать, перемещать по экрану, управлять рабочими столами Таким образом, выступая в роли интерактивного визуализатора пользовательской среды и приложений. Сам же менеджер окон запускается диспетчером дисплеев по факту авторизации/регистрации пользователя с помощью сценариев запуска. Внешний вид приложений реализуется с помощью различных библиотек интерфейсных элементов (например GTK+), которые позволяют отрисовывать окна, меню, заголовки, кнопки и прочие органы управления. Следующий рисунок демонстрирует клиент-серверную модель, по которой функционирует система X Window:

Библиотеки элементов пользовательского интерфейса могут быть разными, но все они поддерживают спецификацию оконного менеджера, поэтому X-серверу не нужно «знать» все тонкости низкоуровневого формирования элементов интерфейса на стороне клиента. Это одна из ключевых особенностей системы X Window.

Некоторые особенности

Как уже было отмечено, гибкость, масштабируемость, а также открытость системы X Window породила множество реализаций не только её самой (и её протокола), но ничуть не меньшее число графических сред. Долгое время (да и по сей день) оригинальная графическая оболочка на «чистом X11» с собственной библиотекой интерфейсных элементов была незавершённой, т. к. изначально не подразумевалось её повсеместное использование. Однако, с другой стороны клиент-серверная архитектура X Window, а также её независимость от низкоуровневой реализации GUI на стороне клиента «развязывали» руки разработчикам ПО, которые очень часто стремились снабдить свои приложения оригинальным внешним видом, разрабатывая и поставляя вместе с ПО также собственные библиотеки элементов GUI. При этом развитие как самой системы X Window, так графических сред и библиотек элементов интерфейса происходит независимо друг от друга усилиями разных разработчиков.

Читать еще:  Код ошибки 0x00000e9

Именно поэтому сейчас можно наблюдать такое количество всевозможных графических окружений для UNIX/Linux. Некоторые из них (KDE, GNOME, XFCE) по качеству дизайна, удобства использования, функционалу и быстродействию настолько хороши, что люди, впервые увидевшие и поработавшие в этих средах устанавливают и используют их в качестве основных.

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

Запуск X Window System Linux

Локальный запуск X-клиентов

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

Поэтому для автоматизации запуска X-сервера и всех клиентов X-сеанса пользователя предназначается специальная команда xinit, проиллюстрированная в листинге ниже.

Запуск сеанса iceWM с отображением на сервере Xnest

$ xinit /usr/bin/icewn-session — /usr/bin/Xnest :1 &
honer@ubuntu:

$ ps f

PID TTY STAT TIME COMMAND
28163 pts/8 Ss 0:00 bash
28218 pts/0 S 0:00 _ xinit /usr/bin/icewm-session — /usr/bin/Xnest :1
28219 pts/0 Sl 0:00 | _ /usr/bin/Xnest 1
28226 pts/0 S 0:00 | _ /usr/bin/icewm-session
28231 pts/0 R+ 0:00 _ ps f

Запускатель xinit может быть сконфигурирован пользовательскими dot-файлами -/.xinitrc и

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

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

Запуск сеанса TWM с отображением на сервере «по умолчанию» (Xnest)

$ cat .xserverrc
#!/bin/sh
exec /usr/bin/Xnest
honer@ubuntu:

$ xinit /usr/bin/twm — :2 &
honer@ubuntu:

$ ps f

PID TTY STAT TIME COMMAND
28268 pts/1 Ss 0:00 bash
28322 pts/1 S 0:00 _ xinit /usr/bin/twm — :2
28323 pts/1 Sl 0:01 | _/usr/bin/Xnest :2
28330 pts/1 S 0:00 | _ /usr/bin/twm
30112 pts/1 R+ 0:00 _ ps f

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

Запуск локальной X Window System (окружение KDE с отображением на сервере Xnest)

$ cat .xserverrc

#!/bin/sh
exec /usr/bin/Xnest «$@»
homer@ubuntu:

$ cat .xinitrc

#!/btn/sh
exec startkde «$@»
homer@ubuntu:

$ xinit — :3 &

$ ps f

PID TTY STAT TIME COMMAND
30810 pts/2 Ss 0:00 bash
30996 pts/2 S 0:00 _ xinit — :3
30997 pts/2 Si 0:04 | _/usr/bin/Xnest :3

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-клиента

$ ssh -f lich@centos «DISPLAY=ubuntu. local:0 xeyes»

Error: Can’t open display: ubuntu.local:0

$ Xnest :1 &

$ ssh -f lich@centos «DISPLAY=ubuntu.local:1 xeyes»

No protocol specified

Error: Can’t open display: ubuntu.local:1

При сетевом взаимодействии 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 &

$ ssh lich@centos

lich@centos

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↵

Writing authority file /hone/lich/.Xauthority [llch@centos

]$ logout

onnection to centos closed.

$ ssh -f lich@centos «DISPLAY=ubuntu.local:1 xeyes»

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

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

В примере из листинга ниже показано поведение SSH-сервера при туннелировании X-протокола. По запросу (-x) от SSH-клиента SSH-сервер начинает эмулировать поведение X-сервера, устанавливает О переменную окружения display, указывающую на «дисплей» :10 на «том же» узле localhost, и создает «волшебную печеньку» для этого дисплея.

При последующем запуске X-клиента xeyes им будет установлено соединение с «SSH-эмулятором» X-сервера на localhost: 10, а SSH-сервер перенаправит (туннелирует) это соединение X-протокола обратно SSH-клиенту внутри зашифрованного соединения SSH.

SSH-туннелирование X-протокола (SSH-сервер)

$ ssh -X lich@centos

Last login: Fri Jan 8 17:48:34 2016 from ubuntu

]$ echo $DISPLAY

]$ xauth list
centos/unix:10 MIT-MAGIC-C00KIE-1 80c749073282be2001c33bd43e577aa4
[lich@centos

+++ exited with 0 +++
[lich@centos

]$ sudo lsof -nP -i 4:601

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 14221 Itch 10u IPv4 44578 0t0 TCP 127.0.0.1:6010 (LISTEN)
[lich@centos

]$ logout

Connection to centos closed.

Листинг ниже иллюстрирует поведение SSH-клиента в режиме (-X) X-туннелирования, при котором он эмулирует «Х-клиента» и соединяется с аппаратным (!) Х-сервером через локальный сокет /tmp/.x11-unix/X0.

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

SSH-туннелирование X-протокола (SSH-клиент)

-fe connect ssh -f |X lich@centos xeyes

Так как SSH-туннелирование X-протокола позволяет перенаправлять любое количество X-соединений внутри одного SSH-соединения, то дистанционно можно запускать целые сеансы пользовательских сред, таких как GNOME с использованием xinit и виртуального X-сервера Xnest.

Запуск дистанционного сеанса GNOME с отображением на локальном сервере Xnest

$ xinit /usr/bin/ssh -X lich@centos gnome-session — /usr/bin/Xnest :4 &
homer@ubuntu:

$ ps f

PID TTY STAT TIME COMMAND
27759 pts/0 Ss 0:00 bash
27829 pts/0 S 0:00 _ xinit/usr/bin/ssh -X llch@centos gnomes-session — …
27830 pts/0 Sl 0:00 | _ /usr/bin/Xnest :4
27837 pts/0 S 0:00 | _ /usr/bin/ssh -X lich@centos gnome-session
27928 pts/0 R+ 0:00 _ 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

lightdm 32494 root 11u IPv4 3031884 0t0 UDP *:xdmcp
bart@terminal:

$ Xnest :1 -query ubuntu.local

Читать еще:  Linux passwd user

Надо заметить, что при использовании дистанционного XDMCP-запуска данные XDMCP- и X-протоколов при передаче в публичной сети оказываются никак не защищены (включая согласование «волшебной печеньки» и ее последующее использование), поэтому на практике безальтернативно используют SSH-запуск дистанционных сеансов с туннелированием X-протокола внутри криптографически защищенного SSH-соединения.

Система X Window

Эта глава содержит графическое окружение пользователя.

Xorg-6.8.2

Введение в Xorg

Замечание

Есть два пакета в BLFS , которые реализуют систему X Window: Xorg и XFree86 . Эти пакеты очень похожи. Фактически, основная система Xorg это XFree86 -4.4.0RC2. Главным отличием этих пакетов является лицензия. Для тех, кто собирает пакет для себя, эти отличия не существенны. Большинство больших комерческих дистрибутивов решили использовать пакет Xorg , но некоторые все еще используют XFree86 .

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

XFree86 продолжает оставаться цельным, консервативным приложением с отличной поддержкой драйверов.

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

Xorg это свободно распространяемая открытая реализация системы X Window. Это приложение предоставляет интерфейс клиент/сервер между аппаратурой отображения (мыш, клавиатура и видео дисплей) и окружением рабочего стола, а так же предоставляет оконную инфраструктуру и стандартный интерфейс приложений ( API ).

Информация о пакете

Контрольная сумма: 8131cd7ea1e4566e6e05c438a93fcfe1

Требуемое дисковое пространство: 655 MB

Расчетное время сборки: 17.8 SBU

Зависимости Xorg

Требуемые
Опционально

Инструкции для скачивания

В отличие от скачивания целого дерева исходников в одном файле, есть несколько файлов, которые надо получить из места скачивания (директория /pub/x.org/pub/X11R6.8.2/src/):

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

Для проверки целостности ваших файлов скачайте файл md5sums. Затем:

Пакет (или все семь пакетов) должен дать статус OK.

Установка Xorg

Параметры компиляции ядра

Если увас установлен Intel P6 (Pentium Pro, Pentium II и позднее), то рекомендуется вкомпилировать поддержку MTRR (Memory Type Range Registers) в ядро. Ядро может использовать прцессоры Cyrix и AMD с интерфейсом MTRR , поэтому выбор этой опции полезен и для этих процессоров. Эта опция находится в меню «Processor type and features». Она может увеличить скорость операций записи изображений в 2.5 и более раза для PCI или AGP видео карт.

В разделе «Character Devices» включите поддердку AGP и выберите поддержку чипсета вашей материнской платы. Если вы не знаете чипсет, то вы можете выбрать все типы чипов за счет увеличеия размера ядра. Обычно вы можете определить чипсет вашей материнской платы запуском команды lspci , программы из пакета PCI Utilities-2.1.11.

В разделе «Character Devices» выключите Direct Rendering Manager если у вас нет видеокарты, поддерживающей Direct Rendering Infrastructure ( DRI ). Полный список видеокарт, поддерживающих DRI , может быть найден на http://dri.sourceforge.net в разделе «Status». В настоящий момент поддерживаются следующие видеокарты: 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815) и Matrox (G200, G400, G450).

Дополнительно NVidia предоставляет их собственные закрытые бинарные драйверы, которые не используют DRI . Если вы захотите использовать эти драйверы, то не включайте DRI .

Если вы внесете изменения в конфигурацию ядра, перекомпилируйте и установите новое ядро.

Замечание

Если вы собираете Xorg в среде chroot , убедитесь, что версии ядра основной и целевой системы одинаковые.

Заперещение Xprint-связанной модификации в /etc

Xorg настаивает на размещении своих стартовых и профильных скриптов в директории /etc даже если особо сказано не компилировать Xprint сервер или клиент (смотрите host.def ниже). Следующая команда запретит любые такие изменения:

Установка теневой директории

Собирая Xorg , вы должны создать теневую директорию символических ссылок для скомпилированного кода. Чтобы это сделать, сначала создадим lndir . Выполним из директории xc:

А теперь, как пользователь root:

И вернемся как обычный пользователь:

Теперь создадим теневое дерево:

Создание host.def

Следующим шагом является создание файла config/cf/host.def. Документация по Xorg показывает, что приложения будут собраны без файла host.def, но включенные библиотеки для Fontconfig и FreeType2 будут собраны не правильно в базовой системе LFS . В этом случае вы должны указать, что эти библиотеки, как и другие, должны быть импортированы из системы.

Замечание

config/cf/host.def это C файл, не скрипт оболочки. Убедитесь, что коментарии, установленные при помощи /* . */ сбалансированы после модификации файла.

Есть и другие опции, которые вы можете захотеть установить. Хорошо документироанным примером файла является config/cf/xorgsite.def.

Команды сборки

Установим Xorg запуском следующих команд:

Опять как пользователь root:

Описание команд

sed -i -e «s@^#include
@.
: Пакет Linux-Libc-Headers , установленный в LFS , устанавливает файл /usr/include/linux/config.h, который не совместим с пользовательскими приложениями. Рекомендованным решением для приложений, включающих этот файл, является его удаление (смотрите linux-libc-headers FAQ ). sed использует grep -lr для замены всех случаев. Если хотите, просто удалите (закоментируйте) строчку в подходящем файле видео драйвера если вы настраиваете host.def.

( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS ) : Эта команда запускает многочисленные Makefile для полной пересборки системы. 2>&1 перенаправляет сообщения об ошибках в то же место, что и стандартный вывод. Команда tee позволяет просматривать вывод во время вывода результата в файл. Скобки вокруг команды запускают внутреннюю команду в подоболочке, а exit $PIPESTATUS в конце подтверждает, что общим резутьтатом будет возвращенный результат команды make , а не команды tee .

Замечание

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

Эти команды нужны, чтобы другие (неправильные) пакеты могли собираться с Xorg , даже если FHS говорит: «Обычно программа не дожна быть установлена или управляема через указанные символические ссылки. Они предназначены только для использования пользователями.»

Конфигурация Xorg

Отредактируйте /etc/ld.so.conf и добавьте /usr/X11R6/lib. Запустите:

Убедитесь, что /usr/X11R6/bin и /usr/X11R6/lib/pkgconfig добавлены в ваш PATH и, соответственно, переменная окружения PKG_CONFIG_PATH. Инструкции о том, как это сделать, описаны в разделе «Стартовые файлы оболочки Bash».

Создадим файл xorg.conf при помощи:

Экран почернеет и вы можете услышать небольшие щелчки монитора. Эта команда создаст файл xorg.conf.new в вашей домашней директории.

Отредактируйте xorg.conf.new для настройки под вашу систему. Детальная информация по файлу находится в man странице по xorg.conf. Кое что из того, что вы можете захотеть сделать, это:

Раздел «Files». Измените порядок следования путей поиска директорий шрифтов. Вы можете захотеть поместить шрифты 100dpi перед шрифтами 75dpi, если ваша система с ними работает нормально. Вы можете захотеть полностью удалить некоторые директории шрифтов.

Раздел «Module». Если вы будете устанавливать драйвер NVidia, то удалите строчку «dri».

Разделы «InputDevice». Установите параметр Device на «/dev/input/mice» и Protocol на «auto» для настройки вашей мыши. Вы можете захотеть изменить скорость автоповтора клавиатуры, добавив Option "Autorepeat" "250 30".

Раздел «Monitor». Установите значения VertRefresh и HorizSync если система автоматически не определила монитор и его параметры.

Раздел «Device». Вы можете захотеть установить некоторые из опций, доступные для вашего выбранного видео драйвера. Описание параметров драйвера находятся в man странице для этого драйвера.

Раздел «Screen». Добавьте элемент DefaultDepth, например: DefaultDepth 16. В SubSection для вашей глубины цвета по умолчанию добавьте строчку Modes, например: Modes "1280x1024" "1024x768". Первая указанная мода будет стартовым разрешением экрана.

Вы увидите только серый задний план с X-подобным курсором мыши, но это укажет на работоспособность системы. Выйдите при помощи комбинации клавиш Control-Alt-Backspace. Если система не работает, то обратитесь в /var/log/Xorg.0.log для просмотра сообщений о возникших проблемах.

Переместим файл конфигурации в его положенное место:

Это предоставит начальный экран с xterm и часами, которые управляются простым оконным менеджером, Tab Window Manager. Для большей иформации о twm обратитесь к его man странице.

Замечание

Если надо, Xorg создает директорию /tmp/.ICE-unix, если ее нет. Если эта директория не принадлежит root, то Xorg задерживает запуск на несколько секунд и добавляет предупреждение в лог-файл. Это так же действует на запуск других приложений. Для увеличения производительности рекомендуестя вручную создать эту директорию перед тем, как Xorg будет ее использовать. Добавим создание файла в /etc/sysconfig/createfiles, который используется стартовым скриптом /etc/rc.d/init.d/cleanfs.

Запустим X при помощи:

для получения базовой функциональности системы X Window.

В этом месте вы должны обратиться к разделу “Компоненты системы X Window”.

За списком содержания пакета и описанием команд обратитесь к разделу Содержание и описание XFree86.

Ссылка на основную публикацию
Adblock
detector