Загрузка QNX 6.3.2 с Compact Flash

Одним из главных применений операционной системы QNX являются встраиваемые системы. Но, несмотря на довольно большое количество материала (статей и обсуждений на форумах), касающегося установки QNX на рабочую станцию, нет практически ничего на тему конечного применения этой операционной системы – создания и установки компактной, подогнанной под особенности железа, вариации QNX на небольшой съемный носитель, например, карту памяти.

В этой статье я расскажу о том, как загрузить ОС QNX на x86 процессоре, используя обыкновенную Compact Flash карту.

Единственным способом, который описывается в статьях, является установка ОС на Compact Flash карту способом, аналогичным установке на жесткий диск, что, в принципе, не составляет труда — Compact Flash представляется в системе как обычный IDE диск.
Но данный вариант не всегда подходит для встраиваемых систем. Причин тому несколько:

  • Объем, занимаемый полноценной ОС – на 64 МБ модуль памяти, в отличие от специально подготовленной версии, она не поместится.
  • Скорость загрузки. Образ, на который передает управление загрузчик, может быть размером менее мегабайта.
  • При построении загрузочного образа самостоятельно есть возможность как убрать из него все лишнее, вынеся это в файловую систему и подключая уже после монтирования ide-диска (т.е., нашей CF), так и наоборот — включить прямо в образ драйвера нестандартного оборудования.

Нам понадобятся:

  • Инструментальный компьютер — обычный рабочий компьютер с установленной QNX.
  • Compact Flash карта и устройство для ее чтения.
  • Собственно, та встраиваемая система, на которой все это дело будет запускаться.

Плата Fastwel cpc-108-03 лицевая сторона

 

 

 

 

Для своих опытов я использовал процессорную плату CPC10803 компании Fastwel, версию 6.3.2 операционной системы QNX, скачанную с официального сайта и полученный там же после регистрации Hobbyist Key для некоммерческого использования ОС.

 

 

 

 

 Compact Flash карта Fastwel

Готовим 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.Fastwel cpc108 с подключенной платой расширения CUM01
В набор 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 и… видим приглашение консоли встроенной системы:

Получилось!

Похожий бред:

Загрузка QNX 6.3.2 с Compact Flash: 4 комментария

  1. Я по информации с данной статьи с виртуальной QNX сделал загрузочную флешку и при загрузке ноутбука он зависает и дает следующие сообщения:

    Hit ESc for .altboot………………….Can`t locate PNP
    ……..
    /.diskroot file for root not found on any filesystem
    Starting with safe mode
    Spawn of /bin/sh failed : No such file or directory

    Что нужно еще сделать?

    • Что за виртуалка? Что за QNX неужто такой древний? Что за флэшка? Кардиридер там или USB? Зачем в виртуалку грузиться флэшкой?

  2. В VMware Player 6 запущена QNX 6.5, флешка 4 Gb

    Идея была — с виртуалки учебной QNX сделать загрузочную флешку

  3. Т. е. CF определяется как hd0, а USB флешка как umass0

    Я нашел следующую информацию:

    display_msg «QNX mass storage image, fs QNX 6»

    pci-bios &
    waitfor /dev/pci

    io-usb -dohci -duhci -dehci &
    waitfor /dev/io-usb/io-usb

    devc-con -n1 &
    waitfor /dev/con1
    reopen /dev/con1

    devb-umass qnx6 sync=optional disk
    name=umass cam pnp
    waitfor /dev/umass0t179

    mount tqnx6 /dev/umass0t179 /

    /bin/fesh

    Куда ее вписать в бутовый скрипт?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Protected by WP Anti Spam