Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.

Купить подушку, сравнить цены на подушки bufetnitsa.ru/tekstil/podushki.
Выбор трюкового самоката трюковой самокат wheelexpert.ru.

Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next: 6 Networking Up: Linux Installation and Getting Previous: 4 System Administration Оглавление: Оглавление.

5 X Window System

 

   X Window System является большой, мощной и сложной графической средой для UNIX систем. Система X-Window была разработана в Массачуссетстком технологическом институте (MIT), которая стала затем стандартом для всех UNIX систем. Практически каждая рабочая станция UNIX в мире работает на одном из вариантов X-Window.

  

Группа программистов, возглавляемая Дэвидом Вексельблатом (David Wexelblat), <sl>(Вы можете связаться с Девидом по E-Mail: dwex@XFree86.org)<sl> произвела перенос MIT X Window System версия 11, релиз 6 (X11R6) для 80386/80486/Pentium UNIX систем как свободно распространяемого программного продукта. Эта версия, известная как XFree86 <F>TM<F>, <sl>(XFree86 является торговой маркой XFree86 Project, Inc.)<sl> доступна для System V/386, 386BSD и других реализаций UNIX для процессоров x86, включая Linux. Она включает в себя все требуемые выполняемые коды, конфигурационные файлы, библиотеки и инструментарий.

Некоторые интересные возможности данной версии:

  • полная поддержка версии X11R6.3 X Consortium
  • новое расширение DPMS от Digital Equipment Corporation;
  • расширение Low Bandwidth X (LBX) для всех X серверов;
  • поддержка Microsoft IntelliMouse;
  • поддержка сжатия шрифтов с помощью gzip font.

Полная настройка и использование X Window выходит за пределы этой книги. Вам следует обратиться к книге The X Window System: A User's Guide (см. приложение A). В этой главе мы опишем шаг за шагом установку и настройку XFree86 для Linux. Для более детального ознакомления вы можете обратиться к документации, поставляемой вместе с XFree86 (она обсуждается ниже). Другим полезным источником информации является THE LINUX XFree86 HOWTO.

5.1 X Window: требования к аппаратуре.

 

5.1.1 Видеокарта и монитор.

     Документация, поставляемая вместе с видеоадаптером, как правило указывает тип используемых микросхем. Если вы приобрели новую видеокарту или новый компьютер, попросите поставщика уточнить изготовителя, модель и тип микросхем видеокарты. Как правило поставщики охотно дадут вам эту информацию. Большинство из них сообщит, что видеокарта является стандартной SVGA картой и будет работать в вашей операционной системе. Объясните им, что ваше программное обеспечение (Linux и XFree86!) не поддерживает всех видеокарт и вам требуется дополнительная информация.

Вы можете также определить тип микросхемы, вызвав команду SuperProbe, входящую в состав XFree86. Это будет описано ниже.

Как правило, все видеокарты поддерживаются как в режиме 256 цветов, так и в монохромном режиме. Если на вашей видеокарте установлено достаточно видеопамяти, многие из микросхем поддерживаются в режиме 15, 16, 24 и 32 бита на точку. Обычно видеокарты используются в режиме 8 бит на точку (256 цветов).

Монохромный сервер поддерживает основные карты VGA, монохромные карты Hercules, Hyundai HGC1280, Sigma LaserView и Apollo monochrome cards.

Этот список несомненно расширится со временем. Полный список поддерживаемых карт вы найдете в замечаниях к текущей версии XFree86.

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

Также поддерживаются карты с ускорителями на чипсетах S3. Посмотрите документацию на XFree86 на предмет поддержки вашей карты ДО опытов с оборудованием. Сравнение производительности карт регулярно публикуется в Usenet news groups comp.windows.x.i386unix и comp.os.linux.misc.

Замечу, что мой персональный компьютер с Linux содержит 486DX2-66, 20 мегабайт RAM, и имеет видеоадаптер VLB S3-864 с 2 мегабайтами оперативной памяти. Я протестировал X benchmarks на этой машине и на рабочей станции Sun Sparc IPX. Linux где-то раз в 7 быстрее, чем Sparc IPX. Обычно, XFree86 под Linux с графическим ускорителем показывает существенно большую производительность чем коммерческие рабочие станции (которые обычно используют неэффективные алгоритмы обработки графической информации).

5.1.2 Память, CPU и место на диске.

Лучше всего ставить XFree86 под Linux на 80486 или более быстрой машине с не менее, чем 16 МБ RAM. Имейте в виду, что чем больше физической оперативной памяти вы имеете, тем меньше операционная система использует свопинг. Так как операция свопинга медленная (доступ к диску намного медленнее, чем к памяти), для комфортабельной работы вам следует иметь 16 или более мегабайт. Система с 4-мя мегабайтами работает намного (в десятки раз) медленнее чем с 16-ю мегабайтами.

