Операторские утилиты и инструкции для сборки образа ПО
Утилиты для сборки образа ПО
Для сборки образа ПО необходимо использовать Операторские Утилиты, которые предоставляет производитель:
Требования к ОС компьютеров разработчиков
Система *nixi386 (32-разрядная). Рекомендуем использовать Ubuntu дистрибутив ОС Linux .
В случае использования 64-разрядной системы, необходимо дополнительно установить соответствующие пакеты, обеспечивающие поддержку 32-разрядных библиотек.
Например, для Ubuntu 14.04 - 16.04 необходимо установить пакет lib32z1 (32-bit shared libraries for AMD64).
Все примеры, используемые в данном руководстве, приведены для ОС Ubuntu Server 12.04 i386.
Необходимые пакеты ОС Linux
Для рекомендуемой ОС должны быть установлены следующие пакеты:
Ubuntu Server 12.04 i386:
sudo apt-get install mtd-utils
Ubuntu Server 14.04-16.04 x86_64:
sudo apt-get install mtd-utils && sudo apt-get install lib32z1
Варианты образа ПО
Операторские утилиты позволяют собирать образ ПО STB в трех вариантах:
- PublicImage - образ, подписанный стандартным публичным ключом производителя (ID = STB_PUBLIC). PublicImage от производителя (файл imageupdate) выкладывается в корневом каталоге каждого текущего релиза соответствующей модели STB.
Варианты обновления PublicImage:
1. Обновляется из меню Bootloader или System Recovery Utility на различные версии PublicImage или на транзитные версии CustomImage (см. описание перехода на CustomImage).
2. Обновляется из меню портала (методами HTTP / USB) только на заводские версии ПО (Factory image).
- CustomImage - образ, подписанный кастомным ключом. Ключ создается оператором самостоятельно без обращения к производителю STB. Рекомендуется для операторов, которые хотят реализовать безопасное обновление ПО из портала только на собственные версии ПО (методами HTTP / USB) с возможностью обновления на публичные версии ПО из меню Bootloader или System Recovery Utility.
Варианты обновления CustomImage:
1. Обновляется из меню Bootloader или System Recovery Utility только на публичные версии ПО (PublicImage).
2. Обновляется из меню портала только на версии CustomImage, подписанные тем же ключом. - OperatorImage - образ, подписанный ключом оператора. При этом ключ оператора в обязательном порядке предварительно подписывается на заводе изготовителе.
Варианты обновления OperatorImage: Обновляется только на версии ПО, подписанные тем же ключом оператора.
Подготовка образа ПО. Общие полoжения
Перед подготовкой образа основного ПО настоятельно рекомендуется ознакомиться со следующей документацией:
- Спецификация JavaScript API (для версий ПО до 0.2.18)
- Спецификация JavaScript API (для версий ПО 0.2.18 и выше)
- Руководство оператора MAG200 (pdf)
Рекомендуется:
- Выполнять все команды с правами суперпользователя.
- При работе с архивами использовать консольный архиватор tar.
Внимание! Командная оболочка, указанная в скриптах, может отличатся от системной.
1. Подготовка переменных окружения.
2. Подготовка профайла.
3. Копирование исходного файла ядра из релиза STB в рабочую директорию Операторских утилит.
4. Подготовка образов ядра (запуск скрипта подписи ядра).
5. Запуск команды сборки образа.
1. Подготовка переменных окружения
Необходимые значения переменных окружения, которые должны устанавливаться в образе, указываются в файле env.txt. Исходный вариант файла, доступный для редактирования, расположен в подкаталоге images каталога с Операторскими Утилитами. Путь доступа к директории images зависит от модели STB - пример для MAG254:
Описание некоторых переменных приведено в разделе Наиболее часто используемые переменные.
По умолчанию, HTTP-обновление из портала (в том числе автообновление) выполняется на заводскую версию ПО (Factory image)
При сборке собственного образа рекомендуется:
- В переменной update_url указать URL вашего файла обновления imageupdate (по умолчанию, в переменной указан URL производителя).
- Организовать собственную систему автоматического обновления и использовать необходимые значения переменных autoupdateURL, autoupdate_cond и betaupdate_cond, руководствуясь описанием раздела Модуль автоматического обновления. В противном случае, отключить работу модуля автоматического обновления.
С целью повышения безопасности и предотвращения несанкционированного изменения пользователями значений переменных необходимо при загрузке ПО производить проверку критичных переменных (например, таких как: portal1, update_url, autoupdate_cond и т.д.). Описание, как организовать проверку переменных, приведено в разделе Проверка переменных при старте STB.
2. Подготовка профайла
Параметры сборки образа указываются в профайле. Исходные варианты профайлов для различных моделей STB, доступные для редактирования, расположены в корневом каталоге Операторских Утилит:
./img_make.profile.mag<model_number>
Например, для MAG254 - используется профайл:
Ниже приведен пример профайла:
Для правильной работы Операторских Утилит переменная KERNEL_PATH должна иметь значение:
Строки с переменными ENV_VARIABLE_PATH, USERFS_VERSION, USERFS_PATH, SECONDBOOT_PATH, LOGOTYPE_PATH могут быть закомментированы. В этом случае соответствующей секции не будет в образе.
Для переменной MAG200_OP_KEY должен быть установлен соответствующий идентификатор ключа (ID-key), которым будет подписан образ. ID_key должен иметь следующее значение:
STB_PUBLIC - для сборки публичного образа. Публичный ключ входит в состав утилит;ID кастомного ключа - для сборки кастомного образа;ID ключа оператора - для сборки операторского образа.
3. Копирование исходного образа ядра из релиза в каталог с Операторскими Утилитами
Исходный образ ядра размещается в релизе необходимой модели STB:
для MAG-250/254/270 - используется файл:
vmlinux.bin.mag<model_number> - для MAG-256/3xx/4xx - используется файл:
uImage_mag<model_number>.clean
где <model_number> - номер базовой модели STB. Например: для MAG254 - vmlinux.bin.mag254; для MAG324 - uImage_mag324.clean.
Обратите внимание! Для MAG322 и MAG324 используется один и тот же файл - uImage_mag324.clean
4. Подпись ядра, получение файлов uImage / Bootstrap, uImzlib_null.img, uImzlib.img
для MAG-2xx/3xx используется скрипт подписи ядра:
kernel_sign_<model_number>.sh где <model_number> - номер базовой модели STB.
Пример запуска скрипта для MAG254:
./kernel_sign_254.sh
Для MAG322 и MAG324 используется один и тот же файл: ./kernel_sign_324.sh
для MAG4xx используется скрипт подписи ядра:
kernel_sign.sh
Команда запуска скрипта:
./kernel_sign.sh <STB model> <path to kernel> <profile>
./kernel_sign.sh mag420 ./mag420/images/uImage_mag420.clean img_make.profile.mag420
В результате работы скрипта будут созданы следующие файлы: uImage_mag<model_number> или Bootstrap (создаваемый файл зависит от модели STB), uImzlib_null_mag<model_number>.img, uImzlib_mag<model_number>.img, которые записываются в директорию с Операторскими Утилитами.
5. Сборка образа ПО (сборка imageupdate)
Синтаксис:
./img_make.sh <version_number> "<description>" <path_to_rootfs> <modelname> <path_to_profile>
Пример для MAG254:
./img_make.sh 218 "Test_my_version" ../../254/rootfs-0.2.18r14 MAG254 ./img_make.profile.mag254
Пример для MAG256:
./img_make.sh 220 "Test_my_version" ../../256/i256-splash-7.7 MAG256 ./img_make.profile.mag256
Пример для MAG420:
./img_make.sh 220 "Test_my_version" ../../420/rootfs-2.20.02-r5 MAG420 ./img_make.profile.mag420
В результате успешной сборки образа ПО файл imageupdate будет создан в директории с Операторскими Утилитами.
Замечания по работе с программой GPG
Для работы с ключами безопасности и создания электронной цифровой подписи образов используется программа GPG - GnuPG.org, GnuPG Wikipedia
Например, для переноса ключа с одного компьютера (или виртуальной машины) на другой можно воспользоваться следующими командами:
- для сохранения информации о ключе в файле:
gpg -o opsecbin.KEY --export-secret-keys ID-ключа
- для добавления этого ключа в gpg:
gpg --import opsecbin.KEY
- для просмотра текущих доступных ключей:
gpg --list-keys
PublicImage - подготовка, сборка
PublicImage - подготовка, сборка - для MAG254
CustomImage - подготовка, сборка
CustomImage - подготовка, сборка - для MAG254
OperatorImage
Инструкция по сборке и установке образа OperatorImage предоставляется после согласования процедуры подписи ключа оператора с коммерческим отделом.