Утилиты и инструкции для сборки образа ПО MAG3xx/4xx/5xx и выше

Требования к ОС

Все примеры используемые в данном руководстве приведены для Ubuntu Server 16.04.

Для 64-разрядной системы, необходимо дополнительно установить поддержку 32-разрядных библиотек. Например, для Ubuntu 14.04 - 16.04 необходимо установить пакет lib32z1 (32-bit shared libraries for AMD64).

Необходимые пакеты

mtd-utils	Утилиты для управления устройствами с технологией памяти, такими как флэш-память, Disk-On-Chip или ROM
lib32z1	Поддержка 32-разрядных библиотек для x64 систем
gnupg1	Внимание! GPG2(gnupg2) - не поддерживатеся!
STB SDK	https://soft.infomir.com/stbsdk/ - Утилиты для сборки ПО MAG

Утилиты

Утилиты оператора позволяют собирать образ ПО в трех вариантах:

PublicImage - образ подписанный стандартным публичным ключом STB_PUBLIC.
Варианты обновления: По HTTP и (USB без Bootstrap из меню портала) только на «версии ПО завода изготовителя», («версии ПО завода изготовителя» - версии ПО собранные непосредственно производителем и предоставляемые для автоматического и ручного обновления по URL завода изготовителя). На другие версии обновляется только из меню System Recovery (multicast, USB). Заводской вариант образа ПО (imageupdate), подписанный стандартным публичным ключом STB_PUBLIC, выкладывается в каталоге с каждым текущим релизом, соответственно модели STB, по адресу: soft.infomir.com.ua

CustomImage - образ подписанный кастомным ключом для обновления ПО. Ключ создается оператором самостоятельно без обращения к производителю.
Варианты обновления: По HTTP и «USB» только на образы ПО подписанные этим же ключом. На другие версии ПО (не подписанные «кастомным ключом»), обновляется только из меню System Recovery (multicast, USB, TFTP). Рекомендуется для операторов которые хотят реализовать безопасное обновление ПО через HTTP, но оставить вариант обновления на другие версии ПО из меню System Recovery.

OperatorImage - образ подписанный ключом оператора. При этом ключ оператора в обязательном порядке подписан на заводе изготовителе.
Варианты обновления: Обновляется только на версии ПО подписанные этим же ключом оператора.

Перед подготовкой образа основного ПО настоятельно рекомендуем ознакомится со следующей документацией:STB API, Operator guide Рекомендуется: Выполнять все команды с правами «суперпользователя». При работе с архивами использовать консольный архиватор tar. Внимание!Командная оболочка указанная в скриптах может отличатся от системной!
Рекомендации Обновление ПО из меню «Системные настройки» - переменная update_url. По умолчанию, обновление происходит по URL производителя на образ ПО подготовленный производителем. При сборке собственного образа рекомендуется изменить переменную на URL вашего образа. "Mодуль автоматического обновления" из пункта «Настройки» основного меню. Переменные: autoupdate_cond, betaupdate_cond. По умолчанию, автоматическое обновление включено и инициирует обновление на версии ПО производителя. Обновление возможно так же и в ручном режиме. При сборке собственного образа рекомендуется отключить работу модуля автоматического обновления либо организовать собственную систему обновления, руководствуясь описанием и инструкциями. Проверка переменных окружения при старте. С целью повышения безопасности и контроля несанкционированного изменения переменных, рекомендуется производить проверку необходимых/критичных переменных при загрузке ПО (например, таких как: portal1, portal2, update_url, autoupdate_cond и т.д.)

Подготовка образов. Общие полoжения

1. Подготовка профайла

Параметры сборки образа указываются в профайле img_make.profile.mag<model_number>

Пример профайла img_make.profile.mag520

### Model export MODEL=MAG520 ### Kernel's file system export KERNEL_PATH=./mag520/out/uImzlib_mag520.img ### File name for enviroment variable export ENV_VARIABLE_PATH=./mag520/images/env_mag520.txt ### Userfs #export USERFS_VERSION=1 #export USERFS_PATH=./mag520/images/userfs_mag520.img ### Second boot #export SECONDBOOT_PATH=./mag520/images/sboot.bin ### File name for Logotype export LOGOTYPE_PATH=./mag520/images/logo_amlogic.bmp.gz ### Key export MAG200_OP_KEY=STB_PUBLIC #By default XXX_FS_TYPE is jffs2 #Can be jffs2,ubi,raw(for kernel only),ext4 export KERNEL_FS_TYPE=raw export ROOTFS_FS_TYPE=ext4 ### Compress ext4 image export EXT4_ZIP=1 export HASH_TYPE=SHA256

Описание переменных профайла

Переменная	Описание
MODEL	Модели STB. Внимание! Регистр написания наименования модели должен полностью совпадать с наменованием модели из System Recovery Utility > Device Information > Model или System Settings > Device Info > Model.
KERNEL_PATH	Расположение итоговго образа файловой системы, содержащей ядро. По этому пути будт раположен итоговый образ ядра после сборки и подписи
ENV_VARIABLE_PATH	Путь к файлу, в котором содержатся переменные бутлоадера и их значение. Пример, такого файла смотрите Пример файла env.txt, он показывает каким, образом можно установить переменные бутлоадера, в частности цвета шрифта и фона. Символ $ должен экранироваться.
USERFS_VERSION	Номер версии образа файловой системы «Userfs». Если номер текущего образа и обновляемого совпадает, то обновление не производиться.
USERFS_PATH	Расположение образа файловой системы «Userfs». Образ подготавливается с помощью userfs_img_<type_model>.sh. Необходимые файлы должны находится в подкаталоге /userfs.
SECONDBOOT_PATH	Путь ко второму образу загрузчика при необходимости его обновления
LOGOTYPE_PATH	Путь к файлу логотипа загрузчика.
MAG200_OP_KEY	ID ключа для подписи ПО. По умолчанию STB_PUBLIC
KERNEL_FS_*	Тип и разметка файловой системы ядра. Внимание! Не рекомендуется изменять значения установленные в профайле!
ROOTFS_FS_*	Тип и разметка корневой файловой системы. Внимание! Не рекомендуется изменять значения установленные в профайле!
EXT4_ZIP	Уровень сжатия для образа EXT4
HASH_TYPE	Алгоритм шифрования

Для правильной работы утилит оператора, переменная KERNEL_PATH в профайлах, должна иметь значение <path>/uImzlib_mag<model>.img. Переменные ENV_VARIABLE_PATH, USERFS_VERSION, USERFS_PATH, SECONDBOOT_PATH, LOGOTYPE_PATH могут быть закоментированы, в этом случае соответствующей секции не будет в образе. В переменной MAG200_OP_KEY должен быть установлен соответствующий идентификатор - (ID) ключа, которым будет подписан образ.

Например: export MAG200_OP_KEY=ID_key, где ID_KEY должен быть:

STB_PUBLIC - для сборки PublicImage. Публичный ключ входи в состав утилит;

ID кастомного ключа - для сборки CastomImage;

ID ключа оператора - для сборки OperatorImage.

2. Подготовка переменных Bootloader-a (Загрузчика)

Необходимые переменные Bootloader-a указываются в файле ./images/env.txt

Наиболее часто используемые переменные

Пример файла env.txt

bg_color=0x00006498 fg_color=0x00FFFFFF portal1=http://10.1.0.1/stalker_portal/c/index.html language=ru update_url=http://10.1.0.1/imageupdate ntpurl=10.1.0.1 timezone_conf=Europe/Kiev

3. Подготовка uImage, uImzlib_null.img, uImzlib.img. Подпись ядра

Используются файлы:

uImage_mag<model_number>.clean

где <model_number> - номер модели STB для которой собирается образ ПО.

uImage_mag<model_number>.clean необходимо взять из релиза ПО в соответствии с моделью STB для которой собирается образ.

Файлы:

uImage_mag<model_number>

uImzlib_null_mag<model_number>.img

uImzlib_mag<model_number>.img

- будут созданы в каталоге с утилитами после окончания работы скриптов.

3.1 Подпись ядра

Используется скрипт ./kernel_sign.sh. Скрипт интерактивный, при запуске без параметров выводится подсказка.

Пример:

# ./kernel_sign.sh Usage: ./kernel_sign.sh <model_name> <path_to_kernel> <profile> The <model_name> should be the same as the Model Name of STB The Model Name can be viewed in System Recovery Utility > Device Information > Model or in System Settings > Device Info > Model For example: ./kernel_sign.sh MAG520 ./mag520/images/uImage_mag450.clean img_make.profile.mag520 #

4. Сборка образа ПО (сборка imageupdate)

Используется скипт - img_make.sh. Скрипт интерактивный. При запуске без параметров выводится подсказка.

Пример:

root@test-srv:~/stb_fw/Operator_utilities_Broadcom_Hisilicon_Amlogic# ./img_make.sh Usage: ./img_make.sh <version_number> "<description>" <path_to_rootfs> <model_name> <profile> The <version_number> must be a number (3 digits) The <description> should be escaped, Spaces are not allowed! The <model_name> should be the same as the Model Name of STB The Model Name can be viewed in System Recovery Utility > Device Information > Model or in System Settings > Device Info > Model For example: ./img_make.sh 220 "Test_image" ../../520/rootfs-2.20.01/ MAG520 ./img_make.profile.mag520 root@test-srv:~/stb_fw/Operator_utilities_Broadcom_Hisilicon_Amlogic#

где:

version_number	Номер версии образа, должно быть трехзначным числом. После успешного обновления переменная начального загрузчика Image_Version принимает это значение.
description	Краткое описание !Внимание! «Пробелы» в описании не допускаются. Описание необходимо экранировать! После успешного обновления переменная начального загрузчика Image_Desc принимает это значение
path_to_rootfs	путь к каталогу с корневой файловой системой. Корневую файловую систему rootfs-….tar.gz можно взять из релиза http://soft.infomir.com.ua в соответствии с моделью STB
model_name	Модели STB. Внимание! Регистр написания наименования модели должен полностью совпадать с наменованием модели из System Recovery Utility > Device Information > Model или System Settings > Device Info > Model.
path_to_profile	Путь к профайлу - ./img_make.profile.mag<model>

Замечания по работе с программой gpg

Для работы с ключами и создания цифровой подписи образов используется программа gpg - GnuPG.org GnuPG Wikipedia

Для переноса ключа, например, с одной машины на другую можно воспользоваться следующими командами:

для сохранения информации о ключе в файле

gpg -o opsecbin.KEY --export-secret-keys ID-ключа

для добавления этого ключа в gpg

gpg --import opsecbin.KEY

для просмотра текущих доступных ключей.

gpg --list-keys

PublicImage - подготовка, сборка

PublicImage - подготовка, сборка - пример для MAG-250

CustomImage - подготовка, сборка

CustomImage - подготовка, сборка - пример для MAG-250

OperatorImage

Инструкция по сборке и установке образа «OperatorImage» предоставляется после согласования процедуры подписи ключа оператора с коммерческим отделом