Skip navigation

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

На примере: OS - Ubuntu 16.04 server, DHCP - isc-dhcp-server, TFTP Server - Openbsd-inetd TFTP, STB MAG-322

https://help.ubuntu.com/community/isc-dhcp-server

TFTP server. Установка, настройка

Пример установки и настройки TFTP сервера для загрузки и обновления ПО по протоколу TFTP для MAG322

  • Установить (если необходимо) TFTP-сервер:
apt-get install openbsd-inetd tftp tftpd
  • По умолчанию TFTP-сервер настроен на использование директории /srv/tftp. Изменить при необходимости в файле /etc/inetd.conf
  Пример /etc/inetd.conf
#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp		dgram	udp	wait	nobody	/usr/sbin/tcpd	/usr/sbin/in.tftpd /srv/tftp
  • Создать каталог /srv/tftp/stb/322 и поместить в него необходимые файлы: Bootstrapimageupdatelogo.bmp.gzOP.KEY.

где:
Bootstrap - Ядро;
imageupdate - Образ ПО;
logo.bmp.gz - Логотип начального загрузчика;
OP.KEY - Ключ оператора.

  • Изменить права:
chown -R nobody /srv/tftp/stb/322
  • Перезапустить службу inetd:
/etc/init.d/openbsd-inetd restart

Проверка TFTP сервера

Если клиент запускается на локальном сервере, укажите IP адрес 127.0.0.1. Если клиент запускается на удаленном сервере, укажите IP адрес сервера.

echo test > /srv/tftp/stb/322/myfile
cd /home
tftp 127.0.0.1
tftp> get stb/322/myfile

DHCP-server 'isc-dhcp-server'. Установка, настройка

sudo apt-get install isc-dhcp-server
  • Файл глобальной стартовой настройки /etc/default/isc-dhcp-server

В этом файле необходимо указать интерфейс, на котором будет работать DHCP-сервер. В данном примере имя сетевого интерфейса enp1s6

  Пример /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#	Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#	Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="enp1s6"
  • Файл конфигурации DHCP-сервера: /etc/dhcp/dhcpd.conf
  Пример dhcpd.conf
default-lease-time 600;
	max-lease-time 7200;
	ping-check false;


subnet 10.1.1.0 netmask 255.255.255.0 {
	range 10.1.1.10 10.1.1.254;
	option routers 10.1.1.1;
	option domain-name-servers 10.1.1.1;
	option ntp-servers 10.1.1.1;
	next-server 10.1.1.1;
	}	


##################   Option Space Infomir ###################
	option space Infomir;
	option Infomir.autostart        code 1 = text;
	option Infomir.bootargs         code 2 = text;
	option Infomir.mcip             code 3 = ip-address;
	option Infomir.mcport           code 4 = integer 16;
	option Infomir.oppubfile        code 9 = text;
	option Infomir.mcip_img         code 10 = ip-address;
	option Infomir.mcport_img       code 11 = integer 16;
	option Infomir.mcip_mng         code 12 = ip-address;
	option Infomir.mcport_mng       code 13 = integer 16;
	option Infomir.ip_log           code 14 = ip-address;
	option Infomir.port_log         code 15 = integer 16;
	option Infomir.logo_x           code 16 = integer 16;
	option Infomir.logo_y           code 17 = integer 16;
	option Infomir.bg_color         code 18 = integer 32;
	option Infomir.fg_color         code 19 = integer 32;
	option Infomir.VerNumber        code 20 = text;
	option Infomir.DateTime         code 21 = text;
	option Infomir.portal_dhcp      code 22 = text;
	option Infomir.timezone         code 23 = text;
	option Infomir.update_url       code 24 = text;
	option Infomir.update_sboot     code 25 = text;
	option Infomir.update_ver       code 26 = text;
	option Infomir.update_mode      code 27 = text;
	option Infomir.update_sboot_ver	code 28 = text;
	option Infomir.nc_ip        	code 30 = ip-address;
	option Infomir.nc_port      	code 31 = integer 16;
	option Infomir.syslog_srv   	code 32 = text;

#############   MAG 322   #################################
class "MAG322_boot" {
	match if (( option vendor-class-identifier="InfomirMAG322boot"));
    filename "stb/322/2.20.07-a6/Bootstrap";
    next-server 10.1.1.1;
    option ntp-servers 10.1.1.1;
    vendor-option-space Infomir;
    }
class "MAG322_vendor" {
    match if (( option vendor-class-identifier="InfomirMAG322"));
	next-server 10.1.1.1;
    option ntp-servers 10.1.1.1;
    vendor-option-space Infomir;
	option Infomir.portal_dhcp "http://10.1.1.1/stalker_portal/c/index.html";
    option Infomir.update_ver "220";
	option Infomir.update_url "tftp://10.1.1.1/stb/322/2.20.07-a6/imageupdate";
	}
