QNX RTP Logo QNX Realtime Platform: Русский Портал QNX
Thursday, 20 Nov 2008 18:49
Меню

Проект OpenNET - все о Unix
Установка и настройка XFree Print E-mail
Dmitry Alexeyev

Графический интерфейс Photon красив и удобен, однако зачастую, особенно для разработки приложений, необходимо что-то более мощное, гибкое и функциональное. Основной бич Photon – узкий круг написанных под него приложений, который хоть и увеличивается с каждым днем, но не столь быстро, как растут потребности пользователей и разработчиков. QSS не могла не предвидеть такую ситуацию, и поэтому с версии 6.0 с QNX поставляется X сервер под Photon. С выходом QNX 6.2 исходный код XPhoton был открыт, а бинарный пакет стал распространяться на компакт-диске со свободным программным обеспечением. К сожалению, XPhoton имеет ряд недостатков, самый серьезный из которых – это возможность ввода только на английском языке. Несмотря на это, я знаю очень много противников использования XFree86 вместо штатного Photon. Это открытая тема для долгих дискуссий, в которые мне не хотелось бы вдаваться. Цель этой статьи – показать, что QNX мало в чем уступает другим операционным системам, и что у каждого пользователя есть выбор, и выбор этот охватывает все богатство кладовых открытого программного обеспечения.

В статье описывается процесс установки и настройки XFree86 4.2.0 в операционной системе QNX 6.2.0.

1. История

X Window System (чаще всего говорят "X" или "XFree86", но ни в коем случае не "X Windows") - пожалуй, самое распространенное в мире UNIX приложение, являющееся стандартом де-факто пользовательского графического интерфейса. XFree86 работает практически во всех известных операционных системах и на большинстве распространенных архитектур. Именно в этом и есть основной плюс использования X Window – приложения переносятся с минимальными затратами, в то время как при переносе в Photon всю интерфейсную часть приложения необходимо целиком переписывать.

X Window имеет клиент-серверную архитектуру, связь между компонентами которой осуществляется стандартными методами UNIX: с использованием UNIX Domain Sockets (UDS) или TCP/IP протокола. Клиент и сервер могут быть разнесены на отдельные машины, что позволяет пользователям (возможно даже работающим на разных архитектурах и под разными операционными системами) работать удаленно в графическом интерфейсе. Правда, с точки зрения QNX и Photon в этом нет ничего нового – вспомним phrelay и phindows.

Первая доступня для QNX версия XFree86 была собрана Sebastien Marineau (QSS) для QNX 4. После этого работу продолжали Игорь Коваленко, Frank Liu и другие разработчики.

В QNX 6 X Window System (XFree86) была изначально перенесена Армином Штайнхоффом(Armin Steinhoff) (версия 3.3.6) и полностью переработана Фрэнком Лю (Frank Liu) с выходом версии 4.1.0, а позже и с выходом 4.2.0. Текущая на сегодняшний день версия XFree86 – 4.3.0, однако она еще не до конца оттестирована в QNX.

2. Подготовка

Большая часть необходимых для установки файлов доступна с "QNX 3-rd Party Software CD", образ которого можно скачать по адресу http://www.qnx.com/developer/download/contrib.. Этот файл является образом CD диска в формате ISO 9660, его можно прямо записать на компакт-диск с помощью, например Nero или cdrecord (о записи дисков в QNX написано здесь: http://developer.qnx.com/Fixes), или просто подмонтировать:

# mount -t cd qnxpub621.iso /fs/cd1

(эту операцию необходимо выполнять от пользователя root. Здесь и далее команды, которые выполняются от суперпользователя системы указываются с знаком "#", который обычно является приглашением суперпользователя. Операции, которые можно выполнять от имени обычного пользователя, обозначаются знаком "%").

Вставьте записанный компакт-диск в привод CD-ROM или подмонтируйте образ, как указано выше. Теперь запустите Photon, если он еще не запущен и инсталлируйте необходимые пакеты командой:

# qnxinstall

Не забудьте установить пакет XFree86 и все сопутствующие ему пакеты.

С версией 6.2.1 поставляется обновленный диск со сторонним программным обеспечением, и все эти пакеты можно установить прямо с него. Если у вас нет этого диска – воспользуйтесь online-репозиторием QSS (http://www.qnx.com/developer/download/contrib/). Если нет доступа к репозиторию (из версии 6.2 из этого репозитория по крайней мере часть пакетов не ставится), воспользуйтесь этими ссылками:

http://qnx.wox.org/cdrom621/gdk-pixbuf_x86-0.17.0-bld3-x86-public.qpr
http://qnx.wox.org/cdrom621/libpng_x86-1.2.5-bld3-x86-public.qpr
http://qnx.wox.org/cdrom621/ungif_x86-4.1.0-x86-public.qpr
http://qnx.wox.org/cdrom621/libiconv_x86-1.7-bld2-x86-public.qpr
http://qnx.wox.org/cdrom621/glib_x86-1.2.10-bld2-x86-public.qpr
http://qnx.wox.org/cdrom621/gtk_x86-1.2.10-bld3-x86-public.qpr
http://qnx.wox.org/cdrom621/libtool-1.4.3-bld2-public.qpr
http://qnx.wox.org/cdrom621/autoconf-2.57-public.qpr
http://qnx.wox.org/cdrom621/automake-1.6.1-bld4-public.qpr

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

# qnxinstall libiconv_x86-1.7-bld2-x86-public.qpr

Чтобы не загружать qnxinstall несколько раз, можно сразу указать группу пакетов, а потом выбрать каждый из них из выпадающего списка и установить.

После установки пакетов завершите сессию Photon (нажатием Ctrl+Alt+Shift+Backspace или выбрав в меню Shutdown->End Photon session). Если у вас появилось окно входа в систему, значит, установлен вход в систему в графическом режиме. Его необходимо отключить, создав файл /etc/system/config/nophoton:

# touch /etc/system/config/nophoton

После этого систему необходимо перезагрузить.

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

PATH=$PATH:/opt/X11R6/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/X11R6/lib:/usr/local/lib
export PATH LD_LIBRARY_PATH

Для редактирования файлов я использую встроенный в Midnight Commander редактор mcedit.

3. Установка

Перед началом установки важно убедиться, что менеджер сети io-net запущен и корректно обрабатывает ваше имя хоста. Если имя вашего хоста отличается от установленного по умолчанию "localhost", просто добавьте его в файл /etc/hosts, в строку

127.1 localhost.localdomain localhost

Строка из моего файла на компьютере “dmi”:

127.1 localhost.localdomain localhost dmi

Для проверки возможности установки связи воспользуемся утилитой “ping”:

% ping dmi

Если ответы идут от адреса 127.0.0.1 – все в порядке, можно начинать установку.

При запуске в консольном режиме QNX не загружает драйвер мыши, он запускается при инициализации Photon. Для выполнения установки необходимо запустить этот драйвер вручную. Если у вас мышь с PS/2 интерфейсом, выполните следующую команду:

# /usr/photon/bin/devi-hirun -Pr ps2 mousedev

Или, для мыши присоединенной к COM-порту, эту:

# /usr/photon/bin/devi-hirun -Pr msoft fd -d/dev/ser1

Когда драйвер мыши запущен (появилось устройство /dev/devi/mouse0), можно запускать конфигуратор X Window:

# xf86cfg

Будьте терпеливы – запуск конфигуратора может занять минуту и более – выполняется проверка оборудования. После того, как вы окажетесь в графическом режиме (скорее всего это будет максимальный поддерживаемый на вашем видеоадаптере режим с частотой 60Hz) перед вами появится окно настройки и окно эмулятора мыши. Может случится так, что будет установлено совершенно неприемлимое разрешение экрана. В таком случае воспользуйтесь клавишами переключения режимов: Ctrl+Alt+Gr"-" и Ctrl+Alt+Gr"+". Gr"+" и Gr"-" означают "плюс" и "минус" на цифровой клавиатуре.

В окне настройки выберите значок монитора и щелкните на нем правой кнопкой мыши, выберите пункт "configure monitor0". В окне настройки в полях Hor.Sync и Vert.Sync введите граничные значение развертки вашего монитора. Для моего монитора (LG Studioworks 575N) эти значения указаны на последней странице паспорта и имеют значения для вертикальной и горизонтальной частоты соответственно 30-70 и 50-160. Убедившись, что вы ввели верные значения, нажмите "Ok". Будьте внимательны, старые мониторы при указании неверной частоты развертки могут серьезно пострадать. Если вы не знаете граничных частот развертки своего монитора – выберите из списка наиболее подходящий.

Теперь – клавиатура. Точно так же щелкните на ее значке правой кнопкой, выберите "configure" и появившемся окне укажите:
Layout: Russian
Xkb Options -> Groups/Shift lock behavior -> Control+Shift changes group.
Этим вы выбираете альтернативную – русскую раскладку клавиатуры и клавиши переключения – Control+Shift.

В меню конфигурации (там, где сейчас Layout) выберите Modeline. Тут можно выбрать графический режим и частоту обновления экрана по вашему усмотрению. Щелкните на отметке текущего режима и выберите из выпадающего списка режим. Я использую 1024x768 @ 84Hz. Просторно и все видно, для 15-ти дюймового монитора в самый раз. Нажмите на кнопку "Add" и переходите к настройке "Screen".

Вы можете выбрать несколько графических режимов, в которых будет работать сервер X Window. Мне достаточно одного, поэтому я добавляю в список выбранный мной режим (1024x768@84, он так и обозначен) и убираю оттуда 640x480. Переключаться между этими режимами можно точно так же, как и при установке.

Глубину цветности я установил в 24 бита (кнопки наверху окна настройки) – это максимальное поддерживаемое значение.

Все, "Ok", "Quit", снова два раза "Ok" (сохранение конфигурации). Если в дальнейшем вам необходимо будет запустить xf86cfg еще раз, и вы захотите использовать существующие настройки, выполните:

# xf86cfg -xf86config /opt/X11R6/lib/X11/XF86Config

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

После завершения своей работы конфигуратор всегда оставляет файл отчета, как правило "/var/log/XFree86.x.log", где x – номер попытки. Если что-то пошло не так – вы всегда можете это выяснить по протоколу запуска. В крайнем случае, вы можете прислать этот файл автору статьи.

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

#chkfsys /
после перезагрузки.

4. Настройка шрифтов

Вы получили автоматически сгенерированный конфигурационный файл. Это хорошо, но останавливаться пока рано. В первую очередь надо добавить русские шрифты, для этого нам надо отредактировать файл /opt/X11R6/lib/X11/XF86Config. В секции "Files" добавим строку сразу же за директивой ModulePath:

    FontPath     "/opt/X11R6/lib/X11/fonts/cyrillic/"

Ко всему этому хорошо бы еще использовать и TTF (TrueType) шрифты, поэтому добавим ниже:

    FontPath     "/opt/X11R6/lib/X11/fonts/TTF1/"

А чуть выше, в секции Module, перед самым EndSection добавляем:

   Load “freetype”

Пока что больше от конфигурационного файла нам ничего не нужно, можно его сохранять и закрывать. Создадим каталог для наших TTF шрифтов:

# mkdir /opt/X11R6/lib/X11/fonts/TTF1

Скопировать шрифты туда можно из Windows или из коллекций шрифтов в сети или на дисках. Замечательные шрифты можно найти на сайте проекта "Веди": vedi.d-s.ru. Обратите внимание, что все названия файлов шрифтов должны заканчиваться расширением ".ttf", написанным маленькими буквами! Иначе они просто будут проигнорированы. Я делаю так:

# cp /fs/hd0-dos/windows/fonts/*.ttf /opt/X11R6/lib/X11/fonts/TTF1
# cp /fs/hd0-dos/windows/fonts/*.TTF /opt/X11R6/lib/X11/fonts/TTF1/*.ttf

Чтобы сервер XFree мог загрузить ваши шрифты, их необходимо проиндексировать. Для этого вам понадобится утилита ttfmkfdir, которая лежит тут: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/ttmkfdir.tar.bz2

Архив надо скопировать в корневой каталог и установить следующим образом:

# bzip2 -d ttmkfdir.tar.bz2
# tar xf ttmkfdir.tar

Индексируем шрифты:

# cd /opt/X11R6/lib/X11/fonts/TTF1
# ttmkfdir > fonts.dir

Настройка XFree завершена, можно переходить к запуску.

5. Первый запуск

Для запуска XFree необходим запущенный драйвер мыши devi-hirun, который может запускаться только от пользователя root. Это не всегда удобно, т.к. большинство разработчиков работают от имени обычного пользователя. Я использую небольшую программку, которая запускает (или перезапускает) драйвер и затем запускает XFree с приоритетом 12 и политикой диспетчеризации Round-Robin. Эта программа получает права суперпользователя, но скрипт startx1 запускается от имени обычного пользователя.
Программа находится здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/startx-bin.tar.bz2, а здесь находится ее исходный код: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/startx-src.tar.bz2

Программа расчитана на использование PS/2 мыши, если у вас мышь для COM-порта, то просто модифицируйте исходный код как указано выше(см. "Подготовка").

Для выхода из X Window используйте комбинацию клавиш: "Ctrl+Alt+Backspace". После выхода из X Window, драйвер мыши остается загруженным! Выгрузить его можно командной:

# slay -9 devi-hirun
и ответив "y", если обнаружено несколько копий драйвера в памяти.

6. Запуск приложений для Photon

Одними X Window приложениями в QNX пользоваться все-таки неудобно, необходимо как-то запускать менеджер пакетов, программы конфигурации и многое другое. Здесь на помощь приходит программа phinxPhoton in X, разработанная QSS. Она работает точно так же как и Phindows – подключается с удаленного компьютера к серверу Photon по протоколу TCP/IP (сервис phrelay).

Во-первых, вам нужно запустить демон inetd:

# inetd

Но лучше сделать так, чтобы он стартовал автоматически при загрузке системы. Пропишите его запуск в файл /etc/rc.d/rc.local. Если вы не создавали этот файл сами, то его скорее всего, еще не существует. Создадим его:

# cat > /etc/rc.d/rc.local

 #!/bin/sh
 inetd
 ^D
# chmod +x /etc/rc.d/rc.local
(^D здесь означает нажатие Ctrl+D)

Для запуска сервиса phrelay необходимо подправить конфигурационный файл /etc/inetd.conf. Скорее всего, вы захотите закомментировать (знаком "#") все строки, относящиеся к стандартным сервисам (ftp,telnet, и т.д.). Уберите комментарий с этой строки:

phrelay    stream tcp nowait root  /usr/bin/phrelay         phrelay -x

И запустите inetd. Если он уже запущен, то перезапустите его командой:

# slay -1 inetd

Теперь установим phinx. Бинарный пакет можно взять здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/phinx.tar.bz2

Распакуйте его в корневом каталоге и запустите phx:

% phx

Должно открыться окно Photon. Shelf в нем запущен не будет, вы можете запустить его выбрав Terminal в выпадающем меню (щелчок правой кнопкой мыши) и набрав shelf.

О phinx: эта программа находится в процессе бета-тестирования уже больше года, и, насколько я знаю, за этот год ни на шаг не продвинулась. Взята по адресу http://betas.qnx.com/phinx.

О phx: этот скрипт написан Фрэнком Лю (Frank Liu) и любезно предоставлен автору статьи после долгих мучений последнего заставить phinx присоединяться к серверу X Window вместо сервера Photon. В нем используется имя "localhost". Если имя вашего хоста отличается – подкорректируйте скрипт. Если вы хотите, чтобы окно phinx появилось на другом компьютере, работающем в X Window, то в качестве параметра phx укажите имя этого хоста. Не забудьте разрешить вход с вашего хоста выполнив команду

% xhost +hostname
на компьютере с запущенным сервером X Window.

По умолчанию, размер окна phinx устанавливается в 1024x768, что можно изменить подкорректировав параметр “-geometry”. У phinx есть еще несколько параметров, вы можете с ними ознакомиться изучив вывод

% use /usr/photon/bin/phinx

К сожалению, у phinx есть серьезный недостаток: некоторые приложения с большим количеством визуальных элементов отображаются некорректно. Например, браузер Mozilla отображается просто как мешанина кнопок. Но поскольку Mozilla есть и для X Window, это не очень большая потеря.

7. Дополнительные программы

Оконный менеджер: WindowMaker

По умолчанию X Window запускает свой оконный менеджер twm (Tab Window Manager), предназначенный для выполения простейших операций. Его можно использовать для настройки, но для каждодневной работы лучше выбрать что-то более серьезное.

На компакт-диске с дополнительным программным обеспечением от QSS есть оконный менеджер fvwm2, но на мой вкус, он не очень удобен. Я предпочитаю легкий, быстрый и удобный WindowMaker (www.windowmaker.org), являющийся подобием старой (если не сказать древней), но очень удобной оболочки NeXT Step. Пакет с собранным WindowMaker лежит здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/wmaker-0.80.2.tar.bz2 Для установки скопируйте этот файл в корневой каталог и распакуйте:

# bzip2 -d wmaker-0.80.2.tar.bz2
# tar xf wmaker-0.80.2.tar

Для того, чтобы при запуске XFree запускался WindowMaker в файл .xinitrc в домашнем каталоге надо прописать строку "exec wmaker":

% cat > ~/.xinitrc
exec wmaker
^D
(^D здесь означает нажатие Ctrl+D)

При первом запуске WindowMaker сам создаст необходимые ему конфигурационные файлы, это займет некоторое время.

Теперь можно запускать XFree:

% startx

В пакет WindowMaker входит утилита для его настройки, но она позволяет изменять лишь часть опций. Гораздо лучше этой цели служит утилита wmakerconf, которую можно скачать здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/wmakerconf-2.8.1.tar.bz2 и распаковать в корневом каталоге:

# bzip2 -d wmakerconf-2.8.1.tar.bz2
# tar xf wmakerconf-2.8.1.tar.bz2

Щелкните в любом не занятом окнами месте экрана на правую кнопку мыши и выберите из выпадающего меню пункт Run. Наберите "wmakerconf" и нажмите "ok". После сохранения настроек (меню File->Save), они актуализируются спустя 10-20 секунд.

Оконный менеджер: XFCE

XFCE – еще один удобный оконный менеджер для X Window. Скачать его можно здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/xfce.tar.bz2 Для автоматического запуска xfce при старте XFree86 добавьте в файл .xinitrc в вашем домашнем каталоге строку:

exec xfwm
При этом все остальные строки для запуска других оконных менеджеров надо закомментировать символом "#".

Текстовый редактор: nedit

Я перепробовал довольно много текстовых редакторов под XFree86, но пока остановил свой выбор на редакторе nedit – Nirvana Editor. Это достаточно гибкий и функциональный редактор. Бинарный дистрибутив находится здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/nedit-5.3.tar.bz2 Для его установки необходим пакет lesstif c QNX "3-rd Party Software CD". Архив распаковывается из корня:

# bzip2 -d nedit-5.3.tar.bz2
# tar xf nedit-5.3.tar.bz2

По умолчанию в нем установлены шрифты без поддержки русского языка, чтобы это изменить, в меню Options->Set defaults выберите Text Font и установите все шрифты в Times Cronyx Koi8-r. Можно попробовать TTF шрифты, если вы их установили (для этого пометьте "Show scalable fonts"). Не забудьте сохранить настройки (save defaults) и перезапустить редактор. Настройки шрифтов для данной сессии доступны в меню Options->Text Font.

Файловый менеджер: Midnight Commander

Midnight Commander – самый популярный файловый менеджер в UNIX системах. Почему-то в России и странах бывшего союза плотность его распространения на порядок выше, чем во всем остальном мире. Для пользователей, привыкших к DOS и Windows его можно описать просто – аналог Norton Commander и Far. В этой версии есть несколько небольших изменений специфичных для QNX. Если кому-то интересны изменения относительно оригинальной версии 4.6.0, я могу прислать патч. Архив доступен здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/mc-4.6.0-x.tar.bz2 Эта версия собрана с поддержкой XFree86 и проверена в терминале Rxvt.

Терминал: Rxvt

Rxvt намного удобней (на мой вкус), чем штатный xterm. Запускается он так же, как и xterm – из меню WindowMaker или командой “rxvt”. Пакет лежит здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/rxvt-2.4.6.tar.bz2

Графический и текстовый браузер: Links

Браузер Links может работать как в консоли, так и в XFree86. Все шрифты в графическом режиме выводятся в виде картинок в формате PNG, что выглядит гораздо лучше, чем результат любого сглаживания шрифтов. Для запуска в графическом режиме используйте команду

% links -g
Пакет с бинарной версией 2.1pre7 доступен здесь: ftp://ftp.qnx.org.ru/pub/projects/dmi/x/links-2.1pre7.tar.bz2

Графический браузер: Mozilla

Версия 1.2.1 знаменитого браузера Mozilla. Как я уже говорил выше, версия Mozilla для Photon некорректно отображается в phinx, поэтому рекомендую использовать эту версию. Собрал Фрэнк Лю (Frank Liu). Пакет находится здесь (sourceforge): http://prdownloads.sourceforge.net/openqnx/mozilla-xlib-1.2.1-build2-qnx6.tar.gz?download

Еще несколько полезных программ вы сможете найти на сайтах проекта OpenQNX [2] и [3]. Для доступа к программному обеспечению на новом сайте проекта OpenQNX необходима регистрация.

Соединение с Интернет Для присоединения к Интернет по модемной линии используйте подправленный под вашего провайдера скрипт ppp-up из пакета: ftp://ftp.qnx.org.ru/pub/projects/fliu/ppp.tar.gz

8. Дополнительная информация

  • 1.Архив списка рассылки openqnx (предоставлено Frank Liu): http://www.openqnx.com/PNphpBB2-viewforum-f14-.html
  • 2.Сайт проекта OpenQNX (старый) http://www.sourceforge.net/projects/openqnx
  • 3.Сайт проекта OpenQNX (новый) http://www.openqnx.com
  • 4.Сайт проекта XFree86 http://www.xfree86.org
  • Эта статья на сегодняшний день не закончена, в дальнейшем, с выходом новых версий програмного обеспечения она будет дополняться. Если вы заметили в статье какие-либо неточности или ошибки, считаете, что какой-то вопрос не был раскрыт в достаточной мере – пишите мне. Я всегда готов ответить на любые ваши вопросы по электронной почте или в форуме. http://qnx.org.ru/forum

    [Вернуться к списку]
    ©   2000-2003 Команда проекта QNX.ORG.RU // QNX.ORG.RU Team
    Авторы проекта: Дмитрий Алексеев [dmi] и Дмитрий Васильев. Техническое сопровождение проекта: Игорь Сорокин [isorokin]. Информационное сопровождение: Дмитрий Алексеев [dmi]
    QNX - зарегистрированная торговая марка QNX Software Systems, Ltd., Canada. Остальные упоминаемые на сайте торговые марки и логотипы являются исключительно собственностью их уважаемых владельцев. Ничьи права не затронуты. Материалы сайта не могут быть скопированы и где-либо использованы в той или иной форме без письменного разрешения разработчиков сайта.
    Powered by Mambo Open Source