Подготовлено на основе документа: Руководство оператора MAG-200 (стр. 12, 19, 38)
На примере: OS - Ubuntu 12.04 server, STB MAG-200/250
Для STB MAG-250 необходимо использовать «option space Infomir»
Приставка посылает dhcp-запрос со следующими параметрами:
vendor_class_id
- " TeleTecMAG200boot "
dhcp_client_id
- "TeleTecMAG200-XX:XX:XX:XX:XX:XX"
, где XX:XX:XX:XX:XX:XX
– MAC адрес устройстваvendor_spec
содержаться следующие опцииVernum
– строка формата "XXX"
с ведущими нулями datetime
- __DATE__"
- "__TIME__
Получив dhcp-ответ начальный загрузчик анализирует наличие в нем опций TeleTec.mcip
и TeleTec.mcport
. Если они присутствуют, то начальный загрузчика подключается к мультикаст группе указанной этими параметрами и принимает образ из этой группы. Если эти опции не указаны, то выполняется загрузка образа по протоколу tftp c сервера next-server расположенного по пути filename("mag200/Bootstrap")
.
Далее у загруженного образа проверяется цифровая подпись с использованием установленного ключа оператора. После проверки выполняется запуск образа, при этом в качестве корневой файловой системы указывается nfs раздел расположенный по адресу указанному в опции “root-path”
(в начале этого параметра должен быть указан IP сервера и через двоеточие расположение каталога, который будет монтироваться в качестве корня файловой системы). Bootstrap опциию “rootp-path”
игнорирует.
Содержимое файла dhcpd.conf:
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; }
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"; }
Последний вариант наиболее часто используется интеграторами для отладки ПО, операторами для проверки образа перед формированием образа для прошивки в приставку.
Файл /etc/exports
должен содержать строку: /srv/mag200 *(rw,no_root_squash,sync)
После включения приставки на экран выводится логотип, если он установлен, а на индикаторе передней панели отображается “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, подписанный установленным в приставку ключом оператора или общедоступным ключем (stb_pubbin.key)
.
Стандартный bootstrap 1 состоит из ядра Linux и корневой файловой системы RAM. После запуска bootstrap-а запускается dhcp-клиент. В dhcp-запросах, которого установлена опция vendor-class-identifier
в значение «TeleTecMAG200boot»
. Если в dhcp-ответе получены параметры TeleTec.mcip_img
и TeleTec.mcport_img
, то выполняются попытки загрузить подготовленный оператором образ из мультикаст группы TeleTec.mcip_img:TeleTec.mcport_img
. Параметры TeleTec.ip_log:TeleTec.ip_port
опеределяют адрес куда bootstrap попытается послать результаты своей работы. Получить этот отчет, можно, например, запустив на сервере с IP - TeleTec.ip_log
, команду: nc –l ip_port
. Bootstrap выполняет проверку цифровой подписи полученного образа с использованием ключа оператора, если он установлен, иначе проверка выполняется общедоступным ключом. С каждым образом для обновления связаны следующие параметры:
“Image_Date”
;“Image_Version”
;“Image_Desc”
.
Далее проверяется номер версии полученного образа. Если номер образа меньше чем номер уже прошитого образа, то обновления не происходит. Если номера равны то обновление происходит, только если в меню начального загрузчика в пункте “Image Info”/“Forced”
предварительно установить значение “Yes”
. Если номер образа больше, то выполняется обновление образа. После успешного обновления, устанавливаются переменные начального загрузчика “Image_Version”
, “Image_Date”
и “Image_Desc”
, устанавливается режим загрузки “NAND” и выполняется перезапуск приставки. Переменные начального загрузчика “Image_Version”
, “Image_Date”
и “Image_Desc”
можно посмотреть в меню начального загрузчика “Image Info”
,а так же с помощью утилиты fw_printenv. Процесс обновления сопровождается выводом на экран телевизора соответствующих сообщений.
Содержимое секции «_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; }
Для конфигурирования системы обновления образов на приставке с использованием карусельной мультикаст группы необходимо выполнить следующие шаги:
bootstrap
и образа для обновления в мультикаст группу;
Приставка при работе по протоколу dhcp заполняет информационный элемент vendor-class-identifier
. Анализ его значения позволяет установить некоторые параметры и настройки приставки, они передаются в ответе dhcp-сервера и влияют на варианты загрузки и работы приставки.
В файле dhcpd.conf
приведен пример конфигурирования dhcp-сервера.
В разделе Описание vendor-specific опций описаны опции, которые передаются в информационном элементе vendor-specific
.
С помощью утилиты mcsend можно огранизовать карусельные мультикаст группы. В файле mcast.conf содержится пример конфигурации, в которой организуется две мультикаст группы. В первой 224.10.0.50:9000 - вещается Bootstrap, во второй 224.10.0.51:9001 - вешается imageupdate.
mcsend входи в состав операторских утилит
Запуск утилиты с подготовленным конфигурационным файлом mcast.conf выполняется следующей командой:
./mcsend -c ./mcast.conf
Процесс обновления программного обеспечения в приставке с использованием карусельных мультикаст групп состоит из следующих этапов:
vendor-class-identifier="TeleTecMAG200boot"
и получает ответ от dhcp-сервера с TeleTec.mcip
и TeleTec.mcport
;TeleTec.mcip:TeleTec.mcport
(в этом примере 224.10.0.50:9000); vendor-class-identifier=«TeleTecMAG200upgrade»
и получает ответ от dhcp-сервера с установленными TeleTec.mcip_img
и TeleTec.mcport_img
; TeleTec.mcip_img:TeleTec.mcport_img
(в этом примере 224.10.0.51:9001) - это файл imageupdate; Для обновления программного обеспечения с использованием «фиксированных» карусельных мулькаст групп необходимо с помощью утилиты mcsend (например) организовать карусельные мультикаст группы. При этом приставка ожидает, что в группе 224.50.0.50:9000 - вещается Bootstrap, во второй 224.50.0.51:9001 - вешается imageupdate. Адреса групп для этой процедуры фиксированы. В файле mcast_mcman.conf содержится пример конфигурации, в которой организуется две этих мультикаст группы.
Процесс обновления программного обеспечения в приставке с использованием «фиксированных» карусельных мультикаст групп состоит из следующих этапов:
Использую данный процесс можно заменить основное ПО на приставке не используя протоколы dhcp и tftp, достаточно только организовать вещание необходимых файлов и инициировать смену основного ПО.
Название | Код | Тип | Описание | Кем используется |
---|---|---|---|---|
mcip | 3 | ip-address | IP адрес мультикаст группы для приема ядра или Bootstrap-а. | Boolloader |
mcport | 4 | integer 16 | Порт мультикаст группы для приема ядра или Bootstrap-а. | Boolloader |
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, левого верхнего угла логотипа | Boolloader |
logo_y | 17 | integer 16 | Координата по оси y, левого верхнего угла логотипа | Boolloader |
bg_color | 18 | integer 32 | Цвет фона в формате “XRGB” для отображения информационных сообщений при загрузке | Boolloader |
fg_color | 19 | integer 32 | Цвет шрифта в формате “XRGB” для отображения информационных сообщений при загрузке | Boolloader |
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-сервер |