class "MAG322_upgrade" {
    match if (( option vendor-class-identifier="InfomirMAG322upgrade"));
	next-server 10.1.1.1;
    option ntp-servers 10.1.1.1;
    vendor-option-space Infomir;
    option Infomir.update_url "tftp://10.1.1.1/stb/322/2.20.07-a6/imageupdate";
    }
class "MAG322_upglogo" {
    match if (( option vendor-class-identifier="InfomirMAG322upglogo"));
    next-server 10.1.1.1;
    option ntp-servers 10.1.1.1;
    vendor-option-space Infomir;
    filename "stb/322/logo.bmp.gz";
    option Infomir.oppubfile "stb/322/OP.KEY";
    }

Option Space

Для обмена "vendor-specific" информацией между сервером и клиентом (STB) используется DHCP-опция №43. Для описания информации производителя STB используется «option space Infomir». Перечень возможных опций:

option space Infomir;
option Infomir.autostart         code 1 = text;
option Infomir.bootargs          code 2 = text;
option Infomir.mcip              code 3 = ip-address;
option Infomir.mcport            code 4 = integer 16;
option Infomir.oppubfile         code 9 = text;
option Infomir.mcip_img          code 10 = ip-address;
option Infomir.mcport_img        code 11 = integer 16;
option Infomir.mcip_mng          code 12 = ip-address;
option Infomir.mcport_mng        code 13 = integer 16;
option Infomir.ip_log            code 14 = ip-address;
option Infomir.port_log          code 15 = integer 16;
option Infomir.logo_x            code 16 = integer 16;
option Infomir.logo_y            code 17 = integer 16;
option Infomir.bg_color          code 18 = integer 32;
option Infomir.fg_color          code 19 = integer 32;
option Infomir.VerNumber         code 20 = text;
option Infomir.DateTime          code 21 = text;
option Infomir.portal_dhcp       code 22 = text;
option Infomir.timezone          code 23 = text;
option Infomir.update_url        code 24 = text;
option Infomir.update_sboot      code 25 = text;
option Infomir.update_ver        code 26 = text;
option Infomir.update_mode       code 27 = text;
option Infomir.update_sboot_ver  code 28 = text;

Описание 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-сервер
timezone 23 text Значение часового пояса (timezone), которое передается приставке для установки переменной timezone_conf. Основное ПО
update_url 24 text Адрес (URL) размещения образа для обновления основного ПО STB imageupdate. Пример: "tftp://10.1.1.1/322/imageupdate" Bootstrap
update_sboot 25 text Адрес (URL) размещения образа Начального загрузчика (Bootloader), используемого для обновления. Bootloader
update_ver 26 text Номер версии ПО в образе для обновления. Если номер текущего образа (используемого в STB) и передаваемого для обновления совпадает, то обновление не производится. Dhcp-сервер
update_mode 27 text Адрес (URL) размещения образа Bootstrap. Пример: "tftp://10.1.1.1/254/Bootstrap". Bootloader
update_sboot_ver 28 text Версия Начального загрузчика (Bootloader), используемого для обновления. Bootloader

Загрузка ядра (Bootstrap/uImage) по протоколу TFTP для режима Emergency

Пример заполнения секции "MAG322_boot":

class "MAG322_boot" {
   match if (( option vendor-class-identifier="InfomirMAG322boot"));
   filename "stb/322/Bootstrap";
   next-server 10.1.1.1;
   option ntp-servers 10.1.1.1;
   vendor-option-space Infomir;
   }

Примечание. Режим аварийного восстановления (Emergency) MAG3xx

Обновление ПО (imageupdate) из меню System Recovery Utility

Пример заполнения секции "MAG322_upgrade":

class "MAG322_upgrade" {
  match if (( option vendor-class-identifier="InfomirMAG322upgrade"));
  next-server 10.1.1.1;
  option ntp-servers 10.1.1.1;
  vendor-option-space Infomir;
  option Infomir.update_url "tftp://10.1.1.1/stb/322/imageupdate";
  }

Примечание. Выбор режима обновления ПО в меню  System Recovery Utility MAG3xx 

После успешного обновления устанавливаются переменные начального загрузчика Image_Version, Image_Date и Image_Desc, в соответствии с параметрами обновленной версии, устанавливается режим загрузки NAND и выполняется перезапуск приставки.

Автоматическое обновление ПО при старте в DHCP через TFTP

Пример заполнения секции "MAG322_vendor":

class "MAG322_vendor" {
 match if (( option vendor-class-identifier="InfomirMAG322"));
 next-server 10.1.1.1;
 option ntp-servers 10.1.1.1;
 vendor-option-space Infomir;
 option Infomir.portal_dhcp "http://10.1.1.1/stalker_portal/c/index.html";
 option Infomir.update_ver "220";
 option Infomir.update_url "tftp://10.1.1.1/stb/322/imageupdate";
 }

После успешного обновления устанавливаются переменные начального загрузчика Image_Version, Image_Date и Image_Desc, в соответствии с параметрами обновленной версии, устанавливается режим загрузки NAND и выполняется перезапуск приставки. Также в этом классе ("MAG322_vendor") можно передать адрес портала, на который выполняется переход, если не установлены переменные portal1 и portal2 и переменная use_portal_dhcp не установлена или имеет значение true. Если переменная use_portal_dhcp установлена в false, то значение опции Infomir.portal_dhcp не используется.

Значение переменных Начального загрузчика “Image_Version”“Image_Date” и “Image_Desc” можно посмотреть в меню System Recovery Utility / Device Information, а также с помощью утилиты fw_printenv.

Обмен сообщениями по DHCP-протоколу

Рассмотрим пример обмена собщениями по DHCP-протоколу между приставкой и сервером в случае использования секции class "MAG322_upgrade" в dhcpd.conf.

В примере используются следующие параметры:

MAC-адрес сетевого интерфейса (Ethernet) приставки - 0:1a:79:51:8:98
MAC-адрес сетевого интерфейса (Ethernet) сервера 0:30:48:fd:9e:5f
IP-адрес, который назначается сервером приставке - 10.1.1.26.
IP-адрес сервера - 10.1.1.1.
Параметры dhcpd.conf соответствуют примеру (см. содержание секции class "MAG322_upgrade").

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

  • IP: 0.0.0.0 (0:1a:79:51:8:98) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  • OP: 1 (BOOTPREQUEST)
  • CHADDR: 00:1a:79:51:08:98:00:00:00:00:00:00:00:00:00:00
  • Option 53 DHCP message type: 1 (DHCPDISCOVER)

  • Option 61 Client identifier 0:1a:79:51:8:98
  • Option 55 Parameter Request List: 1 (Subnet mask), 3 (Routers), 6 (DNS server), 12 (Host name), 15 (Domain name), 28 (Broadcast address), 42 (NTP servers), 43 (Vendor specific info)

  • Option 60 Vendor class identifier: InfomirMAG322upgrade

Сервер, получив и проанализировав запрос от приставки, посылает dhcp-ответ со следующими параметрами (указана часть параметров):

  • IP: 10.1.1.1 (0:30:48:fd:9e:5f) > 10.1.1.26 (0:1a:79:51:8:98)
  • OP: 2 (BOOTPREPLY)
  • YIADDR: 10.1.1.26
  • SIADDR: 10.1.1.1
  • CHADDR: 00:1a:79:51:08:98:00:00:00:00:00:00:00:00:00:00
  • OPTION 53 (1) DHCP message type: 2 (DHCPOFFER)

  • OPTION: 54 ( 4) Server identifier 10.1.1.1
  • OPTION: 51 ( 4) IP address leasetime 600 (10m)
  • OPTION: 1 ( 4) Subnet mask 255.255.255.0
  • OPTION: 3 ( 4) Routers 10.233.0.104
  • OPTION: 6 ( 8) DNS server 8.8.8.8,8.8.4.4
  • OPTION: 28 ( 4) Broadcast address 10.1.1.255
  • OPTION: 42 ( 4) NTP servers 10.1.1.1
  • Option 43 Vendor specific info: tftp://10.1.1.1/stb/322/2.20.07-a6/imageupdate

Получив параметры от DHCP-сервера, приставка подключается к tftp-серверу и получает образ imageupdate по пути, указанному в этих параметрах. На экране отображаются сообщения об этапе процесса получения и обновления:

Starting update from DHCP
Receive is starting tftp://10.1.1.1/stb/322/2.20.07-a6/imageupdate
Wrighting image to flash///
Checking signature,
и т.д.

Установка логотипа и ключа оператора

class "MAG322_upglogo" {
  match if (( option vendor-class-identifier="InfomirMAG322upglogo"));
  next-server 10.1.1.1;
  option ntp-servers 10.1.1.1;
  vendor-option-space Infomir;
  filename "stb/322/logo.bmp.gz";
  option Infomir.oppubfile "stb/322/OP.KEY";
  }
Примечание. Параметры логотипа описаны в разделе ' Логотип Bootloader-a'
Need Help

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

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

Да Нет

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

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