CustomImage - образ ПО STB, подписанный кастомным ключом (далее - custom-key). Цифровая подпись кастомного ключа на заводе-изготовителе не требуется. Ключ создается оператором самостоятельно, без обращения к производителю.
Варианты обновления CustomImage: Обновляется из портала (методами HTTP и USB) только на образы ПО, подписанные тем же custom-key. Может обновляться на публичные версии ПО (не подписанные кастомным ключом) из меню Bootloader (multicast, USB&Bootstrap).
Рекомендуется для использования операторами, которые хотят реализовать безопасное обновление ПО через HTTP, но оставить вариант обновления на публичные версии ПО.
Порядок сборки
- Выполнить подготовку необходимых файлов согласно пунктов 1, 2, 3 из раздела Подготовка образа ПО. Общие полoжения статьи Операторские утилиты и инструкции для сборки образа ПО, а именно:
1.1 Подготовка переменных окружения.
1.2 Подготовка профайла.
1.3. Копирование исходного файла ядра из релиза STB в рабочую директорию Операторских утилит.
Создать custom-key (если ранее не был создан), экспортировать его из gpg и поместить файл stb_custom.bin в корневую файловую систему rootfs в директорию
/usr/bin/
перед сборкой;
Собрать «промежуточный» (транзитный) образ ПО c необходимыми кастомизациями. Внимание! Промежуточный образ необходимо собирать без логотипа оператора.
- Собрать «финальный» образ ПО со всеми необходимыми кастомизациями, включая логотип оператора если необходимо;
- Обновить STB в два этапа:
- На «промежуточный» образ ПО - устанавливается только из меню меню Bootloader. На версии ПО ниже 0.2.14-r8 - любым методом.
- На «финальный» образ ПО. Внимание! Обновление на образ, подписанный custom-key возможно только через HTTP или USB из меню портала.
1. Подготовка custom-key
1.1 Выполнить:
Выбрать:
(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 Подписать ядро публичным ключом. Выполнить:
Внимание! «Промежуточный» образ собирается без логотипа оператора!
В профайле ./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!!!
На этой странице:
Связанные статьи: