GrabDuck

Операторские утилиты и инструкции для сборки образа ПО на основе 0.2.14-r8 и выше

:

Внимание! Начиная с версии ПО 0.2.14-r8 были произведены изменения в системе безопасности. Для сборки образа ПО на основе версий после 0.2.14-r8 необходимо использовать новые операторские утилиты и инструкции. Настоятельно рекомендуется, с целью повышения безопасности, Всем кто использует кастомизированные версии ПО, пересобрать образы с использованием последних релизов, начиная с 0.2.14-r8 и выше.

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

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

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

Например: Для Ubuntu Server 12.04 i386, достаточно установить пакет mtd-utils

Утилиты

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

  • PublicImage - образ подписанный стандартным публичным ключом STB_PUBLIC.
    Варианты обновления: Начиная с версии ПО 0.2.14-r8 обновляется по HTTP и (USB без Bootstrap из меню портала) только на «версии ПО завода изготовителя», («версии ПО завода изготовителя» - версии ПО собранные непосредственно производителем и предоставляемые для автоматического и ручного обновления по URL завода изготовителя). На другие версии обновляется только из меню Bootloader-a (multicast, USB&Bootstrap). Заводской вариант образа ПО (imageupdate), подписанный стандартным публичным ключом STB_PUBLIC, выкладывается в каталоге с каждым текущим релизом, соответственно модели STB, по адресу: soft.infomir.com.ua
  • CustomImage - образ подписанный кастомным ключом для обновления ПО. Ключ создается оператором самостоятельно без обращения к производителю.
    Варианты обновления: Обновляется по HTTP и «USB без Bootstrap» только на образы ПО собранные на основе или после 0.2.14-r8 и подписанные этим же ключом. На другие версии ПО (не подписанные «кастомным ключом»), обновляется только из меню Bootloader-a (multicast, USB&Bootstrap). Рекомендуется для операторов которые хотят реализовать безопасное обновление ПО через HTTP, но оставить вариант обновления на другие версии ПО из меню Booloader-a.
  • OperatorImage - образ подписанный ключом оператора. При этом ключ оператора в обязательном порядке подписан на заводе изготовителе.
    Варианты обновления: Обновляется только на версии ПО подписанные этим же ключом оператора.

Перед подготовкой образа основного ПО настоятельно рекомендуем ознакомится со следующей документацией:

JavaScript API (pdf), Operator guide (pdf)
Рекомендуется: Выполнять все команды с правами «суперпользователя». При работе с архивами использовать консольный архиватор tar.
Внимание!Командная оболочка указанная в скриптах может отличатся от системной!

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

1. Подготовка uImage, uImzlib_null.img, uImzlib.img

MAG-200/250/254/270 используются файлы:

  • vmlinux.bin - Для MAG-200

  • vmlinux.bin.mag250 - Для MAG-250 или vmlinux.bin.mag<model_number> , где <model_number> - номер модели, может принимать значения (250,254,270)

vmlinux.bin или vmlinux.bin.mag<model_number> необходимо взять из релиза http://soft.infomir.com.ua в соответствии с моделью STB для которой собирается образ и поместить в каталог ./images . Каталог ./images находится в каталоге с утилитами.

Файлы: uImage, uImzlib_null.img, uImzlib.img - будут созданы в каталоге с утилитами после окончания работы скрипта.

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

uImage_mag256.clean необходимо взять из релиза http://soft.infomir.com.ua/mag256/release/ и поместить в каталог ./images . Каталог ./images находится в каталоге с утилитами.

2. Подпись ядра

Пример для MAG200 - используется скрипт ./kernel_sign_200.sh Пример для MAG250 - используется скрипт ./kernel_sign_250.sh

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

Параметры сборки образа указываются в профайле:

  • Пример для MAG200 - используется профайл img_make.profile.mag200

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

#    Kernel's file system
export KERNEL_PATH=./uImzlib.img
#    File name for enviroment variables
export ENV_VARIABLE_PATH=./images/env_mag200.txt
#    Userfs
export USERFS_VERSION=1
export USERFS_PATH=./images/userfs.img
#    File name for SecondBoot
export SECONDBOOT_PATH=./images/SbootIm
#    File name for Logotype
#export LOGOTYPE_PATH=./images/logo.bmp.gz
export MAG200_OP_KEY=STB_PUBLIC
  • Пример для MAG250 - используется профайл img_make.profile.mag250

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

 #    Kernel's file system
export KERNEL_PATH=./uImzlib_mag250.img
#    File name for enviroment variable
export ENV_VARIABLE_PATH=./images/env_mag250.txt
#    Userfs
export USERFS_VERSION=1
export USERFS_PATH=./images/userfs.img
#    File name for SecondBoot
export SECONDBOOT_PATH=./images/SbootIm_mag250
#    File name for Logotype
#export LOGOTYPE_PATH=./images/logo.bmp.gz
export MAG200_OP_KEY=STB_PUBLIC

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

Название Описание
KERNEL_PATH

Расположение образа файловой системы, содержащей ядро. Если переменная не заданна, то используется ./uImzlib.img .

ENV_VARIABLE_PATH

Эта переменная должна содержать путь к файлу, в котором содержатся переменные бутлоадера и их значение. Пример, такого файла смотрите Пример файла env.txt, он показывает каким, образом можно установить переменные бутлоадера, в частности цвета шрифта и фона. Символ $ должен экранироваться.

USERFS_VERSION

Номер версии образа, который должен располагаться в разделе «NAND» с названием «Userfs» . Если номер текущего образа и обновляемого совпадает, то обновление не производиться.

USERFS_PATH

Расположение образа файловой системы пользователя (образ который должен быть при обновлении записан в раздел «NAND» с названием «Userfs» ). Образ подготавливается с помощью userfs_img.sh . Предварительно оператор должен положить необходимые ему файлы в подкаталог с именем /userfs .

SECONDBOOT_PATH Путь ко второму образу бутлоадера.
LOGOTYPE_PATH Путь к файлу логотипу, подготовленный оператором.

Для правильной работы утилит оператора, переменная KERNEL_PATH в профайлах, должна иметь значение ./uImzlib_mag250.img для MAG250 и ./uImzlib.img - для MAG200. Переменные 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 - для сборки публичного образа. Публичный ключ входи в состав утилит;

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

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

4. Подготовка переменных 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

5. Сборка образа (сборка imageupdate)

Синтаксис:

./img_make.sh <version_number> "<description>" <path_to_rootfs> <modelname> <path_to_profile>

Пример для MAG200:

 ./img_make.sh 216 "Test_test" ../rootfs MAG200 ./img_make.profile.mag200

Пример для MAG250:

 ./img_make.sh 216 "Test_test" ../rootfs MAG250 ./img_make.profile.mag250

где:

216

Номер версии образа, должно быть трехзначным числом. После успешного обновления стандартным Bootstrap-ом переменная начального загрузчика «Image_Version» принимает это значение.

"Test_test"

Краткое описание! Внимание! Пробелы не допускаются!. После успешного обновления стандартным Bootstrap-ом переменная начального загрузчика «Image_Desc» принимает это значение

../rootfs

место расположения/путь к каталогу с корневой файловой системой приставки. Корневую файловую систему rootfs-….tar.gz можно взять из релиза (MAG-200, MAG-250)

MAG250

модель приставки для которой собирается версия, может быть MAG200 , MAG250 , MAG254 , MAG270 и т.д

./img_make.profile.mag250

Профайл/путь к профайлу, в котором можно настроить подключение и отключение дополнительных секции. может быть ./img_make.profile.mag200

«Обновление ПО» из меню «Системные настройки» - переменная

update_url

. По умолчанию, обновление происходит по URL производителя на образ ПО подготовленный производителем. При сборке собственного образа рекомендуется изменить переменную на URL вашего образа.

"Mодуль автоматического обновления" из пункта «Настройки» основного меню. Переменные:

autoupdate_cond

,

betaupdate_cond

По умолчанию, автоматическое обновление включено и инициирует обновление на версии ПО производителя. Обновление возможно так же и в ручном режиме. При сборке собственного образа рекомендуется отключить работу модуля автоматического обновления либо организовать собственную систему обновления, руководствуясь описанием и инструкциями.

Проверка переменных окружения при старте.
С целью повышения безопасности и контроля несанкционированного изменения переменных, рекомендуется производить проверку необходимых/критичных переменных при загрузке ПО (например, таких как:

portal1

,

portal2

,

update_url

,

autoupdate_cond

 и т.д.)


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

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

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

  • для сохранения информации о ключе в файле
gpg -o opsecbin.KEY --export-secret-keys ID-ключа
  • для добавления этого ключа в gpg
 gpg --import opsecbin.KEY
  • для просмотра текущих доступных ключей.

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

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

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

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

OperatorImage

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