DHCP-сервер, конфигурация, загрузка основного ПО, обновление ПО MAG200
Подготовлено на основе документа: Руководство оператора MAG-200 (pdf) (стр. 12, 19, 38)
На примере: OS - Ubuntu 12.04 server, STB MAG-200
Для STB MAG-200 используется vendor-option-space TeleTec
Алгоритм загрузки ПО STB по DHCP-запросу
Приставка посылает dhcp-запрос со следующими параметрами:
vendor_class_id -" TeleTecMAG200boot " dhcp_client_id -"TeleTecMAG200-XX:XX:XX:XX:XX:XX" , гдеXX:XX:XX:XX:XX:XX – MAC адрес устройстваВ секции
vendor_spec содержатся следующие опции:
a. Номер версии начального загрузчика:Vernum – строка формата"XXX" с ведущими нулями
b. Дата и время: datetime -__DATE__" -"__TIME__
Получив ответ от dhcp-сервера, начальный загрузчик анализирует наличие в нём опций мультикаст-вещания, на которых производится вещание образа:
- IP-адрес:
- Порт:
Далее у загруженного образа проверяется цифровая подпись с использованием установленного ключа оператора. После проверки выполняется запуск образа, при этом в качестве корневой файловой системы указывается nfs-раздел, расположенный по адресу, указанному в опции
Содержимое файла dhcpd.conf:
- для загрузки Bootstrap из мультикаст группы 224.10.0.50:9000:
class "MAG200_boot" { match if (( option vendor-class-identifier="TeleTecMAG200boot")); vendor-option-space TeleTec; option TeleTec.mcip 224.10.0.50; option TeleTec.mcport 9000; }
- для загрузки Bootstrap по протоколу tftp:
class "MAG200_boot" { match if (( option vendor-class-identifier="TeleTecMAG200boot")); filename "mag200/Bootstrap"; next-server 192.168.1.2; }
- для загрузки ядра по протоколу tftp с корневой файловой системой, подключенной через nfs:
class "MAG200_boot" { match if (( option vendor-class-identifier="TeleTecMAG200boot")); filename "mag200/uImage"; next-server 192.168.1.2; option root-path "192.168.1.2:/srv/mag200/rootfs"; }
Последний вариант наиболее часто используется интеграторами для отладки ПО, операторами для проверки образа перед формированием образа для прошивки в приставку.
Файл
Индикация состояния загрузки основного ПО STB MAG-200
После включения приставки на экран выводится логотип, если он установлен, а на индикаторе передней панели отображается “200”. Далее начальный загрузчик выводит на экран телевизора и индикатор на передней панели информационные сообщения об этапах загрузки.
Этапы загрузки основного ПО | Передняя панель | Сообщения на экране телевизора |
---|---|---|
Кабель Ethernet не подключен | Erln | «No link detected!!!» |
Посылка запроса dhcp | dHCP | “DHCP” |
Посылка повторного запроса dhcp (с номером попытки) | dHCP | «DHCP Retry#» |
Запрос dhcp закончился неудачно | Er10 | «DHCP Error» |
Загрузка ядра с раздела mtd4 | nand | «Load from nand» |
Ошибка загрузки ядра с раздела mtd4 | Er20 | «Error loading image from nand» |
Содержимое раздела mtd4 некоректно | Er20 | «Active partition not valid» |
Загрузка ядра/bootstrap из мультикаст группы | load | «Multicast load» |
Загрузка ядра/bootstrap по протоколу tftp | tftp | «Tftp load» |
Проверка цифровой подписи | chec | «Checking image» |
Неверный формат образа | Er30 | «Wrong image» |
Цифровая подпись не корректна | Er30 | «Wrong digital signature» |
Запуск ядра/bootstrap-а на выполнение | GO__ | «Loading …» |
Bootstrap
Bootstrap позволяет оператору обновить основное ПО, расположенное в приставке и выполнить необходимые настройки. Начальный загрузчик получает, проверяет и запускает образ на выполнение. Этим образом может быть bootstrap, подписанный установленным в приставку ключом оператора или общедоступным ключем
Дата создания образа оператором. Переменная начального загрузчика -
“Image_Date” ;Номер версии образа. Указывается оператором при создании образа. Переменная начального загрузчика -
“Image_Version” ;Краткое описание. Строка, заданная оператором. Переменная начального загрузчика -
“Image_Desc” .
Далее проверяется номер версии полученного образа. Если номер образа меньше чем номер уже прошитого образа, то обновления не происходит. Если номера равны то обновление происходит, только если в меню начального загрузчика в пункте
Содержимое секции «_upgrade» файла dhcpd.conf:
class "MAG200_upgrade" { match if (( option vendor-class-identifier="TeleTecMAG200upgrade")); vendor-option-space TeleTec; option TeleTec.mcip 224.10.0.50; option TeleTec.mcport 9000; option TeleTec.mcip_img 224.10.0.51; option TeleTec.mcport_img 9001; option TeleTec.ip_log 192.168.1.2; option TeleTec.port_log 10000; }
Этапы обновление основного ПО на приставке
- Пуск приставки в режиме “DHCP”;
- Загрузка bootstrap-а из мультикаст группы или по fttp;
- Проверка цифровой подписи;
- Запуск bootstrap-а;
- Прием из мультикаст группы образа для обновления;
- Проверка цифровой подписи полученного образа;
- Проверка номера версии образа для обновления;
- Обновление разделов на приставке;
- Сохранение переменных начального загрузчика.
Конфигурирование и организация процесса обновления программного обеспечения с использованием карусельных мультикаст групп
Для конфигурирования системы обновления образов на приставке с использованием карусельной мультикаст группы необходимо выполнить следующие шаги:
- Настроить DHCP-сервер;
Настроить работу утилиты mcsend для карусельного вещания
bootstrap и образаimageupdate для обновления в мультикаст группу;- Подготовить образы для вещания;
- Запустить утилиту mcsend
Подготовка образов для вещания
Настройка DHCP сервера
Приставка при работе по протоколу dhcp заполняет информационный элемент
В файле
В разделе "Описание vendor-specific опций" описаны опции, которые передаются в информационном элементе
Конфигурирование карусельного мультикаст сервера
С помощью утилиты mcsend можно организовать карусельные мультикаст группы. В файле mcast.conf содержится пример конфигурации, в которой организуется две мультикаст группы. В первой 224.10.0.50:9000 - вещается Bootstrap, во второй 224.10.0.51:9001 - вещается imageupdate.
mcsend входит в состав операторских утилит.
Запуск утилиты с подготовленным конфигурационным файлом mcast.conf выполняется следующей командой:
./mcsend -c ./mcast.conf
Описание процесса обновления программного обеспечения с использованием карусельных мулькаст групп
Процесс обновления программного обеспечения в приставке с использованием карусельных мультикаст групп состоит из следующих этапов:
Пуск приставки в режиме “DHCP”. При этом приставка посылает dhcp-запрос с
vendor-class-identifier="TeleTecMAG200boot" и получает ответ от dhcp-сервера сTeleTec.mcip иTeleTec.mcport ;Приставка получает образ из мультикаст группы
TeleTec.mcip:TeleTec.mcport (в этом примере 224.10.0.50:9000);- Проверяет корректность цифровой подписи, используя ключ оператора или публичный ключ производителя;
- Запускает на выполнение полученный образ. В данном примере это Bootstrap;
Bootstrap запускается и посылает dhcp-запрос с
vendor-class-identifier=«TeleTecMAG200upgrade» и получает ответ от dhcp-сервера с установленнымиTeleTec.mcip_img иTeleTec.mcport_img ;Bootstrap получает образ из мультикаст группы
TeleTec.mcip_img:TeleTec.mcport_img (в этом примере 224.10.0.51:9001) - это файл imageupdate;- Проверяется корректность цифровой подписи, используя ключ оператора или публичного ключа производителя;
- Проверяется номер версии imageupdate;
- Обновляет разделы mtd4 и mtd5;
- Выполняет перезапуск приставки в режиме ”NAND”.
Описание процесса обновления программного обеспечения с использованием «фиксированных» карусельных мулькаст групп
Для обновления программного обеспечения с использованием «фиксированных» карусельных мулькаст групп необходимо с помощью утилиты mcsend (например) организовать карусельные мультикаст группы. При этом приставка ожидает, что в группе 224.50.0.50:9000 - вещается Bootstrap, во второй 224.50.0.51:9001 - вещается imageupdate. Адреса групп для этой процедуры фиксированы. В файле mcast_mcman.conf содержится пример конфигурации, в которой организуется две этих мультикаст группы.
Процесс обновления программного обеспечения в приставке с использованием «фиксированных» карусельных мультикаст групп состоит из следующих этапов:
- Организовать вещание Bootstrap по адресу 224.50.0.50:9000 и imageupdate - 224.50.0.51:9001;
- Выключить приставку;
- Нажать на пульте дистанционного управления кнопку “menu”;
- Включить приставку;
- Выбрать пункт меню “Upgrade Image”/“MC Upgrade”;
- Приставка получает образ из мультикаст группы 224.50.0.50: 9000;
- Проверяет корректность цифровой подписи используя ключ оператора;
- Запускает на выполнение полученный образ. В данном примере это Bootstrap;
- Bootstrap запускается и получает образ из мультикаст группы 224.50.0.51:9001 - это файл imageupdate;
- Проверяется корректность цифровой подписи используя ключ оператора;
- Проверяется номер версии imageupdate;
- Обновляет разделы mtd4 и mtd5;
- Выполняет перезапуск приставки в режиме ”NAND”.
Используя данный процесс, можно заменить основное ПО на приставке, не используя протоколы dhcp и tftp, достаточно только организовать вещание необходимых файлов и инициировать смену основного ПО.
Описание vendor-specific опций
Название | Код | Тип | Описание | Кем используется |
---|---|---|---|---|
mcip | 3 | ip-address | IP адрес мультикаст группы для приема ядра или Bootstrap-а. | Bootloader |
mcport | 4 | integer 16 | Порт мультикаст группы для приема ядра или Bootstrap-а. | Bootloader |
oppubfile | 9 | text | Содержит имя файла, в котором расположен подготовленный ключ оператора для установку в приставку | Bootstrap |
mcip_img | 10 | ip-address | IP адрес мультикаст группы для приема imageupdate. | Bootstrap |
mcport_img | 11 | integer 16 | Порт мультикаст группы для приема imageupdate. | Bootstrap |
mcip_mng | 12 | ip-address | IP адрес мультикаст группы для приема команд. | Основное ПО |
mcport_mng | 13 | integer 16 | Порт мультикаст группы для приема команд. | Основное ПО |
ip_log | 14 | ip-address | IP адрес сервера на который Bootstrap может послать отчеты. | Bootstrap |
port_log | 15 | integer 16 | Порт на сервере на который Bootstrap может послать отчеты. | Bootstrap |
logo_x | 16 | integer 16 | Координата по оси x, левого верхнего угла логотипа | Bootloader |
logo_y | 17 | integer 16 | Координата по оси y, левого верхнего угла логотипа | Bootloader |
bg_color | 18 | integer 32 | Цвет фона в формате “XRGB” для отображения информационных сообщений при загрузке | Bootloader |
fg_color | 19 | integer 32 | Цвет шрифта в формате “XRGB” для отображения информационных сообщений при загрузке | Bootloader |
VerNumber | 20 | text | Версия начального загрузчика три символа с ведущими нулями. Пример использования: substring( option vendor-encapsulated-options,2,3)=«002» | Dhcp-сервер |
DateTime | 21 | text | Дата и время создания начального загрузчика. | Dhcp-сервер |
portal_dhcp | 22 | text | Портал, на который выполняется переход, если не установлены переменные “portal1” и “portal2” и переменная ”use_portal_dhcp” не установлена или имеет значение “true”. Если переменная ”use_portal_dhcp” установлена в ”false”, то это значение этой переменной не используется. | Dhcp-сервер |