Стандартная установка XFree86 требует 60-80 МБ на диске. Сюда входят X сервер(ы), шрифты, библиотеки и стандартные утилиты. Для нормальной работы с приложениями надо около 200 МБ.

5.2 Установка XFree86.

  Дистрибутив Xfree86 в выполняемых кодах можно найти на целом ряде FTP-серверов. На sunsite.unc.edu он находится в каталоге /pub/X11/XFree86. (На момент написания текущая версия была 3.3.1; периодически появляются новые версии).

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

Вам потребуется один из серверов:


Файл           Описание

X33S514.tgz    Server for 8514 based boards.
X33AGX.tgz     Server for AGX based boards.
X33li2S.tgz    Server for the Imagine 1128 boards.
X33Ma64.tgz    Server for Mach64 basedboards.
X33Ma32.tgz    Server for Mach32 basedboards.
X33Ma8.tgz     Server for Mach8 basedboards.
X33Mono.tgz    Server for monochrome video modes.
X33P9K.tgz     Server for P9000 basedboards.
X33S3.tgz      Server for S3 basedboards.
X33S3VI.tgz    Server for S3/V3rge basedboards.
X33SVGA.tgz    Server for Super VGA based boards.
X33SVGAi6.tgz  Server for VGA/EGA basedboards.
X33W32.tgz     Server for ET4000/W32 based boards.

Все нижеперечисленные файлы также нужны:


Файл          Описание

preinst.sh    Pre-installation script
postinst.sh   Post-installation script
x33bin.tgz    Clients, run-time libs, and app-defaults files
x33doc.tgz    Docunientation
x33fnts.tgz   75dpi, misc and PEX fonts
x33lib.tgz    Data files required at run-time
x33man.tgz    Manual pages
x33setup.tgz  XF86 Setup utility
x33vg16.tgz   16 colour VGA server (XF86 Setup needs this server)

Следующие файлы не являются обязательными для существующих инсталляций, но нужны для новых:


Файл         Описание

X33cfg.tgz   sample config files for xinit, xdm

Не ставьте X33cfg.tgz поверх существующих инсталляций XFree86, не зарезервировав файлы настроек! Распаковка X33cfg.tgz перезапишет их. Если Вы используете какие-то специальные файлы настроек, ставить данный пакет иногда и вовсе не надо.

Шрифты в версии 3.3.1 сжаты программой gzip. Вероятно, Вы захотите удалить старые шрифты. Но сначала зарезервируйте их! X сервера и сервера шрифтов из прошлых версий не могут читать шрифты, сжатые gzip, так что сохраните старые шрифты, если планируется работа и со старыми серверами.

Следующие файлы не являются обязательными:


Файл          Описание

X33fl00.tgz   100dpi fonts
X33fcyr.tgz   Cyrillic fonts
X33fnon.tgz   Other fonts (Chinese, Japanese, Korean, Hebrew)
X33fscl.tgz   Scalable fonts (Speedo and Type1)
X33fsrv.tgz   Font server and config files
X33prog.tgz   X header files, config files and compile-time libs
X33nest.tgz   Nested X server
X33vfb.tgz    Virtual framebuffer X server
X33prt.tgz    X Print server
X33ps.tgz     PostScript version of the documentation
X33htinl.tgz  HTML version of the documentation
X33jdoc.tgz   Do cunientation in Japanese (for version 3.2)
X33jhtm.tgz   HTML version of the do cunientation in Japanese (3.2)
X331kit.tgz   X server LinkKit

Каталог XFree86 должен содержать файлы README и замечания по инсталляции текущей версии.

Все что вам требуется для инсталляции XFree86, это получить указанные файлы, создать каталог /usr/X11R6 (пользователем root), перейти в этот каталог и распаковать файлы. Затем запустите скрипт preinst.sh. Вы должны скопировать его и все архивные файлы дистрибутива в каталог /var/tmp перед запуском preinst.sh. /usr/X11R6 должен быть текущим каталогом при распаковке архивов и запуске preinst.sh:


# cd /usr/X11R6
# sh /var/tmp/preinst.sh

Распакуйте файлы из /var/tmp в /usr/X11R6 командой:


# gzip -d /var/tmp/X33prog.tgz|tar vxf

Имейте в виду, что эти файлы упакованы относительно каталога /usr/X11R6, так что необходимо распаковывать их находясь в этом каталоге.

После распаковки всех архивов, запустите скрипт postinst.sh:


# cd /usr/X11R6
# sh /var/tmp/postinst.sh

Теперь необходимо связать файл /usr/X11R6/bin/X с тем сервером, который вы намереваетесь использовать. Например, если вы желаете работать с SVGA сервером, файл /usr/bin/X11/X необходимо связать с файлом /usr/X11R6/bin/XF86_SVGA. Если же вы собираетесь использовать монохромный сервер, переустановите связь X с XF86_MONO командой:

# In -sf /usr/XllR6/bin/XF86-MONO /usr/X11R6/bin/X

Это же справедливо и для серверов других видеокарт.

Вам следует убедиться, что каталог /usr/X11R6/bin находится в переменной среды PATH. Это может быть сделано редактированием файлов /etc/profile или /etc/csh.login (в зависимости от оболочек (shell) которые вы или другие пользователи используют). Вы также можете просто добавить этот каталог с вашей переменной PATH, корректируя в вашем домашнем каталоге файлы .bashrc или .cshrc, в зависимости от типа вашей оболочки.

Вам также необходимо обеспечить загрузку динамических библиотек. Для этого добавьте строку:


/usr/XllR6/lib

в файл /etc/ld.so.conf и выполните /sbin/ldconfig как root.

5.3 Исследование аппаратной конфигурации.

Если вы не уверены какой сервер использовать, или не знаете какую микросхему содержит ваша видеокарта, вы можете запустить команду SuperProbe (включенную в /usr/X11R6/bin). Эта программа попытается определить тип микросхемы вашей видеокарты и другую полезную информацию.

Для запуска SuperProbe из командной строки наберите:


# SuperProbe

Возможно, что SuperProbe запутается в устройствах, которые используют адреса I/O портов, которые могли бы использоваться платами видео. Чтобы такого не было, используйте параметр excl со списком адресов, которые SuperProbe не должен исследовать. Например:


# SuperProbe -excl 0x200-0x230.0x240

Адреса даны как шестнадцатеричные числа, которые имеют префикс 0x.

Чтобы отобразить список видеокарт, известных SuperProbe, наберите:


# SuperProbe -info

SuperProbe может выдать много информации при запуске с параметром -verbose. Вы можете перенаправить вывод в файл:


# SuperProbe -verbose >superprobe.out

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

5.4 Автопостроение файла XF86Config.

Создание файла XF86Config вручную трудная задача, но это не невозможно. Несколько инструментальных средств в XFree86 версии 3.3.1 могут помочь Вам. Одно из них, программа XF86Setup, может автоматически генерировать файл XF86Config в правильном формате. Вы должны знать точные спецификации о вашей плате видео, вертикальных и горизонтальных значениях регенерации вашего монитора. Большинство информации может быть найдено в руководствах.

Несколько других программ конфигурации также доступны, в зависимости от дистрибутива Linux. Наиболее общие: Xconfigurator и xf86config. Последняя программа это старшая версия XF86Setup и она включена в старые выпуски XFree86. Вы должны всегда использовать XF86Setup если есть и XF86Setup, и xf86config.

5.5 Настройка XFree86.

 

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

В этой главе мы опишем как создать и отредактировать XF86Config файл, который настраивает сервер XFree86.

В большинстве случаев лучше всего начать с основной конфигурации XFree86, которая использует низкое разрешение, например 640x480, поддерживаемого всеми видеокартами и мониторами. Однажды настроив XFree86 на стандартное разрешение, вы можете затем подстроить файл конфигурации для для того, чтобы использовать все возможности, предоставляемые вашей аппаратурой.

В дополнение к информации приведенной здесь, вам следует ознакомиться со следующей документацией:

  • Документация на XFree86 в /usr/X11R6/lib/X11/doc (из пакета XFree86-3.1-doc). Посмотрите файл README.Config, который является руководством по настройке XFree86.
  • Разные видео чипсеты имеют разные README файлы в разных каталогах (например, README.Cirrus и README.S3). Почитайте файл о Вашей видеокарте.
  • man-руководство по XFree86.
  • man-руководство по XF86Config.
  • man-руководство по используемому серверу, например XF86_SVGA или XF86_S3.

     Основной файл настройки XFree86 /usr/X11R6/lib/X11/XF86Config. Он хранит данные о мышке, параметрах видеокарты, мониторе и тому подобном. Файл XF86Config.eg входит в дистрибутив XFree86 в качестве примера. Скопируйте его в XF86Config и отредактируйте.

В man-руководстве по XF86Config описывается и формат файла XF86Config. Если Вы еще не прочитали руководство, сделайте это.

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

Учтите, что формат XF86Config может меняться в разных версиях XFree86. Ознакомьтесь с документацией к дистрибутиву.

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

Каждая секция файла XF86Config определяется парой строк Section "<section-name>" ... EndSection.

Первая секция файла называется Files, и выглядит следующим образом:


Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/XiiR6/lib/X11/fonts/75dpi"
End-Section

Строка RgbPath указывает местоположение базы данных цветов, а каждая строка FontPath определяет каталог, содержащий шрифты. Как правило, вам не следует изменять эти строки, вам следует только убедиться, что все каталоги шрифтов присутствуют. Обычно они лежат в /usr/X11R6/lib/X11/fonts.
Следующая секция имеет имя ServerFlags и определяет несколько глобальных параметров для сервера. Как правило эта секция пуста:

Section "ServerFlags"
# Uncomment this to cause a core dump at the spot where a signal is
# received. This may leave the console in an unusable state, but may
# provide a better stack trace in the core dump to aid in debugging
# NoTrapsignals

# Uncomment this to disable the Crtl-Alt-BS server abort sequence
# DontSap
EndSection

Все строки данной секции закомментированы.

Следующая секция Keyboard. Она определяет работу клавиатуры. Доступны также и другие режимы, кроме приведенных в данном примере. Описанные здесь опции работают на большинстве клавиатур:


Section "Keyboard"

Protocol "Standard"
AutoRepeat 500 5
Server NumLock

End-Section

Следующая секция, Pointer, определяет параметры мыши:


Section "Pointer"

Protocol    "MouseSystems"
Device      "/dev/mouse"

# Baudrate and SampleRate are only for some Logitech mice
#    BaudRate   9500
#    SampleRate 150

# Emulate 3 Buttons is an option for 2-button Microsoft mice
#    Emulate 3 Buttons

# ChordMiddLe is an option for some 3-button Logitech mice
#    ChordMiddLe

EndSection

Единственными опциями, на которые стоит обратить внимание являются Protocol и Device. Protocol определяет протокол, который использует ваша мышь. Возможными типами (для Linux есть другие опции, доступными для других ОС) являются:
  • BusMouse
  • Logitech
  • Microsoft
  • MMSeries
  • Mouseman
  • MouseSystems
  • PS/2
  • MMHitTab
Для Logitech busmouse следует использовать протокол BusMouse. Заметьте, что для старых мышей Logitech необходимо использовать протокол Logitech, а для новых или Microsoft, или Mouseman протокол.

Строка Device определяет устройство к которому подключена мышь. На большинстве систем Linux это /dev/mouse. /dev/mouse обычно связано с соответствующим серийным портом (например /dev/cua0 соответствует COM1, а /dev/cua1 COM2) или с портом busmouse. В любом случае убедитесь, что указанное устройство есть в каталоге /dev и работоспособно.

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

Section "Monitor"
Identifier "CTX 545S III"

# These values are for a CTX 545SIII only! Don't attempt to use
# them with your monitor (unless you have this model?
Bandwidth 50
HorizSync 30-38,47-50
VertRefresh 50-90

# Modes  Name      dot clock hori - vert
ModeLine "640x480"  25  540   554 750 800 480 491 493 525
ModeLine "800x600"  35  800   824 895 1024 500 501 503 525
ModeLine "1024x768" 55 1024  1088 1200 1328 758 783 789 818

EndSection

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

HorizSync    31.5, 35.2, 37.9, 35.5, 48.95

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

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

Сервер использует значения HorizSync и VertRefresh ТОЛЬКО для того, чтобы убедиться что вы верно определили разрешение монитора. Это исключает возможность разрушения монитора при попытке работы с ним на частоте превышающей максимально допустимую.

Строка ModeLine определяет один из режимов разрушения вашего монитора. Ее формат:

ModeLine name clock horiz-values vert-values

name строка, которую вы можете использовать в этом файле в дальнейшем для указания разрешения. dot-clock определяет частоту задающего генератора адаптера для этого разрешения. Обычно частота указывается в мегагерцах. Она определяет скорость с которой видеокарта должна посылать значения точек экрана на монитор при указанном разрешении. horiz-values и vert-values состоят из 4-х цифр каждая. Эти значения определяют, когда электронная пушка монитора во время развертки должна включиться и когда должны проходить импульсы горизонтальной и вертикальной синхронизации во время развертки луча.

Как описать строку ModeLine для вашего монитора? Файл VideoModes.doc, включенный в дистрибутив XFree86, детально описывает как определить эти значения для каждого разрешения, которое поддерживает ваш монитор. Значение clock должно соответствовать частотам, которые поддерживает ваша видеокарта. Далее в файле XF86Config вы определите эти значения.

Существует два файла modeDB.txt и Monitors в дистрибутиве XFree, которые могут содержать данные ModeLine для вашего монитора. Эти файлы располагаются в каталоге /usr/X11R6/lib/X11/doc.

Вы можете начать со значений ModeLine для мониторов стандарта VESA. Этот режим поддерживается большинством мониторов. Файл modeDB.txt включает описания синхронизации для стандартного разрешения VESA. В этом файле вы найдете такие строки:


