Skip navigation

CustomImage - образ ПО STB, подписанный кастомным ключом (далее - custom-key). Цифровая подпись кастомного ключа на заводе-изготовителе не требуется. Ключ создается оператором самостоятельно, без обращения к производителю.
Варианты обновления CustomImage: Обновляется из портала (методами HTTP и USB) только на образы ПО, подписанные тем же custom-key. Может обновляться на публичные версии ПО (не подписанные кастомным ключом) из меню  Bootloader (multicast, USB&Bootstrap).

Рекомендуется для использования операторами, которые хотят реализовать безопасное обновление ПО через HTTP, но оставить вариант обновления на публичные версии ПО.

Порядок сборки

  1. Выполнить подготовку необходимых файлов согласно пунктов 1, 2, 3 из раздела Подготовка образа ПО. Общие полoжения статьи Операторские утилиты и инструкции для сборки образа ПО, а именно:
    1.1 Подготовка переменных окружения.
    1.2 Подготовка профайла.
    1.3. Копирование исходного файла ядра из релиза STB в рабочую директорию Операторских утилит.
  2. Создать custom-key (если ранее не был создан), экспортировать его из gpg и поместить файл stb_custom.bin в корневую файловую систему rootfs в директорию /usr/bin/ перед сборкой;

  3. Собрать «промежуточный» (транзитный) образ ПО c необходимыми кастомизациями.  Внимание! Промежуточный образ необходимо собирать без логотипа оператора.

  4. Собрать «финальный» образ ПО со всеми необходимыми кастомизациями, включая логотип оператора если необходимо;
  5. Обновить STB в два этапа:
    1. На «промежуточный» образ ПО - устанавливается только из меню меню Bootloader. На версии ПО ниже 0.2.14-r8 - любым методом.
    2. На «финальный» образ ПО. Внимание! Обновление на образ, подписанный custom-key возможно только через HTTP или USB из меню портала.

1. Подготовка custom-key

1.1 Выполнить:

gpg --gen-key

Выбрать:

(5) RSA (sign only)
What keysize do you want? (2048) 2048
Key is valid for? (0) 0
Is this correct? (y/N) y
Real name: ID ключа

где:  ID ключа - произвольное имя ключа, под этим ID ключ будет хранится в GPG

1.2 Экспорт ключа в файл:

gpg -o stb_custom.bin --export ID-ключа

1.3 Файл stb_custom.bin поместить в rootfs (корневая файловая система приставки, берется из релиза) в директорию /usr/bin/

Файл stb_custom.bin необходимо использовать при всех последующих (после 0.2.14-r8) сборках образов ПО.

2. Сборка промежуточного образа

2.1 Используется публичный ключ входящий в состав утилит. Выполнить:

gpg --import stb_secbin.key
export MAG200_OP_KEY=STB_PUBLIC

2.2 Подписать ядро публичным ключом. Выполнить:

./kernel_sign_254.sh

Внимание! «Промежуточный» образ собирается без логотипа оператора!
В профайле ./img_make.profile.mag254 необходимо закомментировать следующую строку:
export LOGOTYPE_PATH=./images/logo.bmp.gz

2.3 Выполнить сборку imageupdate :

./img_make.sh 216 "test_transitional" ../../rootfs MAG254 ./img_make.profile.mag254

2.4 Переименовать файл imageupdate . Например:

mv imageupdate imageupdate_trans	

3. Сборка Финального образа

3.1 Используется custom-key, подготовленный ранее. Выполнить:

export MAG200_OP_KEY=<ID кастомного ключа> 

3.2 Подписать ядро, используя custom-key:

./kernel_sign_254_custom.sh

3.3 Указать ID кастомного ключа в файле img_make.profile.mag254 :

 export MAG200_OP_KEY=<ID кастомного ключа>

3.4 Выполнить сборку imageupdate :

./img_make.sh 216 "test_final" ../../rootfs MAG254 ./img_make.profile.mag254

3.5 Переименовать созданный файл imageupdate . Например:

mv imageupdate imageupdate_final

4. Установка CustomImage в STB в два этапа

4.1 Установить в STB «промежуточный» (транзитный) образ ПО. Внимание:

- Устанавливается на версии 0.2.14-r8 и выше только из меню меню Bootloader;

- На версии ПО ниже 0.2.14-r8 - любым методом.

4.2 Установить в STB финальный образ ПО. Внимание: Обновление на образ, подписанный Custom-key возможно только из меню портала (через HTTP или USB).

В дальнейшем, при сборке кастомных образов ПО, для подписи ядра необходимо использовать:

./kernel_sign_254_custom.sh - для MAG-254,

Файл stb_custom.bin , в последствии, будет использоваться для всех собираемых образов и должен находится в rootfs , в каталоге /usr/bin

Пример сборки CustomImage MAG-254

  Пример сборки CustomImage для MAG-254

Совет. Для прокрутки текста кода влево-вправо наведите указатель мыши в поле отображения кода, зажмите Shift и прокручивайте колесо мыши.

 root@localhost:~/218-r7-test# wget -b  http://wiki.iptv.infomir.com/pub/operators_utils_new_mag200_mag250_mag254.tar.gz
 Continuing in background, pid 28657.
 Output will be written to ‘wget-log’.
 
 root@localhost:~/218-r7-test# wget -b http://soft.infomir.com/mag254/release/0.2.18-r8/rootfs-0.2.18r8.tar.gz
 Continuing in background, pid 28659.
 Output will be written to ‘wget-log.1’.
    
 root@localhost:~/218-r7-test# wget -b http://soft.infomir.com/mag254/release/0.2.18-r8/vmlinux.bin.mag254
 Continuing in background, pid 28661.
 Output will be written to ‘wget-log.2’.
 
 root@localhost:~/218-r7-test# tar -zxf operators_utils_new_mag200_mag250_mag254.tar.gz 
 root@localhost:~/218-r7-test# tar -zxf rootfs-0.2.18r8.tar.gz 
 root@localhost:~/218-r7-test# mv vmlinux.bin.mag254 operators_utils_new_mag200_mag250_mag254/images/
 root@localhost:~/218-r7-test# rm operators_utils_new_mag200_mag250_mag254.tar.gz 
 root@localhost:~/218-r7-test# rm rootfs-0.2.18r8.tar.gz 
 root@localhost:~/218-r7-test# gpg --gen-key
 
 gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 
 Please select what kind of key you want:
 (1) RSA and RSA (default)
 (2) DSA and Elgamal
 (3) DSA (sign only)
 (4) RSA (sign only)
 Your selection? 4
 RSA keys may be between 1024 and 4096 bits long.
 What keysize do you want? (2048) 
 Requested keysize is 2048 bits
 Please specify how long the key should be valid.
 0 = key does not expire
    <n>  = key expires in n days
    <n>w = key expires in n weeks
    <n>m = key expires in n months
    <n>y = key expires in n years
 Key is valid for? (0) 
 Key does not expire at all
 Is this correct? (y/N) y
 
 You need a user ID to identify your key; the software constructs the user ID
 from the Real Name, Comment and E-mail Address in this form:
  "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
 
 Real name: testbuildmag254
 E-mail address: 
 Comment: 
 You selected this USER-ID:
  "testbuildmag254"
 
 Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? o
 You need a Passphrase to protect your secret key.
 
 gpg: gpg-agent is not available in this session
 You don't want a passphrase - this is probably a *bad* idea!
 I will do it anyway.  You can change your passphrase at any time,
 using this program with the option "--edit-key".
 
 We need to generate a lot of random bytes. It is a good idea to perform
 some other action (type on the keyboard, move the mouse, use the
 disks) during the prime generation; this gives the random number
 generator a better chance to gain enough entropy.
 
 Not enough random bytes available.  Please do some other work to give    
 the OS a chance to collect more entropy!  (Need 187 more bytes)  

Для ускорения процесса генерации случайных байтов попытайтесь загрузить некоторые файлы в дублированной консоли в /dev/null

wget -O /dev/null http://192.168.1.1/some_big_file.ts
 gpg: key AAD87568 marked as ultimately trusted
 public and secret key created and signed.
 
 gpg: checking the trustdb
 gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
 gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
 pub   2048R/AAD87568 2014-11-17
    Key fingerprint = E6CB 1AEC 14F6 ACDC 9B74  D10F 1767 2ABE AAD8 7568
 uid                  testbuildmag254
 
 Note that this key cannot be used for encryption.  You may want to use
 the command "--edit-key" to generate a subkey for this purpose.
 
 root@localhost:~/218-r7-test# gpg -o stb_custom.bin --export testbuildmag254
 root@localhost:~/218-r7-test# cp stb_custom.bin rootfs-0.2.18r8/usr/bin/
 
 root@localhost:~/218-r7-test# cd operators_utils_new_mag200_mag250_mag254/
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# gpg --import stb_secbin.key
 gpg: key 6BEED1ED: already in secret keyring
 gpg: Total number processed: 1
 gpg:       secret keys read: 1
 gpg:  secret keys unchanged: 1
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# export MAG200_OP_KEY=STB_PUBLIC
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# ./kernel_sign_254.sh
 
 File vmlinux.sign create - successfully!!!
 Image Name:   MAG254 SH4 Kernel Linux 2.6.17
 Created:      Mon Nov 17 13:48:38 2014
 Image Type:   SuperH Linux Kernel Image (gzip compressed)
 Data Size:    3244259 Bytes = 3168.22 kB = 3.09 MB
 Load Address: 0x80800000
 Entry Point:  0x80801000
 File uImzlib_mag254.img create - successfully!!!
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# cat img_make.profile.mag254 
 #    Kernel's file system
 export KERNEL_PATH=./uImzlib_mag254.img
    
 #    File name for enviroment variable
 export ENV_VARIABLE_PATH=./images/env_mag254.txt
 
 #    Userfs
 export USERFS_VERSION=1
 export USERFS_PATH=./images/userfs.img
    
 #    File name for SecondBoot
 export SECONDBOOT_PATH=./images/SbootIm_mag254
 
 #    File name for Logotype
 #export LOGOTYPE_PATH=./images/logo.bmp.gz
 export MAG200_OP_KEY=STB_PUBLIC
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# ./img_make.sh 218 "test_transitional" ../rootfs-0.2.18r8/ MAG254 ./img_make.profile.mag254
 Make rootfs image ../rootfs-0.2.18r8/
 Append digital signature MAG200_OP_KEY=STB_PUBLIC
 File ./sumsubfsnone.img.sign create - successfully!!!
 gpg (GnuPG) 1.4.16
 Copyright (C) 2013 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 
 Home: ~/.gnupg
 Supported algorithms:
 Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
 Cypher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
      CAMELLIA128, CAMELLIA192, CAMELLIA256
 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
 Compression: Uncompressed, ZIP, ZLIB, BZIP2
 File result:./imageupdate
 Create section "Kernel size:" and append file ./uImzlib_mag254.img.
 Create section "Image  size:" and append file ./sumsubfsnone.img.sign.
 Create section "Env size:" and append file ./images/env_mag254.txt.
 Create section "Userfs size:" and append file ./images/userfs.img.
 File ./imageupdate create - successfully!!!
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# mv imageupdate imageupdate_tr   

"Промежуточный" образ создан. Теперь необходимо создать "финальный образ".

 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# export MAG200_OP_KEY=testbuildmag254
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# ./kernel_sign_254_custom.sh
 File vmlinux.sign create - successfully!!!
 Image Name:   MAG254 SH4 Kernel Linux 2.6.17
 Created:      Mon Nov 17 13:50:34 2014
 Image Type:   SuperH Linux Kernel Image (gzip compressed)
 Data Size:    3244259 Bytes = 3168.22 kB = 3.09 MB
 Load Address: 0x80800000
 Entry Point:  0x80801000
 File uImzlib_mag254.img create - successfully!!!
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# vi img_make.profile.mag254
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# cat img_make.profile.mag254
 #    Kernel's file system
 export KERNEL_PATH=./uImzlib_mag254.img
    
 #    File name for enviroment variable
 export ENV_VARIABLE_PATH=./images/env_mag254.txt
 
 #    Userfs
 export USERFS_VERSION=1
 export USERFS_PATH=./images/userfs.img
 
 #    File name for SecondBoot
 export SECONDBOOT_PATH=./images/SbootIm_mag254
 
 #    File name for Logotype
 export LOGOTYPE_PATH=./images/logo.bmp.gz
 export MAG200_OP_KEY=testbuildmag254
 
 root@localhost:~/218-r7-test/operators_utils_new_mag200_mag250_mag254# ./img_make.sh 218 "test_final" ../rootfs-0.2.18r8/ MAG254 ./img_make.profile.mag254
 Make rootfs image ../rootfs-0.2.18r8/
 Append digital signature MAG200_OP_KEY=testbuildmag254
 File ./sumsubfsnone.img.sign create - successfully!!!
 gpg (GnuPG) 1.4.16
 Copyright (C) 2013 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 
 Home: ~/.gnupg
 Supported algorithms:
 Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
 Cypher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
 Compression: Uncompressed, ZIP, ZLIB, BZIP2
 File result:./imageupdate
 Create section "Kernel size:" and append file ./uImzlib_mag254.img.
 Create section "Image  size:" and append file ./sumsubfsnone.img.sign.
 Create section "Env size:" and append file ./images/env_mag254.txt.
 Create section "Userfs size:" and append file ./images/userfs.img.
 Create section "Logotype  size:" and append file ./images/logo.bmp.gz.
 File ./imageupdate create - successfully!!!
Need Help

Дима – эксперт по работе с приставками серии MAG и автор этой статьи.

Была ли полезна эта статья?

Да Нет

Сожалеем.
Как можно улучшить эту статью?

Мы используем cookie-файлы, чтобы оптимизировать работу сайта и предоставить вам лучший интерфейс; а также для продвижения нашей продукции. Ознакомьтесь с нашей политикой Cookie, чтобы узнать, как именно мы используем cookie-файлы, и как вы можете это контролировать.
Если вы продолжите пользоваться сайтом или закроете это сообщение — это значит, что вы согласны с нашей Политикой конфиденциальности и разрешаете использование cookie-файлов, как описано в политике Cookie.