Данная статья является продолжением цикла моих статей о системе FreeBSD. Ниже пойдет рассказ о графической стороне FreeBSD.

X Window System:

1. Обзор
2. Основы X
3. Установка XFree86
4. Конфигурация XFree86

[1] Xfree86 используется FreeBSD для обеспечения
мощной графической среды. XFree86 является
открытой реализацией X Window System. Официальный
сайт Xfree86: http://www.xfree86.org/.

[2] Из handbook по FreeBSD:

"Первое знакомство с X может оказаться
чем-то вроде шока для тех, кто работал с
другими графическими системами, такими, как
Microsoft Windows или Mac OS. Нет необходимости
вникать во все детали различных
компонентов X и их взаимодействия; однако
некоторые базовые знания делают возможным
использование сильных сторон X."

Х не первая графическая система, до нее была
W (Window), а по заявлениям разработчиков - X это
следующая буква в алфавите =)

Поскольку FreeBSD разрабатывается как сетевая
ОС, т.е. для модели клиент-сервер, то и Иксы
разрабатывались для такой же модели.
Разделяются Х на два типа - клиент и сервер.
Сервером является машина, у которой есть
клавиатура, мышь и монитор, клиентом будут
все приложения, которые пользователь
запускает. Сервер отвечает за управление
дисплеем, обработку ввода с клавиатуры,
мыши и так далее. Если кому-то не понятно, то
разруливаю. Клиент (программа) посылает
серверу сигнал типа "нарисуй мне окно с
координатами 15,56-25,87", а сервер посылает
сообщения типа "пользователь кликнул на
кнопке "Ok". Необходимо запомнить, что в
Иксах модель клиент-сервер является
обратной, чем это обычно представлено.
Например, сервером может быть даже
бездисковый терминал, т.е. слабая машинка, в
которой нет жесткого диска, есть только
монитор и клавиатура. А клиент будет
запускать программы с какой-нить дорогой и
навороченной машины, подключенной в сеть.
Протокол общения сервера-клиента
располагает к независимости от ОС, т.е.
реально запускать, например, сервер под Windows,
а клиент под FreeBSD.

Из handbook по FreeBSD:

"Философия построения X очень похожа на
философию построения UNIX, "инструменты, не
политика". Это значит, что X не пытаются
диктовать то, как должна быть выполнена
работа. Вместо этого пользователю
предоставляются инструменты, а за
пользователем остается принятие решения о
том, как использовать эти инструменты. Этот
подход расширен в X тем, что не задается, как
окна должны выглядеть на экране, как их
двигать мышью, какие комбинации клавиш
должны использоваться для переключения
между окнами (то есть Alt+Tab, в случае
использования Microsoft Windows), как должны
выглядеть заголовки окон, должны ли в них
быть кнопки для закрытия, и прочее.

Вместо этого X делегирует ответственность
за это приложению, которое называется "Window
Manager" (Менеджер Окон). Есть десятки
оконных менеджеров для X: AfterStep, Blackbox, ctwm,
Enlightenment, fvwm, Sawfish, twm, WindowMaker и другие. Каждый
из этих оконных менеджеров предоставляет
различные внешние виды и удобства;
некоторые из них поддерживают "виртуальные
рабочие столы"; некоторые из них
позволяют изменять назначения комбинаций
клавиш, используемых для управления
рабочим столом; в некоторых есть кнопка "Start"
или нечто подобное; некоторые поддерживают
"темы", позволяя изменять внешний вид,
поменяв тему. Эти оконные менеджеры, а также
множество других, находятся в категории x11-wm
коллекции Портов.

Кроме того, оболочки KDE и GNOME обе имеют
собственные оконные менеджеры, которые
интегрированы с оболочкой.

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

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

Широко известная политика фокусировки
называется "click-to-focus". Эта модель
используется в Microsoft Windows, когда окно
становится активным после получения щелчка
мыши.

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

Самыми популярными политики фокусирования
являются:
focus-follows-mouse (фокус следует за мышью)

Фокусом владеет то окно, что находится под
указателем мыши. Это не обязательно будет
окно, которое находится поверх всех
остальных. Фокус меняется при указании на
другое окно, при этом также нет нужды
щёлкать на нём.
sloppy-focus (нечеткий фокус)

С политикой focus-follows-mouse если мышь помещается
поверх корневого окна (или заднего фона), то
никакое окно фокус не получает, а нажатия
клавиш просто пропадают. При использовании
политики нечёткого фокуса он меняется
только когда курсор попадает на новое окно,
но не когда уходит с текущего окна.
щелчок для выбора фокуса

Активное окно выбирается щелчком мыши.
Затем окно может быть "поднято" и
появиться поверх всех других окон. Все
нажатия клавиш теперь будут направляться в
это окно, даже если курсор переместится к
другому.

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

[3] Перед тем, как ставить Xfree86 решите - какую
ветку вы будите юзать. На данный момент
приемлемыми являются 3 и 4 ветки. Главное
отличие в том, что 3 ветка больше не
поддерживается, является стабильной и
работает на огромном количестве адаптеров.
4 ветка является разрабатываемой, немного
не стабильна, работает на небольшом
количестве адаптеров, но очень усилила свою
мощь в плане графики. XFree86 4.X теперь является
стандартно используемой во FreeBSD версией X
Window System.

Установка XFree86 из коллекции портов
происходит примерно так:

# cd /usr/ports/x11/XFree86
# make all install clean

Если Вы хотите поставить Xfree86 из бинарных
фалов, то нужно выполнить:

# pkg_add -r XFree86

Это загрузит последнюю версию XFree86.

Для установки XFree86 4.X вы можете также
воспользоваться Коллекцией Портов, для
чего вам нужно просто набрать следующие
команды:

# cd /usr/ports/x11/XFree86-4
# make install clean

[4] Из handbook по FreeBSD:
"5.4 Конфигурация XFree86
Текст предоставил Christopher Shumway.

5.4.1 Перед тем, как начать
Перед настройкой XFree86 4.X необходима
следующая информация о конфигурируемой
системе:

Характеристики монитора

Набор микросхем, используемый в
видеоадаптере

Объём видеопамяти

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

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

Объём видеопамяти графического адаптера
определяет разрешение и глубину цвета, с
которым может работать система. Это важно,
чтобы пользователь знал ограничения
системы.

5.4.2 Конфигурирование XFree86 4.X

Процесс настройки XFree86 4.X является
многошаговым. Первый шаг заключается в
построении начального конфигурационного
файла посредством запуска XFree86 с параметром
-configure. Работая с правами суперпользователя,
просто запустите:

# XFree86 -configure

При этом в каталоге /root будет создан скелет
конфигурационного файла XFree86 под именем
XF86Config.new (на самом деле в качестве каталога
используется тот, что задан в переменной
окружения $HOME, а она зависит от способа
получения прав суперпользователя).
Программа XFree86 сделает попытку распознать
графическое оборудование системы и запишет
конфигурационный файл, загружающий
правильные драйверы для обнаруженного
оборудования в системе.

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

# XFree86 -xf86config XF86Config.new

Если появилась чёрно-белая сетка и курсор
мыши в виде X, то настройка была выполнена
успешно. Для завершения тестирования
просто нажмите одновременно Ctrl+Alt+Backspace.

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

Теперь выполните тонкую настройку в файле
XF86Config.new по своему вкусу. Откройте файл в
текстовом редакторе, таком, как emacs или ee.
Сначала задайте частоты для монитора. Они
обычно обозначаются как частоты
горизонтальной и вертикальной
синхронизации. Эти значения добавляются в
файл XF86Config.new в раздел "Monitor":

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSection

Ключевых слов HorizSync и VertRefresh может и не
оказаться в файле конфигурации. Если их нет,
то они должны быть добавлены, с указанием
корректных значений горизонтальной
частоты синхронизации после ключевого
слова HorizSync и вертикальной частоты
синхронизации после ключевого слова VertRefresh.
В примере выше были введены частоты
монитора настраиваемой системы.

X позволяет использовать возможности
технологии DPMS (Energy Star) с поддерживающими её
мониторами. Программа xset управляет
временными задержками и может явно
задавать режимы ожидания, останова и
выключения. Если вы хотите включить
использование возможностей DPMS вашего
монитора, вы должны добавить следующую
строку в раздел, описывающий монитор:

Option "DPMS"

Пока файл конфигурации XF86Config.new открыт в
редакторе, выберите желаемые разрешение и
глубину цвета, которые будут
использоваться по умолчанию. Они задаются в
секции "Screen":

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection

Ключевое слово DefaultDepth описывает глубину
цвета, с которой будет работа по умолчанию.
Это значение может быть переопределено при
помощи параметра командной строки -bpp для
XFree86(1). Ключевое слово Modes описывает
разрешение, с которым нужно работать при
данной глубине цвета. Заметьте, что
поддерживаются только те стандартные
режимы VESA, что определены графическим
оборудованием настраиваемой системы. В
примере выше глубина цвета по умолчанию
равна двадцати четырём битам на пиксел. При
такой глубине цвета принимается разрешение
в одну тысячу двадцать четыре на семьсот
шестьдесят восемь точек.

Наконец, запишите конфигурационный файл и
протестируйте его при помощи тестового
режима, описанного выше. Если все в порядке,
то конфигурационный файл нужно установить
в общедоступное место, где его сможет найти
XFree86. Обычно это /etc/X11/XF86Config или /usr/X11R6/etc/X11/XF86Config.

# cp XF86Config.new /etc/X11/XF86Config

После того, как конфигурационный файл будет
помещён в общедоступное место, настройка
завершена. Для запуска XFree86 посредством startx
установите порт x11/wrapper. XFree86 4.X можно также
запустить через xdm.

Note: Имеется также графический инструмент
для настройки, xf86cfg, который включён в
дистрибутив XFree86 4.X. Он позволяет выполнить
настройку в интерактивном режиме
посредством выбора соответствующих
драйверов и настроек. Эту программу можно
использовать и в консольном режиме, просто
нужно запустить её как xf86cfg -textmode. Для
получения более полной информации
обратитесь к странице справочной системы
xf86cfg.

5.4.3 Тонкие вопросы настройки
5.4.3.1 Конфигурирование при работе с
графическими чипсетами Intel(r) i810

Конфигурирование при работе с
интегрированными наборами микросхем Intel i810
требует наличия agpgart, программного
интерфейса AGP, посредством которого XFree86
будет управлять адаптером. Драйвер agp
присутствует в ядре GENERIC с момента выпуска
4.8-RELEASE и 5.0-RELEASE. Для предшествующих релизов
вам нужно добавлять такую строку:

device agp

в конфигурационный файл вашего ядра и
перестраивать новое ядро. Однако вместо
этого вы можете подгружать модуль ядра agp.ko
автоматически во время загрузки системы
при помощи loader. Для этого просто добавьте
следующую строку в файл /boot/loader.conf:

agp_load="YES"

Затем, в случае использования FreeBSD 4.X или
более ранних её версий, для программного
интерфейса должен быть создан файл
устройств. Для создания файла устройств для
AGP запустите MAKEDEV(8) в каталоге /dev:

# cd /dev
# sh MAKEDEV agpgart

Note: Во FreeBSD 5.X и более поздних версиях будет
использоваться devfs для выделения файлов
устройств в прозрачном режиме, поэтому шаг
с MAKEDEV не нужен.

Это позволит конфигурировать графическое
оборудование точно так же, как и любой
другой графический адаптер. Заметьте, что
для систем, у которых драйвер agp в ядро не
вкомпилирован, попытка погрузить модуль с
помощью kldload окончится неудачно. Этот
драйвер должен оказаться в ядре во время
загрузки, либо вкомпилированным, либо
подгруженным посредством /boot/loader.conf.

Если вы используете XFree86 4.1.0 (или более
позднюю версию), и выдаются сообщения о
неразрешённых ссылках типа fbPictureInit,
попробуйте добавить такую строчку после
Driver "i810" в конфигурационном файле XFree86:

Option "NoDDC"

Check Also

Разгоняем микроконтроллер. Как я выжал 620 МГц из совместимой с Arduino платы

Производительности всегда не хватает. Иногда проблему можно решить, просто обновившись до …

Оставить мнение