Содержание

DHCP сервер, конфигурация, загрузка основного ПО, обновление ПО MAG250

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

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

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

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

Для STB MAG-250 необходимо использовать «option space Infomir»

Режим загрузки основного ПО 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 содержаться следующие опции
    1. Номер версии начального загрузчика: Vernum – строка формата "XXX" с ведущими нулями
    2. Дата и время: 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 позволяет оператору обновить основное ПО расположенное в приставке и выполнить необходимые настройки. Начальный загрузчик получает, проверяет и запускает образ на выполнение. Этим образом может быть 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 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; 
} 

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

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

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

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

Сборка образа ПО STB MAG-200/250

Настройка 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 

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

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

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

Для обновления программного обеспечения с использованием «фиксированных» карусельных мулькаст групп необходимо с помощью утилиты mcsend (например) организовать карусельные мультикаст группы. При этом приставка ожидает, что в группе 224.50.0.50:9000 - вещается Bootstrap, во второй 224.50.0.51:9001 - вешается imageupdate. Адреса групп для этой процедуры фиксированы. В файле mcast_mcman.conf содержится пример конфигурации, в которой организуется две этих мультикаст группы.

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

Использую данный процесс можно заменить основное ПО на приставке не используя протоколы dhcp и tftp, достаточно только организовать вещание необходимых файлов и инициировать смену основного ПО.

Описание vendor-specific опций

Название Код Тип Описание Кем используется
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-сервер

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

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