Skip navigation

Подготовлено на основе документа: Руководство оператора MAG-200 (pdf) (стр. 12, 19, 38)

На примере: OS - Ubuntu 12.04 server, STB MAG-200

Пример файла dhcpd.conf

Для STB MAG-200 используется vendor-option-space TeleTec

Алгоритм загрузки ПО STB по DHCP-запросу

Приставка посылает dhcp-запрос со следующими параметрами:

  1. vendor_class_id - " TeleTecMAG200boot "

  2. dhcp_client_id - "TeleTecMAG200-XX:XX:XX:XX:XX:XX" , где XX:XX:XX:XX:XX:XX – MAC адрес устройства

  3. В секции vendor_spec содержатся следующие опции:
    a. Номер версии начального загрузчика: Vernum – строка формата "XXX" с ведущими нулями
    b. Дата и время: datetime - __DATE__" - "__TIME__

Получив ответ от  dhcp-сервера, начальный загрузчик анализирует наличие в нём опций мультикаст-вещания, на которых производится вещание образа:

  • IP-адрес:

TeleTec.mcip

  • Порт:

TeleTec.mcport . Если опции присутствуют, начальный загрузчик подключается к мультикаст-группе, указанной этими параметрами, и принимает образ из этой группы. Если эти опции не указаны, то выполняется загрузка образа по протоколу tftp c сервера next-server, расположенного по пути, указанному в строке: filename("mag200/Bootstrap") .

Далее у загруженного образа проверяется цифровая подпись с использованием установленного ключа оператора. После проверки выполняется запуск образа, при этом в качестве корневой файловой системы указывается nfs-раздел, расположенный по адресу, указанному в опции “root-path” (в начале этого параметра должен быть указан IP сервера и через двоеточие расположение каталога, который будет монтироваться в качестве корня файловой системы). Bootstrap опцию “rootp-path” игнорирует.

Содержимое файла 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";
}

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

Файл /etc/exports должен содержать строку: /srv/mag200 *(rw,no_root_squash,sync)

Индикация состояния загрузки основного ПО 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, подписанный установленным в приставку ключом оператора или общедоступным ключем (stb_pubbin.key) . Стандартный bootstrap состоит из ядра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” в полях Version, Date, Description, соответственно. Также значение указанных переменных можно просмотреть непосредственно с STB c помощью утилиты 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; 
} 

Этапы обновление основного ПО на приставке

  • Пуск приставки в режиме “DHCP”;
  • Загрузка bootstrap-а из мультикаст группы или по fttp;
  • Проверка цифровой подписи;
  • Запуск bootstrap-а;
  • Прием из мультикаст группы образа для обновления;
  • Проверка цифровой подписи полученного образа;
  • Проверка номера версии образа для обновления;
  • Обновление разделов на приставке;
  • Сохранение переменных начального загрузчика.

Конфигурирование и организация процесса обновления программного обеспечения с использованием карусельных мультикаст групп

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

  • Настроить DHCP-сервер;
  • Настроить работу утилиты mcsend для карусельного вещания bootstrap и образа imageupdate для обновления в мультикаст группу;

  • Подготовить образы для вещания;
  • Запустить утилиту mcsend

Подготовка образов для вещания

Cборка образа ПО.

Настройка DHCP сервера

Приставка при работе по протоколу 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 

Описание процесса обновления программного обеспечения с использованием карусельных мулькаст групп

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

  • Пуск приставки в режиме “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-сервер

Пример файла dhcpd.conf

  dhcpd.conf
option ntp-servers 10.1.1.1;
	option domain-name-servers 10.1.1.1;
	authoritative;
	option subnet-mask 255.255.255.0;
	default-lease-time 600;
	max-lease-time 7200;
	allow bootp;
 
#############################################################
# Option for TeleTec (for mag200)
#############################################################
 
	option space TeleTec;
	option TeleTec.update_url        code 24 = text;
	option TeleTec.update_sboot      code 25 = text;
	option TeleTec.update_ver        code 26 = text;
	option TeleTec.update_mode       code 27 = text;
	option TeleTec.portal_dhcp       code 22 = text;
	option TeleTec.update_sboot_ver  code 28 = text;
	option TeleTec.logo_x            code 16 = integer 16;
	option TeleTec.logo_y            code 17 = integer 16;
	option TeleTec.bg_color          code 18 = integer 32;
	option TeleTec.fg_color          code 19 = integer 32;
	option TeleTec.mcip              code 3 = ip-address;
	option TeleTec.mcport            code 4 = integer 16;
	option TeleTec.oppubfile         code 9 = text;
	option TeleTec.mcip_img          code 10 = ip-address;
	option TeleTec.mcport_img        code 11 = integer 16;
	option TeleTec.mcip_mng          code 12 = ip-address;
	option TeleTec.mcport_mng        code 13 = integer 16;
	option TeleTec.ip_log            code 14 = ip-address;
	option TeleTec.port_log          code 15 = integer 16;
	option TeleTec.VerNumber         code 20 = text;
	option TeleTec.DateTime          code 21 = text;
 
##############################  BOOT MAG200 ###############################
 
	class "MAG200_boot" {
	match if (( option vendor-class-identifier="TeleTecMAG200boot"));
	filename "mag200/uImage";
	next-server 10.1.1.1;
	option root-path "10.1.1.1:/srv/mag200";
	option ntp-servers 10.1.1.1;
	vendor-option-space TeleTec;
	}
 
	class "MAG200_vendor" {
	match if (( option vendor-class-identifier="TeleTecMAG200"));
	next-server 10.1.1.1;
	option ntp-servers 10.1.1.1;
	vendor-option-space TeleTec;
	option TeleTec.portal_dhcp "http://10.1.1.1/stalker_portal/c/index.html";
	option TeleTec.update_url "tftp://10.1.1.1/mag200/imageupdate_200_212r2";
	option TeleTec.update_ver "212";
	option TeleTec.update_sboot "http://10.1.1.1/mag200/SbootIm_038_200";
	option TeleTec.update_sboot_ver "038";
	option TeleTec.update_mode "tftp://10.1.1.1/mag200/Bootstrap_200_212r2";
	}
 
############################## NETWORK ####################################
 
	subnet 10.1.1.0 netmask 255.255.255.0 {
        option subnet-mask 255.255.255.0;
        next-server 10.1.1.1;
        pool { 
	range 10.1.1.10 10.1.1.254;
        next-server 10.1.1.1;
        option ntp-servers 10.1.1.1;
        	}
	}
Need Help

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

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

Да Нет

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

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