# 640X48O@60Hz Non-Interlaced mode
# Horizontal Sync = 31 5kHz
# Timing- H=(0.95us, 3.81us, 1.59us). V=(0.35ms, 0.064ms, 1.02ms)
#
# name        clock   horizontal timing       vertical timing flags
"640X480"     25.175  640        664 760 800  480      491 493 525

Это стандартная строка синхронизации для разрешения 640x480 точек. Она устанавливает частоту 25.175 Mhz, которая должна поддерживаться большинством мониторов (более подробно об этом позже). В вашем файле эта строка должна выглядеть так:


ModeLine "640X480" 25.175 640 664 760 800 4SO 491 493 525

Заметим, что аргумент name в строке ModeLine (в нашем случае "640x480") может быть любой строкой, которая описывает для вас разрешение монитора.

Для каждой строки ModeLine сервер проверяет, попадают ли указанные значения в интервал указанных значений Bandwidth, HorizSync и VertRefresh. Если нет, то сервер выдаст предупреждение при начале работы.

Если стандартные значения синхронизации VESA не работают у вас, то просмотрите другие значения в файлах modeDB.txt и Monitors для других типов мониторов. Заметим, что многие 14 и 15 дюймовые мониторы не могут поддерживать разрешений 1024x768 точек из-за низкого значения Bandwidth. То есть, если вы не нашли описание режима высокого разрешения для вашего монитора, то не исключено, что ваш монитор вообще не поддерживает такое разрешение.

Если вы потерпели неудачу с подбором строки ModeLine, изучите инструкцию описанную в файле VideoModes.doc вашего дистрибутива. По этой инструкции вы сможете описать строку ModeLine по спецификациям, описанным в вашем руководстве на монитор. Здесь также может помочь файл VideoModes.doc, в котором также описана директива ModeLine.

В конце концов, если вы не можете подобрать правильные значения строки ModeLine, то вы можете просто слегка изменить эти значения для достижения требуемого результата. Например, если изображение на экране слегка уходит влево или вверх, вы можете по инструкции из файла VideoModes.doc настроить значения синхронизации. Проверьте также наличие управляющих клавиш на вашем мониторе! Частенько бывает достаточным изменить горизонтальный и вертикальный размер изображения во время работы XFree86 чтобы добиться желаемой центровки и размера изображения. Наличие этих клавиш на монитора значительно упрощает жизнь.

Не используйте значения синхронизации монитора или значения ModeLine для мониторов не вашей модели. Если Вы попробуете управлять монитором на частоте, для которой он не предназначен, Вы можете повредить или даже уничтожить его!

Следующая секция Device описывает параметры вашей видеокарты. Например:


Section "Device"

Identifier "#9 GXE 64"
# nothing yet; we fill in these values later

EndSection

Эта секция описывает возможности вашей карты. Identifier определяет имя этого описания для ссылки на него в дальнейшем.

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

Прежде чем мы это сделаем, нам следует закончить описание файла XF86Config. Следующая секция, Screen, описывает возможные режимы работы X-сервера с видеокартой и монитором:


Section "Screen"

Driver "Accel"
Device "#9 GXE 64"
Monitor "CTX 546S III"

Subsection "Display"
Depth 16
Modes "1024X768" "800X600" "640X480"
Viewport   0 0
Virtual    1024 768
EndSubsection

EndSection

Строка Driver определяет тип сервера, который вы будете использовать. Вы можете использовать следующие сервера:

  • Accel: для XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514, XF86_P9000, XF86_AGX и XF86_W32.
  • SVGA: для XF86_SVGA.
  • VGA16: для XF86_VGA16.
  • VGA2: для XF86_Mono.
  • Mono: для монохромных не-VGA XF86_Mono и XF86_VGA16.

Убедитесь, что файл /usr/X11R6/bin/X является символьной ссылкой на используемый вами сервер.

Строка Device определяет идентификатор секции Device, описывающей установленную видеокарту. Выше мы описали секцию Device с идентификатором:

Identifier "# GXE 64"

Следовательно, здесь мы используем "#9 GXE 64" в строке Device.

Точно так же строка Monitor определяет имя секции Monitor для данного сервера, в данном примере "CTX 5468 NI".

Подсекция Display определяет режим работы сервера при выводе информации на экран. Файл XF86Config детально описывает эти режимы. Режимы, которые вам необходимо знать:

  • Depth. Определяет число битов на точку. Обычно Depth принимает значение 8 (256 цветов). Для сервера VGA16 вам следует установить значение Depth 4 и для монохромного сервера 1. Если вы используете видеокарту с ускорителем и имеете достаточно памяти для поддержки большего числа бит на точку, Вы можете установить Depth 15, 16, 24 или 32. Если с этими значениями появились проблемы вернитесь к значению 8 и попытайтесь решить проблему позже.
  • Modes.Указывает список видеорежимов, описанных в секции ModeLines. Выше мы описали режимы Modelines названные "1024x768", "800x600" и "640x480". Следовательно строка Modes будет выглядеть:
    
    Modes    "1024X768" "800X600" "640X480"
    
    
    Первый режим, перечисленный в этой строке устанавливается по умолчанию после начала работы сервера. Далее вы можете переключать режимы разрешения изображения, использую клавиши ctrl-alt-numeric + и ctrl-alt-numeric -.

    Лучше всего при начальном конфигурации XFree86 использовать минимальное разрешение, например 640x480, которое работает на большинстве систем. И после настройки этого режима настроить XF86Config на работу с большими разрешениями.

  • Virtual. Устанавливает виртуальный размер экрана. XFree86 имеет возможность использовать дополнительную память на вашей видеокарте для расширения вашего рабочего поля. Когда указатель мыши доходит до края экрана, ваше рабочее поле сдвигается показывая новые части вашего рабочего поля. Следовательно, даже если вы работаете на мониторе с низким разрешением (например 800x600 точек), вы можете установить размер виртуального экрана насколько вам позволяет память видеоплаты (1 Мегабайтная плата может хранить рабочее поле 1024x768 с 256 цветами, 2-х Мегабайтная плата - 1280x1024 с 256 цветами или 1024x768 с 16384 цветами и т д). Конечно, вы не сможете увидеть сразу все поле на вашем мониторе, но вы можете легко просмотреть любую его часть.

    Virtual предоставляет вам прекрасную возможность использовать всю память вашего адаптера, но она довольно ограничена. Если вы желаете еще расширить возможности работы с экраном, вам следует использовать fvwm, openwin или другой подобный менеджер окон. fvwm и openwin позволяет вам иметь намного больший виртуальный экран (используя механизм спрятанных окон, вместо сохранения всего экрана в видеопамяти). Ваше виртуальное рабочее поле может состоять из 16x16 реальных экранов и более. Обратитесь к руководству по указанным командам. Большинство дистрибутивов XFree86 используют по умолчанию менеджер окон fvwm.

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

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

5.6 Заполнение информации о видеокарте.

  Теперь ваш файл XF86Config почти готов к использованию. Единственное, что мы не сделали, не заполнили информацию о видеокарте. Сейчас нам следует запустить X сервер в режиме определения видеокарты и дооформить файл XF86Config.

Эту информацию вы можете найти и в файлах modeDB.txt, AccelCards и Devices (все эти файлы находятся в каталоге /usr/X11R6/lib/X11/doc). Кроме этого существуют различные файлы README для конкретных микросхем. Вам следует просмотреть эти файлы и используя эту информацию (частоты, тип микросхем и другие режимы) доопределить файл XF86Config. Если какой то информации не хватает, вы можете определить ее путем описанным ниже.

В этом примере мы опишем настройку видеокарты #9 GXE 64, использующую микросхему S3 и сервер XF86_S3. Эта карта одна из тех, с которыми работает автор, но все описанное ниже справедливо и для другой видеокарты. Перво-наперво вам надо определить тип микросхемы, используемой видеокартой. Команда SuperProbe (располагающаяся в каталоге /usr/X11R6/bin) сообщит вам эту информацию, но вам необходимо знать под каким именем известна данная микросхема X серверу.

Чтобы определить это запустите команду:


X -showconfig

Сервер сообщит вам имена микросхем, с которыми он работает (руководство на X сервер также содержит эту информацию). Например, сервер XF86_S3 сообщит:

XFree86 Version 3.1 X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers

S3 accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic

То есть сервер работает с микросхемами mmio_928 и s3_generic. Руководство на сервер XF86_S3 описывает эти микросхемы и видеокарты, использующие их. В нашем случае видеокарта #9 GXE 64 использует микросхему mmio_928.

Если вы не знаете какая микросхема стоит на видеокарте, X сервер может это определить. Запустите:


X -probeonly>/tmp/x.out 2>&1

если вы работаете в оболочке shell. Если вы используете csh запустите:

X-probeonly &>/tmp/x.out

Эту команду следует запускать при низкой загрузке компьютера: она определяет также частоту видеоадаптера и большая загрузка системы может исказить эти данные.

Выходная информация в файле /tmp/x.out будет содержать следующие строки:


XFree86 version 3.1 X Window System

(protocol, version 11, revision 0, vendor release 6000)
Operating system: Linux
Configured drivers
S3 accelerated server for S3 graphics adaptors (Patchlevel 0)

mmio_928, s3_generic
Several lines deleted

(--) S3 card type 386 486 localbus
(--) S3 chipset 864 rev 0
(--) S3 chipset driver mmio_928

