Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

OS Linux для начинающих. Новости + статьи + обзоры + ссылки Linuxbegin :: Выпуск #57 (Статьи - X-Window)


Информационный Канал Subscribe.Ru

Рассылка LinuxBegin
Выпуск #57 - Статьи. (28.09.03). Подписчиков: ~ 16800.
Рассылка для тех, кто делает первые шаги в мир Open Source!
Новости, статьи, обзоры и ссылки.
В этом выпуске:
Новости рассылки
Графический интерфейс Linux.
Настройка X-Window.
Читайте в следующем номере
 Новости рассылки:

Из-за временной некорректной работы Subscribe.ru предыдущий выпуск рассылки был отправлен 2 раза подряд (для гарантии)...

 Графический интерфейс Linux.

  В.Костромин, 7.09.2003, Rus-linux.net. Опубликовано в журнале "CHIP"

Как известно, операционная система Linux заняла достойное место на серверах, но пока еще не завоевала признания большинства пользователей персональных компьютеров. Не в последнюю очередь это объясняется тем, что о ней идет молва, как о системе, ориентированной на работу из командной строки, а поэтому "недружелюбной" к неопытному пользователю. Между тем, Linux обладает и графическим интерфейсом, не уступающим, а во многом и превосходящим возможности, предоставляемые известной всем оконной системой фирмы Microsoft. В этой небольшой статье мы попытаемся рассмотреть, как устроен графический интерфейс в Linux, и как настроить процедуры его запуска.

1. Устройство системы X Window.

Графический интерфейс в Linux строится на основе стандарта X Window System (заметьте, что Window, а не Windows) или просто "X" (в просторечии — "иксы"), разработка которого была начата в 1984 году. Первые 10 версий X Window System были разработаны всего тремя людьми - Робертом Шейфлером (Robert Sheifler), Джимом Геттисом (Jim Gettys) и Роном Ньюменом (Ron Newman).  Двое из них были сотрудниками Массачусетского технологического института, а третий – сотрудником корпорации DEC. Начиная с 1988 г. этот стандарт поддерживался консорциумом X, созданным с целью унификации графического интерфейса для ОС UNIX. В 1997 году консорциум X был преобразован в X Open Group (http://www.x.org). В настоящее время действует 6-ой релиз (выпуск) 11-ой версии стандарта на графическую подсистему для UNIX-систем, который кратко обозначается как X11R6.

Свободно распространяемая реализация стандарта X11R6 была создана группой программистов, которую вначале возглавлял Дэвид Вексельблат (David Wexelblat). Эта реализация известна как XFree86 (http://www.xfree86.org), и может использоваться не только в Linux, но и в других версиях UNIX для систем на базе процессоров Intel 80386/80486/Pentium (например, FreeBSD). В настоящее время выпущена уже 4-ая версия XFree86, о которой и пойдет речь в настоящей статье.

Операционная система UNIX с самого начала была многопользовательской, многозадачной системой, работавшей в режиме разделения времени. При этом она позволяла пользователям работать в удаленном режиме, либо через терминалы, либо с использованием сетевых технологий. Эти основные концепции были учтены при создании графического интерфейса для UNIX и поэтому система X Window построена на основе модели "клиент/сервер" [1]. Правда, модель эта в данном случае используется как бы в "перевернутом" виде. Дело в том, что X-сервер запускается на компьютере пользователя (а не на каком-то удаленном "сервере") и обеспечивает вывод изображения на экран монитора. Эта программа работает непосредственно с "железом" и обеспечивает управление как устройствами ввода (клавиатура, мышь и так далее), так и устройствами вывода (дисплей, монитор, динамик). X-сервер "захватывает" оборудование и предоставляет его возможности другим программам (клиентам сервера) как ресурсы (собственно, именно поэтому он и считается сервером) по особому протоколу, который называется X-протокол, или протокол сетевой связи (X Network Protocol). Кстати, специализированный компьютер, на котором исполняется исключительно X-сервер, называется (аппаратным) X-терминалом.

Если запустить только X-сервер, вы увидите просто серый экран с характерным крестиком курсора посредине. С помощью мыши этот крестик можно перемещать по экрану. И все! На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой - тоже! Дело в том, что сам X-сервер изображение не формирует, он только "доставляет" графику видеоадаптеру и передает сообщения о событиях от аппаратной части (в частности, от клавиатуры и мыши, то есть сообщения о действиях пользователя) своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш X перехватывает и обрабатывает. Это <Ctrl>+<Alt>+<Backspace> — завершение работы сервера (если эта возможность не запрещена при конфигурации), <Ctrl>+<Alt>+<+> и <Ctrl>+<Alt>+<-> — "горячее" переключение доступных видеорежимов, и <Ctrl>+<Alt>+<F#> — переключение в другую виртуальную консоль.

Чтобы получить на экране какие-то более содержательные изображения, одного X-сервера недостаточно, надо запустить менеджер окон и хотя бы одну программу-клиент, которая будет формировать изображение и обрабатывать сообщения о действиях пользователя (например, щелчок кнопкой мыши и т.п.). В роли "клиентов" X-сервера выступают приложения, работающие с X Window, например, графический редактор GIMP, текстовый редактор OpenOffice.org, эмулятор терминала xterm и другие.

Между клиентами и сервером стоят еще два очень важных компонента графического интерфейса: библиотека графических функций X-Lib и менеджер окон.

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

Взаимодействие между менеджером окон и X-сервером осуществляется в асинхронном режиме путем обмена сообщениями. Клиентские программы открывают соединение с сервером, и затем просто посылают ему запросы примерно такого типа: "нарисуй прямую линию от точки такой-то до точки такой-то" или "выведи эту строку текста таким-то шрифтом начиная с такой-то позиции экрана". Эти запросы, в основном, обрабатываются путем вызова соответствующих процедур из библиотеки X-Lib, которая содержит набор стандартных функций, которые обеспечивают выполнение низкоуровневых операций с графическими образами. Менеджер окон вызывает функции из X-Lib для управления дисплеем и выполнения любых преобразований изображений в окнах.

Надо сказать, что хотя элементы графического интерфейса (иконки, кнопки, диалоговые окна, линейки прокрутки, различные рамки и оконные меню) и прорисовываются на экране с помощью низкоуровневых функций из библиотеки X-Lib, но приложения не вызывают эти функции непосредственно, а обращаются к функциям более высокого уровня, которые в англоязычной документации называют виджетами – "widgets". Ведь чтобы нарисовать, например, с помощью X-Lib простую кнопку с надписью "Ввод", необходимо прорисовать два прямоугольника, скруглить углы, изобразить тень, вывести надпись, обеспечить изменение вида кнопки при наведении мыши и так далее. Чтобы не повторять каждый раз работу по программированию часто используемых элементов графического интерфейса, были разработаны несколько отдельных библиотек таких элементов (виджетов). Эти библиотеки иногда называют "тулкитами" ("toolkit"). Наиболее известными из них являются библиотеки Motif, Qt и GTk. Библиотека Motif широко использовалась в 1980-х и начале 1990-х годов. Наиболее известным приложением, построенным на ее основе, является Netscape Communicator. В наше время эта библиотека уже не так популярна, поскольку появились более совершенные разработки, причем бесплатные (Motif распространялась на коммерческой основе). Библиотека GTk была разработана как замена Motif для проекта GIMP (GTk иногда расшифровывают как GIMP Toolkit или GNU Toolkit). Она сейчас очень популярна, потому что относительно невелика по объему, содержит много функций, расширяема и абсолютно свободна. Библиотека Qt получила широкое распространение с появлением проекта KDE, который использует ее для создания всех элементов графического интерфейса. Еще одной библиотекой, заслуживающей упоминания, является LessTif – бесплатный аналог Motif.

Если теперь все сказанное выше изобразить графически, получим рис.1.

Рис.1. Архитектура системы X Window

Конечно, рисунок этот очень схематичен. Рассмотрим,к примеру, обмен сообщениями между X-сервером и менеджером окон. Существует 4 типа сообщений, передаваемых между клиентом и сервером:

Запрос – клиент требует нарисовать что-либо в окне или запрашивает у сервера информацию;
Ответ – сервер отвечает на запрос;
Событие – сервер сообщает клиенту о событии (например, о нажатии клавиши пользователем);
Ошибка – сервер сообщает об ошибке.

Когда X-сервер и X-клиент работают на одной машине, обмен запросами и сообщениями между севером и клиентом осуществляется через локальный сокет. Но существует возможность передавать эти сообщения по сети, используя стек протоколов TCP/IP. Это свойство X Window является очень большим преимуществом этой системы в сравнении с другими типами графических оболочек, так как приложения могут быть запущены как на тоже машине, на которой работает X-сервер, так и на другом компьютере, который может даже не иметь собственной клавиатуры и мыши. Все, что нужно программе для работы, - это знать, где искать X-сервер (для этого используется либо переменная окружения DISPLAY, либо опция в командной строке). Более того, существуют даже программы (например, emacs), которые умеют работать и с X-сервером и с обычным текстовым терминалом и сами разбираются при старте, как именно им работать в данном случае.

Поскольку взаимодействие менеджера окон с сервером в общем случае осуществляется по протоколам TCP/IP, на приведенном рисунке следовало бы еще отобразить программное обеспечение, реализующее эти протоколы. Еще одним важным ресурсом графической подсистемы являются шрифты. Оперировать со шрифтами может как непосредственно X-сервер, так и специальная программа, которая называется сервер шрифтов, и которую также следовало бы включить в рисунок.

Можно еще отметить, что X-сервер может обеспечивать работу с несколькими "дисплеями" и "экранами" одновременно. Правда, термины "экран" и "дисплей" в системе X Window имеют специальное значение. Когда X-сервер запускается, он инициализирует один или несколько "дисплеев". Каждый "дисплей" включает в себя не только видео-компонент, но и клавиатуру, мышь и другие устройства ввода. Конечно, отдельный пользователь в любой момент времени посредством одного комплекта устройств (монитора, клавиатуры и мыши) имеет доступ только к одному "дисплею". Но имеется возможность запустить несколько "дисплеев", которые могут быть как локальными (виртуальными), так и расположенными на других хостах, соединенных с данным компьютером по сети. Каждый "дисплей" может иметь собственную конфигурацию (например, другое разрешение). Пользователь может выбирать, какой дисплей он хочет использовать при входе в систему. Однако в самой типичной ситуации используется только один дисплей (с номером 0).

"Экран" ("screen") по отношению к X-серверу означает то изображение, которое вы видите, когда запускаете X Window. "Экранов" тоже может быть несколько, так же, как и "дисплеев". Дополнительные "экраны" используются в случае "дисплеев с многими экранами". Фактически имеется возможность использовать один X-сервер на несколько компьютеров.

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

Один и тот же X-сервер может одновременно использоваться многими приложениями. Для того, чтобы обеспечить одновременную работу различных приложений и уменьшить объем информации, передаваемой по сети, сервер для каждого из приложений хранит данные об используемых приложением шрифтах, информацию о цвете и многое другое. Эти данные в совокупности называются ресурсами сервера [2]. Клиенты имеют возможность ссылаться на эти ресурсы с помощью кодов ресурсов, сокращая тем самым сетевой трафик и облегчая доступ к данным для различных процедур.

Итак, вы теперь в общих чертах представляете, из каких основных частей формируется графический интерфейс в Linux. Как видите, строится он по модульному принципу, причем существует достаточно много вариантов выбора для каждой из основных компонент. Различных менеджеров окон, например, существует очень много [3,4], а набор приложений вообще необозрим. Так что и вы можете построить собственную графическую среду, использовав любой набор ее составных частей по своему выбору. Однако тут возникают некоторые проблемы.

Первая такая проблема связана с разнообразием тех подходов к взаимодействию с пользователем, которые применяются в разных программах. Некоторые приложения, работающие в графическом режиме, используют широко распространенные библиотеки графических элементов типа Qt или GTk, а другие строятся на основе собственных наборов графических элементов. Наборы графических элементов обычно не являются взаимозаменяемыми, поскольку используют различные программные интерфейсы. С другой стороны, не существует никаких ограничений или требований для разработчиков приложений как в части употребления тех или иных наборов графических элементов, так и в части, например, способов запуска программ (через меню, командную строку или набором определенной комбинации клавиш). Это, естественно, вызывает трудности в работе пользователей. Но более существенно то, что это вызывает нерациональные траты ресурсов компьютера. Если 6 разных приложений используют 6 разных библиотек графических элементов, то мы вынуждены как хранить эти 6 библиотек на диске, так и загружать их в память, хотя Linux (и UNIX вообще) поддерживают возможность использования динамически разделяемых библиотек.

Эти недостатки отсутствуют в так называемых интегрированных графических средах или оболочках. В таких средах все основные компоненты графического интерфейса, а также множество специально разработанных приложений, строятся на основе единой графической библиотеки и единого подхода к организации интерфейса. При этом графические среды типа CDE, KDE, GNOME, GNUStep и т.д. строятся по тем же принципам, которые были кратко описаны выше, и не замещают перечисленные выше компоненты системы X Window, а расширяют и дополняют их. KDE, например, использует библиотеку графических функций Qt и собственный менеджер окон kwm, который управляет поведением всех окон. Кроме того, KDE дополняет Qt своей особой библиотекой (kdelibs) для выполнения таких задач, как создание меню, диалоговых окон или окон сообщений, организации взаимодействия программ, печати, и других задач.

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

Существует два основных варианта запуска графического интерфейса пользователя в системе Red Hat Linux. В первом варианте X-сессия запускается менеджером дисплея xdm, после чего пользователь получает возможность войти в систему (логироваться) непосредственно в графическом режиме. Во втором варианте пользователь вначале входит в систему в текстовом режиме, а потом запускает X-сессию с помощью программы xinit (чаще всего для этого используется скрипт startx, который является просто оболочкой для программы запуска графического режима xinit). В любом случае система X Window запускается с правами суперпользователя, поскольку ей требуется доступ к аппаратным устройствам.

Именно выбор между этими двумя способами запуска X-ов вы делаете, когда при инсталляции Linux задаете (или не задаете) автоматический запуск графического режима. Недостатком первого варианта (через xdm) является то, что если возникнут какие-то проблемы с переходом в графику, вы оказываетесь в затруднительном положении – ведь вы еще не вошли в систему и поправить что-либо нет возможности. Эта ситуация, конечно, не является безвыходной, однако начинающему пользователю все же лучше при инсталляции системы отказаться от автоматической загрузки графического режима и запускать его "вручную" из текстового. Как же это сделать?

Из предыдущего раздела вы уже знаете, что вначале необходимо запустить X-сервер. Это можно сделать, непосредственно запустив на выполнение сервер XFree86из каталога /usr/X11R6/bin. В результате вы должны увидеть на экране серый прямоугольник с крестиком курсора мыши посередине. Если вы такого крестика не увидели, придется заняться настройкой X-сервера. Из-за ограничений, связанных с объемом статьи, я не могу подробно рассказать о том, как осуществляется настройка X-сервера и вынужден отослать вас к книге [5], где этот вопрос освещен достаточно подробно. Сейчас же мы предположим, что сервер успешно загрузился. Однако, кроме перемещения крестика курсора по экрану, вы от него ничего не добьетесь, поскольку не запущен менеджер окон и ни одной программы-клиента. Поэтому просто нажмите комбинацию клавиш <Ctrl>+<Alt>+<Backspace> для того, чтобы завершить работу X-сервера. 

Более правильный способ перехода из текстового в графический режим состоит в том, что вы даете команду xinit. Программа xinit (она расположена в каталоге /usr/X11R6/bin) предназначена для запуска сервера системы X Window и хотя бы одной программы-клиента в ситуациях, когда X-сервер не запущен непосредственно из /etc/init (то есть при старте системы) или тогда,когда используются несколько экземпляров оконной системы.

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

X:0

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

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

Если вы после установки Red Hat Linux еще не создали свой файл .xinitrc, и просто запустите команду xinit из командной строки, вы увидите почти пустой рабочий стол с единственным окном терминала (рис.   2).

Рис. 2. Команда xterm как единственный клиент X-сервера.

Поскольку менеджера окон нет, вы ничего не можете сделать с этим окном (переместить, изменить размер и т. д.), но вы можете в этом окне запустить другие программы, в том числе менеджер окон. Наберите, например, команду /usr/X11R6/bin/fvwmили /usr/X11R6/bin/twm (один из этих оконных менеджеров обычно по умолчанию установлен). После этого вид экрана несколько изменится (рис.3), вы сможете перемещать окна (обычным способом, захватывая мышкой заголовок окна), а по щелчку левой кнопкой по пустому полю рабочего стола получите выход в меню. Можно запустить еще один экземпляр xterm или любую другую программу (на рисунке 3 вы видите два запущенных окна терминала и окно программы gimp).

Рис. 3. Запущен менеджер окон twm и программа gimp.

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

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

#!/bin/sh

xrdb-load $HOME/.Xresources

xsetroot-solid gray &

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

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

xterm-g 80x24+0+0 &

xterm-g 80x24+0-0 &

twm

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

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

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

#!/bin/sh

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

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

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

xauthadd $display . $mcookie

xauthadd hostname -f$display . $mcookie

xinit$clientargs -- $display $serverargs

То есть, в конечном итоге, startx вызывает уже рассмотренную нами команду xinit, только предварительно формирует нужные значения аргументов командной строки для нее. Первый аргумент — имя файла xinitrc, причем если в домашнем каталоге пользователя есть файл .xinitrc, то берется он (с указанием пути), а если в домашнем каталоге нет такого файла, то берется общесистемный файл /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 Display Manager — xdm). Для того, чтобы запускать xdm при загрузке ОС, надо отредактировать файл /etc/inittab. В этом файле имеется строка вида

id:3:initdefault:

определяющая уровень запуска по умолчанию (об уровнях запуска рассказано в [5]). Замените эту строку строкой следующего вида:

id:5:initdefault:

Такое изменение заставляет Linux при запуске переходить на 5-й уровень. А в конце того же файла /etc/inittab обычно прописана строка

x:5:respawn:/usr/bin/X11/xdm–nodaemon,

которая означает, что на этом уровне запуска должен запускаться менеджер дисплея xdm.

Имейте в виду, что команда respawn в только что приведенной строке из файла /etc/inittab означает, что при попытках перезапуска системы будет происходить перезапуск менеджера дисплея. В частности, нажатие "магической" комбинации <Ctrl>+<Alt>+<Del> будет повторно запускать систему стой же конфигурации. Поэтому если вы после установки xdm будете как-то менять системные настройки и в результате ошибочных действий нарушите хрупкое равновесие системы X Window, вы попадете в очень затруднительную ситуацию. Именно поэтому, как было сказано выше, включать автоматическую загрузку графического режима при запуске системы стоит только после того, как процедуры его запуска отлажены и опробованы.

В случае использования xdm пользователь при входе в систему сразу попадает в графическую среду, и нет необходимости специально запускать графический интерфейс командой startx. При этом сохраняется возможность переключиться в текстовую консоль, набрав <Ctrl>+<Alt>+<F#>, а потом вернуться обратно в графическую среду, используя комбинацию <Ctrl>+<Alt>+<F7>.

После установки Red Hat Linux, например, строка в /etc/inittab, определяющая менеджер дисплея, имеет вид:

x:5:respawn:/etc/X11/prefdm–nodaemon,

а /etc/X11/prefdm есть ссылка на /usr/bin/kdm. На рисунке 4 вы видите типичную картину экрана после запуска интегрированной графической среды KDE. Вы можете видеть, что запущены программы эмуляции терминала, графический редактор gimp, почтовый клиент kmail, программа korganaiser и текстовый редактор OpenOffice Writer, в котором была создана настоящая статья.

Рис. 4. Вид экрана при работе в интегрированной графической среде KDE.

Литература

 Настройка X-Window

  Сергей А. ЯРЕМЧУК, 30.06.2003, Мой Компьютер Weekly

В последнее время в моем почтовом ящике все чаще стали попадаться письма с просьбой помочь в установке и настройке графической подсистемы X-Window. По большей части это читатели, попробовавшие себя в установке CRUX и других base-дистрибутивов, в которых нет программы, позволяющей проделать это по ходу инсталляции в графическом режиме (см. статью "Каждому - свой крест", МК #14 (237)). Попадались также письма пользователей Debian, RedHat (см. статью "Дело в шляпе", МК #22 (245)) пожелавших установить более современную версию. Дошло уже дошло до того, что начинают угрожать: "Помогите, или снесу вашего пингвина к…" . Он, кстати, совсем и не мой, Linux является зарегистрированной маркой фина Линуса Торвальдса. Я - лишь один из пользователей, предпочитающих эту систему другим.

Текущей стабильной версией на данный момент является шестой полный релиз XFree86 4.3.0 от 27 февраля (http://www.xfree86.org), продолжающий развитие четвертой версии, начатой в где-то конце 2000 года (первым стабильным был 4.0.2, а не 4.0.0 как бы следовало думать). Практически все производители дистрибутивов включили версию 4.3.0 в свои последние релизы. Следующая, так сказать, полная версия 4.4.0 ожидается приблизительно к концу 2003 года. Но сейчас все изменения можно получить из "снимков" CVS, которые обновляются два раза в месяц (примерно 10 и 25 числа), при этом патч, устраняющий все обнаруженные в настоящее время критические ошибки и ошибки, связанные с безопасностью, можно найти в файле xf-4_3-branch. На момент написания статьи на сайте присутствовала developer-версия 4.3.99.4 от 10 мая, в том числе и в виде патча к предыдущим релизам, которую можно скачать и установить (занимает чуть больше 30 Мб), и базирующийся на 4.3.0 снимок - 4.3.0.1 от 9 мая 2003. Но последний не является официальным выпуском, это пока еще только набор заплат, но после из этого всего (и судя по всему, совсем скоро) будет выпущена промежуточная Update-версия 4.3.1, иначе cписок изменений рискует разрастись до поистине огромных размеров. Дополнительно на сайте можно найти уже заброшеную ветку 3.3.*, последний релиз которой - 3.3.6, к нему также прилагается набор исправлений Xf-3_3-branch. До недавнего времени я, честно говоря, думал, что мне ее с головой хватит, так как видеокарте уже года четыре от роду, и пользовался в основном этой версией. Но просмотрев однажды changelog на сайте http://www.xfree86.org, я с удивлением обнаружил исправления для своей Riva 128, так что имеет смысл и владельцам старых карт использовать более современную версию. По крайней мере посмотрите Driver Status Document (http://www.xfree86.org/Status.html) - может, увидите свою карту в списке. В современной 4.3.0 поддерживаются все известные на данный момент видеоустройства: 2D в ATI Radeon 9x00 и 3D в Radeon 8500, 9000, 9100, M9, дополнительно к этому - аппаратный TCL, встроенное видео на Intel 845G, 852GM, 855GM, 865G (2D&3D), встроенная графики на NVIDIA nForce2 , GeForce 4 и GeForce FX, поддержка ЖК-дисплея и автоматическое обнаружение DVI-D и DVI-A в чипах SIS, а также автоматическое определение протокола для мыши PS/2, исправления в русской клавиатурной раскладке и многое, многое другое. Так что если у вас установлено самое современное видеооборудование (которое к тому же, может, и не работает), то, как говорится, "Добро пожаловать".

Итак, текущий XFree86 4.3.0 доступен в виде исходников, патчей к предыдущей версии и уже откомпилированных бинарников. Исходные тексты стабильной версии можно найти по адресу ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source. В данном каталоге находится семь основных файлов - X430src-1.tgz, X430src-2.tgz … X430src-7.tgz. В 4 и 5 содержатся шрифты, в 6 и 7 - документация, ну а в 1-3 все остальное. Если шрифты уже есть, и в документации вы не нуждаетесь, то вполне хватит и 1-3 пакетов. После распаковки это все хозяйство занимает чуть больше 300 Мб. По этой же причине я из исходников не собираю, на моем домашнем это все будет компилироваться неделю, если не больше. Если кому интересно, могут попробовать - там есть довольно подробный путеводитель в виде HOWTO. Плюсы данного метода очевидны. Один из самых тяжелых компонентов системы собирается оптимизированным под конкретный процессор, т.е. инструкции MMX, SSE, 3Dnow!, которые, поверьте, отнюдь не пустой звук, будут полностью задействованы. К тому же не надо будет в следующий раз тащить все опять из Интернета, чтобы установить свежую версию, - достаточно взять патч ftp://ftp.xfree86.org/pub/XFree86/4.3.0/patches и скомпилировать с ним все заново. Система будет в самом современном состоянии.

А вот установкой из откомпилированных пакетов сейчас и займемся. Скачать их можно с ftp://ftp.xfree86.org/pub/XFree86/4.3.0/binaries, причем они разбиты по каталогам в зависимости от используемой операционной системы, архитектуры и версии libc. Чтобы не угадывать, что именно скачивать и тем более не загружать лишнее, рекомендуется предварительно загрузить только скрипт Xinstall.sh и запустить его с опцией -check. Вот так:

Он вам сообщит нечто вроде этого:

Небольшое примечание. Скрипт Xinstall.sh должен загружаться в бинарном режиме, а не в текстовом, в противном случае будете получать сообщение command not found. Если не знаете, как изменить режим загрузки, то здесь же лежит аналогичный скрипт, но со специально измененным названием - Xinstall.bin, который после закачки или через "Сохранить как" необходимо переименовать в Xinstall.sh; его браузеры автоматически закачивают в бинарном режиме. Сам же скрипт желательно взять из каталога той версии, которую вы устанавливаете - более старый вариант не всегда способен корректно установить XFree86.

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

Xinstall.sh - установочный скрипт (уже есть);

extract - специальная утилита для распаковки архива;

Xbin.tgz - X-клиент и утилиты, а также run-time библиотеки;

Xlib.tgz - файлы и run-time библиотеки;

Xman.tgz - страницы man-руководства;

Xdoc.tgz - документация XFree86;

Xfnts.tgz - основной набор шрифтов;

Xfenc.tgz - Base set of font encoding data (тоже набор шрифтов);

Xetc.tgz - run-time конфигурационные файлы;

Xvar.tgz - Run-time данные;

Xxserv.tgz - XFree86 X-сервер

Xmod.tgz - дополнительные X-модули к XFree86.

Примечание. Иногда браузеры коверкают утилиту extract при загрузке. Чтобы не возиться с настройками, используйте аналогичную, но с другим именем - extract.exe. После этого проблем быть не должно (ее даже переименовывать не надо - Xinstall.sh ищет по обоим именам). Если какой-либо из утилит, перечисленных выше, нет (например, под Darwin - Xmod.tgz), ничего страшного - просто под данной платформой в ней нет необходимости. Утилита extract используется для распаковки архивов. Она представляет собой несколько модернизированную версию утилиты GNU tar со встроенным кодом функции gzip. Одно важное отличие состоит в том, что extract разлинковывет существующие файлы перед тем как записать новые, что большинство версий tar по умолчанию не делают - это очень существенно, если инсталляция производится поверх существующей версии X.

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

Xfsrv.tgz - сервер шрифтов;

Xnest.tgz - Nested X server;

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

Xprt.tgz - X Print server;

Xvfb.tgz - Virtual framebuffer X server;

Xf100.tgz - 100-dpi шрифты;

Xfcyr.tgz - кириллические шрифты;

Xfscl.tgz - масштабируемые шрифты (Speedo, Type1 и TrueType);

Xhtml.tgz - HTML-версия документации;

Xps.tgz - PostScript-версия документации;

Xjdoc.tgz - документация на Japanese (ну о-очень нужная вещь :-)).

Установить все это хозяйство можно двумя способами: при помощи скрипта Xinstall.sh и вручную. Разработчики рекомендуют использовать первый вариант как более простой и удобный. Установка вручную может понадобиться при неудаче, что в большинстве случаев происходит, если не скачаны все основные пакеты; либо же, дополнительно, если есть необходимость просто добавить некоторые не установленные раннее пакеты, чтобы не ломать уже построенное и не повторять всю процедуру сначала.

Перед началом процесса установки рекомендуется сохранить старые файлы, относящиеся к XFree86 (если она имелась в системе), чтобы иметь возможность отката к рабочему варианту в случае чего (скрипт напомнит вам об этом на всякий случай). Для этого скопируйте куда подальше каталоги /etc/X11 и /usr/X11R6. Затем регистрируемся как root, переходим в каталог, где находятся установочные файлы, и даем команду # sh Xinstall.sh. Да, чуть не забыл. Установку желательно производить в консольном режиме: если попытаетесь запустить скрипт при запущенном X-Window (обмануть не удастся - проверяется переменная $DISPLAY), скрипт по-хорошему предупредит вас об этом - и, поверьте, не зря, испытано на собственной шкуре. Проще всего установить уровень запуска 3 (для RedHat и К) и полностью перезагрузить систему, или остановить все приложения, так или иначе связанные с Х, включая XDM (KDM, GDM). Работа скрипта сводится в основном к распаковке архивов и рассовыванию их по нужным каталогам, при этом в зависимости от устанавливаемой системы запускаются еще некоторые программы со специфическими для этой системы параметрами (например, ldconfig - чтобы обновить базу установленных библиотек). При этом по ходу пользователю задаются непонятные вопросы; в большинстве случаев (если сохранена копия старых файлов) на них можно отвечать нажатием Enter (ОК). Старые файлы (которые, опять же, предлагается сохранить) замещаются новыми, а если некоторые приложения установлены дополнительно, то они останутся незатронутыми (вопрос, правда, в другом - будут ли они потом снова работать с новой версией?) Если в некоторые файлы внесены изменения вручную, которые хочется оставить, можно при запросе отказаться от их перезаписи и попробовать запуститься со старой версией - если ничего не получится, новый файл всегда можно будет извлечь из архива вручную и водрузить на свое место. После выполнения обязательной программы при наличии дополнительных компонентов скрипт будет спрашивать о необходимости установки индивидуально для каждого. После запуска программы ldconfig следующим шагом обновляется файл fonts.dir, для того чтобы можно было правильно работать со шрифтами. Затем инсталлятор выясняет, имеются ли файлы termcap или terminfo. Если найдутся termcap'ы, то будут выданы советы, помогающие его модифицировать, если terminfo, то скрипт предложит обновить их.

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

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

В принципе, манипуляций, описанных в первой части статьи, достаточно, чтобы установить новую версию XFree86. Установка вручную заключается в распаковке архивов при помощи extract, создании символических ссылок на новые файлы, обновлении базы данных библиотек при помощи ldconfig и запуске mkfontdir в каталогах со шрифтами, чтобы обновить файл с их описанием. Т.е. если X-Window до этого не был установлен, переходим в каталог с установочными файлами и вводим (при частом использовании проще записать это в один файл и запускать оттуда):

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

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

Теперь самое время попробовать запустить команду startx, авось что-нибудь да получится. На что система выдает довольно устрашающее сообщение вроде Fatal server error: no screens found. Все! Капец! Караул! Сношу пингвина и перехожу обратно в Windows. Примерно таков ход мыслей юзера. А между прочим, все дальнейшие действия сводятся к устранению проблем, о которых говорит сама XFree86 в случае своего неудачного запуска, для чего требуется лишь немного внимательности при анализе возможных причин. Опыт понадобится лишь для того, чтобы сделать систему более удобной (например, русифицированная раскладка клавиатуры), все остальное интеллектуальная XFree86 четвертой версии вполне успешно установит автоматически. Давайте по порядку. Если посмотреть чуть выше пресловутого страшного сообщения, то под версией XFree86, системы и рекомендацией менять ХFree86 хотя бы раз в 6-12 месяцев мы обнаружим такие вот полезные строчки:

А вот что означают эти ребусы:

(--) - соответствующее значение получено путем тестирования оборудования;

(**) - данные установки взяты из конфигурационного файла;

(==) - используются установки по умолчанию;

(++) - параметр взят из командной строки запуска сервера (у него тоже, оказывается, это есть!!!);

(!!) и (II) - уведомление и информационное сообщение;

(WW) - за этим знаком следует предупреждение;

(EE) - сообщение об ошибке; вот что нас больше всего интересует - именно эти сообщения мы и постараемся убрать;

(??) - непонятное серверу (и мне тем более) событие.

Супер! Дополнительно сообщается, что система ведет лог-файл Х-сервера /var/log/XFree86.0.log, т.е. имеем собственный путеводитель по XFree86 со всеми подсказками, а не будем рыскать в потемках. Никаких тебе "Приложение выполнило недопустимую операцию, и дальше разбирайтесь как хотите". Дополнительно можно воспользоваться командой # X -probeonly > probe.log 2>&1; правда, в таком файле информации меньше, но зато ничего отвлекающего. Что просматривать в поисках ошибок - дело вкуса. Далее в последующих строках с (EE) система как бы между прочим сообщает, что не может найти своего конфигурационного файла. Вот как. Про главный файлик-то позабыли! Чтобы не умничать попусту, просто скажу, что это /etc/X11/XF86Config-4 (для четвертой версии; впрочем, XFree86 совсем не против, чтобы он лежал в /usr/X11R6/lib/X11/ и даже в $HOME/ - по крайней мере /root/XF86Config работает точно, что позволяет настроить его действительно индивидуально для каждого пользователя), а также /etc/X11/XF86Config для все еще популярной у владельцев старых машин версии 3.3.6, каковым четвертая версия преспокойно обходится, если нет предыдущего файла - лишь бы формат подходил. Если у вас уже имеется установленный Linux, то можно попробовать взять его оттуда; необязательно, что все так сразу и заработает, но шанс есть (варианты разберем чуть ниже).

Самому же создать данный файл можно несколькими способами - при помощи программ xf86config, xf86cfg и конфигурационного режима запуска самого Х-сервера. Какой вариант сработает в конкретном случае, трудно сказать, а посему рассмотрим их все. Начнем, как водится, с первого. Для этого достаем документацию на видеооборудование (монитор, видеокарта), вводим команду xf86config и начинаем правдиво, ничего не скрывая, отвечать на поставленные вопросы, в качестве ответа выбирая подходящий номер, соответствующий конкретно установленному оборудованию. Там, где предлагается ввести какое-либо значение самостоятельно, в большинстве случаев достаточно оставить подсовываемое по умолчанию. Например, в качестве номера протокола для мыши, подключенной к последовательному порту, в большинстве случаев срабатывают значения 1 или 2, реже приходится выбирать 5; для мыши, подключенной к PS/2-разъему, ответ один - 4 (к ноутбукам это тоже относится). Далее программа спрашивает, к какому устройству подключена мышь, и записывает ответ в /dev/mouse. В большинстве своем это срабатывает, но можно получить и вот такой вот ответ при попытке запуска Х-Window:

В этом случае следует проверить наличие файла /dev/mouse - это символическая ссылка на действительный файл устройства, к которому подключена мышь. Для последовательной мыши - /dev/ttuS0 (FreeBSD - /dev/cuaa0), для PS/2 - /dev/psaux (FreeBSD - /dev/psm0). Например, в CRUX, использующей devfs, такой ссылки не было, поэтому я занес в файл /etc/rc.local такую строку: ln -s /dev/psaux /dev/misc/mouse (необходимо каждый раз создавать ее динамически при запуске, иначе ничего не получится).

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

Но есть одна пакость. Для сервера версии 3.3.6 всего этого было достаточно - как правило, X-Window после описанной процедуры запускался без особых проблем. Единственное, что могло помешать, - отсутствие символической ссылки на вариант сервера, поддерживаемый видеокартой (в третьей версии для каждого типа видеокарты был свой сервер). Это проблема решалась созданием ссылки. В моем случае это выглядело так:

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

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

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

Переходим к утилите хf86cfg, тоже создающей конфигурационный файл, но уже в графическом режиме. Как ни странно, проблем с ней оказалось куда больше. Стоило запустить ее, и все застыло, мышь не двигалась, а потому компьютеру пришлось делать Reset (за время работы Linux'e я уже успел было позабыть, где находится эта кнопка). Надо сказать, данную утилиту в графическом режиме я видел полностью работающей только во FreeBSD. Мышь мне в конце концов удалось-таки заставить работать (причина сбоя заключалась в наличии работающей ссылки /dev/mouse), но все остальное, увы, расшевелить так и не удалось, а потому работу с данной утилитой пришлось закончить. Но когда, наконец, мне удалось запустить X-Window, я все же к ней вернулся, в надежде разобраться. Все оказалось проще простого - запустив # хf86cfg -help, я получил.

Как видите, поживиться есть чем. Нас же в первую очередь интересует опция -textmode. После запуска с такой опцией инициализируются какие-то модули, и затем появляется псевдографическое меню, при помощи которого и можно создать конфигурационный файл. В каждом подпункте можно добавить, удалить и отредактировать опции выбранного устройства. Если xf86cfg удалось хоть как ни будь запуститься, создается файл, содержащий настройки по умолчанию (разрешение 640480, 256 цветов VGA), с которого можно попробовать загрузиться. После окончания процесса настройки все изменения записываются в файл и копируются в указанное место (пункт меню Save XF86Config and Exit). Могу сказать, что после перезагрузки, набрав startx, я не только увидел работающий WindowMaker, но и частота кадров стояла 85.2 Гц при разрешении 1024768. До того только инсталлятор anaconda из RedHat'a мог автоматически выставить максимально допустимую частоту для моего монитора. Кстати, во FreeBSD все эти утилиты можно запустить из /stand/sysinstall, в том числе и xf86cfg -textmode, где для каждого имеется отдельный пункт в настройке Х-Window.

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

После этого что-то там помигает в мониторе, и утилита сообщит, что создала новый конфигурационный файл /root/XF86Config.new, который можно тут же испытать, запустив

Но я просто перенес его в /etc/X11 с именем XF86Config и попробовал запустить графический режим. Естественно, ничего не получилось, хотя на некоторых компьютерах мне все же удалось запустить X-Window - правда, в не самом оптимальном режиме. Но забегая вперед, скажу, что если startx не запускается, попробуйте набрать просто # X; если появилось окно с крестиком мышки, значит, с Х-сервером все нормально, пора разбираться с оконным менеджером. А сейчас смотрим, что там в лог-файле. Ищем сообщения об используемых опциях и загружаемых модулях. Например:

Далее следуют искомые сообщения:

Это сообщение я оставил без внимания; оно связано с активацией функции энергосбережения, но что взять с BIOS четырехлетней давности? Идем дальше:

Как видите, автомат. Настроил все по минимуму: выставил разрешение 640480 с частотой 60 Гц, 8-битный PseudoColor-цвет и решил, что видеопамять у карты 256 Кб. К тому же частоты вертикальной и горизонтальной развертки явно не соответствуют моему монитору. Чтобы поправить положение, открываем файл XF86Config на редактирование. Он состоит из секций, описывающих какую-то определенную часть видеоподсистемы или устройств ввода информации. Чтобы установить значение частоты вертикальной и горизонтальной развертки, дописываем в секцию "Monitor" свои параметры. В моем случае это:

Чтобы заставить систему использовать другую глубину цвета по умолчанию, в начале секции "Screen" дописываем параметр DefaultDepth с указанием нужного значения. И здесь же в подсекции Display с параметром Depth равным DefaultDepth при помощи опции "Modes" указываем используемое разрешение (можно указать несколько сразу).

В моем случае:

Если, как в моем случае, видеопамять определилась не полностью, то в секции "Device" дописываем строку VideoRam 4096 или сколько там у вас.

Пробуем снова запустить X-Window; отмечаем, что все параметры теперь устанавливаются как положено - если нет, ищите ошибки .

Чтобы система меньше думала, вычисляя необходимые параметры, можно сразу задать строку Modeline, отвечающую за частоту развертки, и добавить ее в секцию Monitor. У меня дежурная такая строка:

После всех изменений я получил еще одно сообщение:

Это значит, что моя видеокарта не поддерживает 16-битный цвет, рекомендуется использовать 15-битный. Все свелось к корректировке секции Display.

Обычно же после этого всего X-Windows работает. Если явных ошибок не выдает, попробуйте набрать Х; при нормальном запуске начните разбираться с оконным менеджером. Имеет смысл работать первоначально с twm, который идет в комплекте и не так требователен ко всякого рода излишествам. У меня был случай, когда проблема заключалась в присутствии пустого файла ~/.Xclients, которому отдается предпочтение (читайте "Пингвин стучится в окна"), а так как в нем ничего не было написано, то ничего и не запускалось. В другом случае просто не мог загрузиться IceWM из-за отсутствия одной из необходимых библиотек - об этом я узнал лишь после того как попытался перезагрузиться в него из работающего WindowMaker’a, а так никакой информативной ошибки и не получал вовсе.

Как-то попытался я использовать старый файл, взятый из RedHat 7.3. В ответ, кроме сообщения о том, что система не может загрузить какие-то там модули, получил еще две ошибки:

В чем здесь проблема? Если посмотреть выше по тексту, находим строчку, устанавливающую путь, по которому Х-сервер будет искать фонты для своей работы:

Это означает, что используется сервер шрифтов xfs с конфигурационным файлом /etc/X11/fs/config, и система не может подключиться к нему, чтобы взять их. Скорее всего, xfs просто в данный момент не запущен, и его просто требуется запустить (что-то вроде /etc/init.d/xfs restart). Кстати, можно использовать при наличии сети всего один такой сервер, доверху набитый шрифтами. Подключаться к нему так: в файле /etc/X11/fs/config в строке "client-limit = 10" установите число компьютеров клиентов (рекомендуется не более сорока); в файле /etc/X11/XF86Config -4 замените строку FontPath "unix/:-1" на FontPath "tcp/localhost:7100"; наконец, в файле /etc/rc.d/init.d/xfs замените строку daemon --check xfs xfs -port -1 -daemon -droppriv -user xfs на daemon --check xfs xfs -port 7100 -daemon -droppriv -user xfs и строку daemon --check xfs su xfs -c \"xfs -port -1\" -s /bin/sh на daemon --check xfs su xfs -c \"xfs -port 7100\" -s /bin/sh. Теперь перезапустите сервер и проверьте, слушает ли он порт под номером 7100. А у клиентов следует прописать FontPath "192.168.0.1:7100", где 192.168.0.1 - IP-адрес сервера.

Но по-моему мнению, использовать его на локальном компьютере большого смысла нет, и поэтому его можно отключить (например, в CRUX, где я получил эти строки, он как раз и не используется), а в XF86Config -4 в секции "Files" прописать путь индивидуально к каждому каталогу, стараясь разместить первыми записи о кириллических шрифтах.

Если после этого при запуске будут выдаваться ошибки для определенных каталогов, в них просто нужно зайти и дать команду mkfontdir. После этого, как правило, все работает нормально. Вторая ошибка выглядела так.

Как видно, мышиное устройство определилось правильно и оно работает, но система не может подобрать самостоятельно для него протокол, который по умолчанию стоит как auto. Ну, это мы еще в первом классе проходили. В секции Section "InputDevice" ищем идентификатор мыши по умолчанию (Identifier "Mouse0"), заменяем строку Option "Protocol" "auto" на Option "Protocol" "IMPS/2" для PS/2-мыши со скроллом, или просто PS/2, если без него. Если используется последовательная мышь, то в качестве протокола используется Microsoft - или IntelliMouse, если с колесиком. При исследовании проблем я нашел любопытный модуль, предназначенный для работы с video4linux, а попросту с ТВ-тюнерами и подобными устройствами, - к сожалению, испытать догадку не на чем, но у кого проблемы с их настройкой, попробуйте добавить в секцию "Module" строку Load "v4l" - авось, поможет. А вообще, загляните в каталог, куда указывает ModulePath (обычно это /usr/X11R6/lib/modules) - может, найдется что-то подходящее.

Вот и все ошибки, которые мне удалось собрать за время эксплуатации Linux. Полагаю, это те, что чаще всего встречаются, остальные возникают в исключительных случаях. Если что, адрес есть, интересно будет пополнить коллекцию. Надеюсь, мне удалось хоть немного помочь разобраться в происходящем. Как видите, Linux не скрывает проблем, и главное, при их возникновении можно спокойно обдумать сложившуюся ситуацию и поискать выход. Ошибки следует искать в каталоге /var/log - там обычно находится зацепка, помогающая распутать весь клубок. Наконец, чрезвычайное сообщение: на днях официально стартовал проект Xwin - альтернативный проект по созданию X-сервера "другого типа" - http://xwin.org/index.php. Так что поживем - увидим.

Linux forever!

 Читайте в следующем номере:

Впечатления от Red Hat Linux 9 - Настройка и русификация самого распространенного дистрибутива.

Ваше предложение - Пишите на xoid26@linux-online.ru, какую информацию хотели бы вы видеть в рассылке, и, может быть, в следующих выпусках вы найдете именно то, что вам нужно!!

/\ Наверх /\ OS Linux для начинающих. (c) 2003 Valery V. Kachurov


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное