Графический интерфейс 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 пользоваться все-таки неудобно, необходимо как-то запускать менеджер пакетов, программы конфигурации и многое другое. Здесь на помощь приходит программа phinx – Photon 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 |