Мы видим, что сервер (XF86_S3) может работать с микросхемами mmio_928 и s3_generic. Сервер протестировал видеокарту и опознал микросхему mmio_928. Следовательно, в секцию Device вам следует добавить строку, содержащую имя микросхемы, найденное серверомL

Section "Device"

# We already hold Identifier here
Identifier "#9 GXE 54"

# Add this line
Chipset "mmio_928"

EndSection

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

Сначала следует просмотреть справочные файлы (modeDB.txt, и т.п.) описанные выше и определить, нет ли там описания частот вашей карты. Частоты, как правило представлены списком из 8 или 16-ти значений частот в мегагерцах. Например в файле modeDB.txt можно найти строку описания видеокарты Cardinal ET4000:

# chip   ram  virtual   clocks                             default-mode flags
ET4000   1024 1024 768  25 28 38 35 40 45 32 0 "1024x768"

Как вы видите, данная карта поддерживает частоты 25, 28, 38, 36, 40, 45, 32 и 0 MHz.

В секции Device файла XF86Config, вам следует добавить строку Clocks со списком частот. В нашем случае мы добавляем строку:


Clocks 25 28 38 36 40 45 32 0

к секции Devices, после Chipset.

Заметьте, что порядок частот важен! Вам не следует дублировать или изменять порядок частот.

Если вы не можете найти список частот для вашей карты, X сервер может также определить и эти значения. После вызова команды X -probeonly, описанного выше, вы увидите строку:

(--) S3 clocks 25 18 28 32 38 02 36 15 40 33 45 32 32 00 00 00

Теперь вам осталось лишь добавить строку Clocks, перечислив указанные значения. Так как часто список содержит 8 и более значений и не помещается в одной строке, вы можете продолжить список в следующих строках, только не забывайте сохранять порядок указанных значений.

Перед запуском X -probeonly, убедитесь что в секции Devices нет строк описания Clocks или они закомментированы. Если эти значения уже есть, X сервер не будет проверять поддерживаемые платой частоты, а возьмет указанные в строке Clocks.

Заметьте, что некоторые видеокарты с акселератором используют микросхему с программируемой частотой (Смотрите руководство XF86_Accel; или XFree86 файл README для видеокарты.) Эти микросхемы позволяют X-серверу сообщать карте какую использовать частоту. В этом случае мы вполне вероятно не сможем найти в вышеперечисленных файлах список частот для карты. Или список частот, выдаваемых командой X -probeonly будет содержать одно два значения с остальными дублированными или нулевыми значениями:


(--) SVGA cldq5434 Specifying a Clocks line makes no sense for this driver

Данный пример получен от сервера XF86_SVGA на видеокарте Cirrus Logic PCI.
Для видеоплат, использующих микросхему программирования частоты, вам вместо строки Clocks следует использовать строку ClockChip. Эта строка задает имя микросхемы программирования частоты, установленной на карте. Руководства для каждого сервера описывает их имена. Например, в файле README.S3 мы определили, что несколько S3-864 видеокарт используют микросхему ``ICD2061A''. Следовательно, нам следует использовать строку:

ClockChip "icd2061a"

вместо строки Clocks. Так же как и строка Clocks, строка ClockChip должна быть в секции Devices после строки Chipset.

Некоторые карты с акселератором требуют определения в файле XF86Config строки Ramdac, описывающей тип используемой микросхемы RAMDAC. Руководство на сервер XF86_Accel описывает подробно опции этой строки. Как правило, X сервер верно определяет тип используемой микросхемы RAMDAC.

Некоторые видеокарты требуют определения нескольких дополнительных опций в секции Devices. Эти опции описаны как в руководствах на ваш X сервер, так и в справочных файлах (например README.cirrus или README.S3). Эти опции устанавливаются строкой Options. Например, видеокарта #9 GXE 64 требует установку двух опций:


Option "number_nine"
Option "dac_8_bit"

Обычно X сервер работает и без этих опций, но с ними X сервер обеспечивает большую производительность. Существует слишком много всевозможных опций, чтобы из все здесь перечислить. Эти опции зависят от типа установленной видеокарты. Если вы вынуждены использовать эти опции не волнуйтесь, руководства на X сервера и справочные файлы в каталоге /usr/X11R6/lib/X11/doc/ объяснят вам что они значат.

Итак, когда вы закончите, не забудьте завершить строкой EndSection секцию Device, которая будет выглядеть следующим образом:


Section "Device"

# Device selection for the #9 GXE 64 only!
Identifier "#9 GXE 64"
Chipset "rnmio_928"
ClockChip "icd2061a"

Option "number_nine"
Option "dac_8_bit"

EndSection

Как уже сказано выше, большинство видеокарт требуют строку Clocks вместо строки ClockChip. Вышеприведенный пример применим только к конкретной видеокарте #9 GXE 64.

