QNX: очень краткие заметки

Алексей Федорчук
2001

QNX — не открытая, не свободная и даже, строго говоря, отнюдь не бесплатная (более того, местами весьма дорогая) операционная система, да и ее Unix-подобие и POSIX-совместимость суть материи небесспорные. Однако мне показалось интересным поделиться своими впечатлениями от знакомства с ней. Заметка эта была написана очень давно, но, насколько мне известно, принципиальных изменений QNX с тех пор не претерпела (хотя и несколько усовершенствовалась).

Введение

Все знают, что QNX — Unix-подобная (или, точнее, более-менее POSIX-совместимая) операционная система реального времени, предназначенная для промышленного использования и встроенных систем, основанная на микроядре. Если кто не знает — об этом есть что почитать. Как ни странно, русскоязычных материалов (и весьма информативных) на эту тему в Сети немало.

Что заставило меня обратиться к этой теме? Ведь QNX — отнюдь не свободная, вовсе не открытая и даже не бесплатная ОС. Более того, система эта при официальном ее приобретении для коммерческого использования очень даже дорогая.

Однако для некоммерческого — она бесплатна. То есть download-версию ее можно спокойно (и легально) использовать на своей домашней машине. А ведь это именно тот аспект применения, который более всего интересует меня в любой ОС. При том, что национальная постсоветская тяга к халяве у меня ослаблена: если из использования системы извлекается прибыль — не грех и заплатить. Тем более, что Господь велел делиться, как говорят в определенных кругах…

И конечно, мной двигало самое обычное любопытство: интересно было посмотреть на систему, в корне отличную архитектурно от всего, что я видел до сих пор. Тем более, что удовлетворить ее было довольно просто: на сайте фирмы QSSL (http://www.qnx.com) для свободного скачивания имеется не только сама система (текущая ее версия именуется QNX/Neitrino, или QNX6), но и подборка прикладного софта для нее. Все это — оформлено в виде iso-имиджа CD ROM, общим объемом тогда более 200 Мбайт (нынче, говорят, под 600). Поскольку сама система, как известно, занимает считанные дискеты, такой объем внушал надежду, что софта этого — много (полный дистрибутив OpenBSD, например, лишь немногим больше, а в нем есть почти все, нужное «на десктопе».

Так что, выбрав толику времени, я скачал образ, записал с него диск и взялся устанавливать QNX. В результате чего и начат настоящий цикл заметок. Никаких подробностей и никакой глубины проникновения в суть вещей не обещаю. Все пишется исключительно на предмет расширения кругозора. Но мне показалось интересным.

Инсталляция

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

Вся установка проходит в текстовом режиме. Начинается она с предложения создать дисковые разделы, с чем можно согласиться, нажав Enter, или поспорить, нажав Esc, после чего следует перезагрузка. Можно также нажать клавишу v (от англ. verbose), после чего все дальнейшие шаги будут сопровождаться подробными комментариями. Каковые, хотя и по английски, дают достаточно информации для выбора с спорных случаях.

Далее (правда, после принудительного знакомства с текстом лицензионного соглашения) идет выбор физических дисков для инсталляции (если их в системе более одного, разумеется). Диски маркированы достаточно понятно — /dev/hd0, dev/hd1 и т.д.

По выборе диска скорее всего появится сообщение о том, что таковой имеет объем более 8,4 Гбайт (а где вы нынче меньше-то найдете) и потому со старыми BIOS могут возникнуть проблемы при загрузке. Для устранения которых предлагаются следующие опции:

  • установка QNX в пределах первых 8,4 Гбайт;
  • установка стартовой части QNX в том же диапазоне;
  • установка в произвольном месте диска.

Поскольку ни на одной современной «маме» проблем с загрузкой возникнуть не должно, скорее всего, можно выбрать последний вариант. Я, правда, остановился на первом, так как заранее разбил (средствами Linux) свой второй физический диск (8-гигабайтник Fujitsu) на три раздела — два по 3 Гбайт и последний — все, что осталось. И предполагал временно поселить QNX на первый из них.

Далее предлагается указать источник инсталляции (задумчиво именуемый filesystem), в качестве какового предлагался CD ROM, обозначенный как dev/cd0. Вслед за чем система радостно сообщила мне, что помещения (именно так, room) для QNX у меня нет. Что не удивительно — все три раздела получили по умолчанию файловую систему ext2fs.

Однако тут же был предложен и выход из положения. Либо:

  • указать раздел для удаления;
  • переразбить разделы, для чего настоятельно советуется Partition Magic; если с этим согласиться, следует немедленная перезагрузка;
  • установить QNX внутрь одного из существующих чуждых разделов, в качестве которых допускались разделы Windows и Linux.

Третий вариант я опробовать не рискнул, второй отпадал за отсутствием Partition Magic, так что долгих размышлений для выбора мне не потребовалось. После чего на экране высветились имеющиеся разделы второго жесткого диска, то есть нечто вроде:

Partition       Type     OS     Size
   1            131    Linux   2963M
   2            131    Linux   2963M
   3            131    Linux   2329M
   4             0     Unused   0M

Не будучи уверен в способностях родного загрузчика QNX (и ее способности работать с чужими операционками), я принес в жертву первый из разделов. После чего был вопрошаем, какой частью освободившегося пространства я готов поделиться. Варианты — всем, половиной, четвертинкой или осмушкой. Не будучи жадным от природы, отдал все, что имел — три гигабайта без малого.

В благодарность за это программа установки побеспокоилась — а вдруг у меня уже было более одного раздела, и спросила: установить ли загрузчик QNX, или сохранить существующий. От последнего с благодарностью отказываюсь, рассчитывая (вполне, как потом оказалось, обоснованно) загрузить QNX просто со второго винчестера.

Дальше было сообщаемо о перезагрузке некоего драйвера и перемонтировании. А потом началось копирование. Я полез за часами (будучи счастливым в личной жизни, обычно их не наблюдаю). Пока искал (минуты 2-3), копирование кончилось. И появилось последнее предупреждение. В нем напоминалось, во-первых, что после перезагрузки я должен буду авторизоваться как root (а как кто же еще — никаких пользователей в ходе инсталляции не создавалось).

А во-вторых, заботливо сообщалось, что винт мой работает в режиме DMA. И если перезагрузка не пройдет, режим этот следует отключить. Принял к сведению и нажал, как предлагалось, Enter для перезагрузки. Каковая и не замедлила воспоследовать…

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

Как я и надеялся, система благополучно загрузилась со второго физического диска (при соответствующей установке BIOS). Быстро мелькнуло несколько сообщений, после чего дело замерло на создании swap-файла (как можно было понять из предыдущего рассказа, специального swap-раздела не создавалось и не предлагалось).

По умолчанию swap-файл предлагался в 256 Мбайт (что было равно объему оперативной памяти). Пока я размышлял на тему — а оно мне нужно, — система приняла мое молчание за согласие и, сказав, что swap-файл благополучно создан, продолжила загрузку.

А именно — спустя пару секунд появилось сообщение о новой видеокарте и псевдографическая заставка на предмет определения ее параметров. В качестве карты была автоматически предложена TNT (что недалеко от истины — у меня была Riva TNT2 M64) с вариантами для выбора — VGA и VESA. Разрешение предлагалось установить 1024*768, глубину цвета — 16 бит, частоту обновления — 60 Hz. Для первого параметра возможны варианты — от 640*480 до 1600*1200, для второго — от 8 до 32 бит, для третьего — 70, 75 и 80 Hz.

По завершении установок их следовало протестировать. Что я и проделал при обоих приемлемых для меня разрешениях — 1024*768 и 1152*864. Результаты чего меня отнюдь не вдохновили: какие бы частотные характеристики я не устанавливал, система автоматически сваливалась на те же 60 Hz, что были отмечены по умолчанию. А при большем из разрешений, кроме того, выше 8-битного цвета получить не удавалось.

Так что я с легкой душой снял отметку с опции загрузки системы Photon при входе в систему и двинулся дальше. После чего было предложено авторизоваться — тем не менее, в графическом режиме. Следуя рекомендации из предыдущего раздела, я авторизовался как root — и через считанные мгновения (не большие, чем загрузка Windows 3.1 на Pentium-II) оказался в том самом Photon’е — оригинальной графической среде, специально разработанной для QNX.

Система Photon сама по себе весьма интересна, и я рассчитывал уделить толику времени ее изучению. И даже успел кое-что в этом направлении предпринять. Однако в дальнейшем жизненные обстоятельства мои изменились, и QNX пришлось пожертвовать. И более — увы — руки до нее не доходили. Хотя воспоминания сохранились самые светлые…