Загрузка QNX 6.3.2 с Compact Flash
Одним из главных применений операционной системы QNX являются встраиваемые системы. Но, несмотря на довольно большое количество материала (статей и обсуждений на форумах), касающегося установки QNX на рабочую станцию, нет практически ничего на тему конечного применения этой операционной системы – создания и установки компактной, подогнанной под особенности железа, вариации QNX на небольшой съемный носитель, например, карту памяти.
В этой статье я расскажу о том, как загрузить ОС QNX на x86 процессоре, используя обыкновенную Compact Flash карту.
Единственным способом, который описывается в статьях, является установка ОС на Compact Flash карту способом, аналогичным установке на жесткий диск, что, в принципе, не составляет труда — Compact Flash представляется в системе как обычный IDE диск.
Но данный вариант не всегда подходит для встраиваемых систем. Причин тому несколько:
- Объем, занимаемый полноценной ОС – на 64 МБ модуль памяти, в отличие от специально подготовленной версии, она не поместится.
- Скорость загрузки. Образ, на который передает управление загрузчик, может быть размером менее мегабайта.
- При построении загрузочного образа самостоятельно есть возможность как убрать из него все лишнее, вынеся это в файловую систему и подключая уже после монтирования ide-диска (т.е., нашей CF), так и наоборот — включить прямо в образ драйвера нестандартного оборудования.
Нам понадобятся:
- Инструментальный компьютер — обычный рабочий компьютер с установленной QNX.
- Compact Flash карта и устройство для ее чтения.
- Собственно, та встраиваемая система, на которой все это дело будет запускаться.
Для своих опытов я использовал процессорную плату CPC10803 компании Fastwel, версию 6.3.2 операционной системы QNX, скачанную с официального сайта и полученный там же после регистрации Hobbyist Key для некоммерческого использования ОС.
Готовим Compact Flash карту
Для того, чтобы наша карта выступала в роли полноценного загрузочного жесткого диска, с ней нужно провести которые манипуляции с помощью утилиты fdisk.
После загрузки инструментального компьютера с подключенным USB-cardreader и картой памяти в папке /dev/ появляется новое устройство с префиксом hd. В моем случае — /dev/hd10.
Очищаем таблицу разделов на карте памяти:
# dd if=/dev/zero of=/dev/hd10 count=100Размечаем диск — создаем QNX раздел, используя все свободное место, делаем раздел загружаемым и записываем на диск QNX загрузчик:
# fdisk /dev/hd10 delete -a # fdisk /dev/hd10 add -s 1 qnx all # fdisk /dev/hd10 boot -s 1 # fdisk /dev/hd10 loader
Монтируем созданный раздел:
# mount -e /dev/hd10Инициализируем файловую систему QNX на созданном разделе:
# dinit -h /dev/hd10t77 # dinit -hb /dev/hd10t77
Монтируем созданную файловую систему:
# mount /dev/hd10t77 /fs/cfВ результате мы должны получить файловую систему /fs/cf с системными файлами QNX:
.altboot .bitmap .boot .inodes .longfilenames
Готовим загрузочный образ
Комплект создания загрузочного образа для платы (BSP – board support package) либо поставляется производителем, если он обеспечивает совместимость и поддержку QNX для своего оборудования, либо некоторые более-менее универсальные BSP можно взять с официального сайта QNX.
В зависимости от версии, BSP может содержать:
- Загрузочные образы системы
- Бинарные и объектные файлы
- Библиотеки функций
- Исходные тексты программ
- Скрипты и конфигурационные файлы
- Документацию
Нас интересуют загрузочные образы системы, которые имеют расширение *.build.
В набор BSP входит два образа:
- Стандартный образ – для стандартной конфигурации системы. Этот образ содержит набор драйверов для обеспечения базовой функциональности процессорной платы. Его рекомендуется использовать как основной образ для загрузки ОС.
- Альтернативный образ – для альтернативной загрузки системы. Этот образ содержит минимально-необходимый набор драйверов устройств и расширенный набор утилит для диагностики и конфигурации системы. Его рекомендуется использовать как альтернативный метод загрузки ОС в случае, когда не получается загрузить основной образ или требуется провести проверку и восстановление системы. Название образа помечается суффиксом alt.
С помощью BSP и поставляемых в нем build-скриптов можно изменять и пересобирать образы под свои нужды, используя инсталлируемую вместе с операционной системой среду разработки Momentics IDE. Или с помощью текстового редактора и утилиты mkifs. Написание build-файла — это тема для отдельной статьи.
Распаковываем архив c BSP и копируем образы в уже подмонтированную файловую систему /fs/cf
# cp /root/my-boot-image.ifs /fs/cf/.boot # cp /root/my-boot-image-alt.ifs /fs/cf/.altboot
Создание файловой системы
Необходимый минимум уже есть – QNX загрузится и смонтирует Compact Flash карту как жесткий диск.
Теперь для полноценной работы на встроенной системе необходимо скопировать на карту библиотеки и утилиты, которыми будет пользоваться оператор.
Копируем папки bin, etc, lib, sbin, usr из папки $TARGET IDE в файловую систему /fs/cf.
После запуска командных интерпретаторов для подключения консолей и технологического терминала, образ ОС передает управление на скрипт конфигурации системы sysinit. Его нужно создать в папке /etc/system/:
# touch /fs/cf/etc/system/sysinitИ сделать его исполняемым. После чего в этот скрипт можно (и нужно) прописывать запуск драйверов оборудования и прочие действия, которые система должна предпринимать при старте.
Загрузка
Вставляем Compact Flash в гнездо платы, настраиваем на плате загрузку с Compact Flash и… видим приглашение консоли встроенной системы:
Tags: compact flash, cpc108, qnx