5.7 Запуск XFree86.

Как только вы закончите описание файла XF86Config, вы готовы запустить X сервер и начать работу. Сначала убедитесь, что каталог /usr/X11R6/bin включен в ваш путь (переменную PATH).

Для запуска X Window наберите команду:


startx

Это "оболочка" для команды xinit (если вы использовали xinit в других UNIX-системах). Она запускает X сервер и выполняет файл .xinitrc в Вашем домашнем каталоге. .xinitrc является скриптом shell, который хранит команды для X клиентов при запуске X сервера. Если файл отсутствует, используется /usr/X11R6/lib/X11/xinit/xinitrc.

Простой пример файла .xinitrc:

#!/bin/sh
xterm -fn 7x13bold -geometry 50x32+10+50 &
xterm -fn 9xl5bold -geometry 50x34+30-10 &
oclock -geometry 70x70-7+7 &
xsetroot -solid, midnightblue &
exec twm

Этот скрипт запускает два клиента xterm (эмулятор терминала), oclock (часы) и устанавливает темно-синий цвет экрана. Затем он запускает twm, оконный менеджер. Заметьте, что twm запускается через оператор exec. Оболочка /bin/sh, выполняющая этот скрипт замещается командой twm и при окончании работы процесса twm, X-сервер также завершает свою работу. Вы можете выйти из twm, используя основное меню. Нажмите левую кнопку мыши, находясь на свободном месте экрана. На экране появится меню, которое позволит вам за выйти из twm, выбрав пункт Exit Twm.

Убедитесь, что последняя команда в файле .xinitrc запускается через exec и не запускается в фоне (нет символа & в конце строки). Иначе X сервер завершит свою работу, как только он запустит клиента из файла .xinitrc.

Кроме этого, вы можете выйти из X, нажав клавиши ctrl-alt-backspace одновременно.

Описанная выше конфигурация файла .xinitrc является очень простой. Если вы с ним немного поработаете вы можете получить множество отличных программ и конфигураций окон на экране. Например, оконный менеджер fvwm поддерживает виртуальные экраны, вы можете подобрать различные фонты, цвета, размеры окон, их позиции и так далее, все что вы пожелаете. Хотя система X Window может на первый взгляд показаться простой, она чрезвычайно мощна и богата различными возможностями. Ознакомьтесь с man-руководствами по xterm, oclock и twm. Немало интересного по настройке можно найти в The X Window System: A User's Guide (см. приложение A).

5.8 Проблемы...

Частенько случается, что у вас что-то не получается. Как правило, это связано с ошибками описания вашего файла XF86Config. Обычно, неверно указывают временные интервалы синхронизации монитора или частоты видеоплаты. Если у вас изображение на экране сдвинуто или его границы размыты, это точный показатель, что эти значения установлены неверно. Проверьте также, верно ли определили тип микросхемы видеокарты и другие опции в секции Device файла XF86Config. Убедитесь также, что вы используете необходимый X сервер и что файл /usr/X11R6/bin/X является символьной ссылкой на этот сервер.

Если это не поможет, попробуйте запустить X напрямую, используя команду:

X>/tmp/x.out 2>&1

Затем остановите X сервер (нажав одновременно клавиши ctrl-alt-backspace) и проверьте содержимое файла /tmp/x.out. X сервер сообщит все предупреждения и ошибки, например о том, что ваша видеокарта на поддерживает необходимую для вашего монитора частоту.

Файл VideoModes.doc, включенный в дистрибутив XFree, содержит много советов по настройке вашего файла XF86Config.

Не забудьте, что вы можете использовать комбинации клавиш ctrl-alt-numeric + и ctrl-alt-numeric - для переключения режимов разрешения монитора, перечисленных в секции Screen файла XF86Config. Если режим с высоким разрешением не работает, попытайтесь установить на меньшее разрешение. Это, по крайней мере, поможет определить вам ошибочные и правильные настройки вашего конфигурационного файла.

Попытайтесь также аппаратно подстроить ваш монитор, используя клавиши управления на мониторе.

Для обсуждения вопросов по XFree86 предназначены группа comp.windows.x.i386unix USENET. Неплохая идея подписаться на эту конференцию и описать интересующие вас проблемы: может быть кто-то имеет такие же проблемы.

Имеется также набор файлов XF86Config, которые были пожертвованы пользователями. Некоторые из них доступны на архиве sunsite.unc.edu в каталоге /pub/Linux/X11 и в других местах. Вы можете найти файл конфигурации, который кто-то уже написал для Ваших аппаратных средств.

 



Next: 6 Networking Up: Linux Installation and Getting Previous: 4 System Administration Оглавление: Оглавление.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют