Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Введение

В некоторых случаях в результате некорректных действий при обновлении ПО на сервисных маршрутизаторах ESR может возникнуть проблемы с загрузкой ПО (firmware), вторичного загрузчика (u-boot) или даже первичного загрузчика (x-loader). Именно для таких случаев будет необходимо подготовить и использовать загрузочную SD-карту по инструкции описанной в данной статье.

Ограничения

Данная инструкция актуальна для следующих моделей ESR:

  • ESR-100
  • ESR-200
  • ESR-1000
  • ESR-1200
  • ESR-1500
  • ESR-1511

Необходимые файлы

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

МодельHW-версия

Имя директории

<DIR>

Первичный загрузчик

<xload-file>

Вторичный загрузчик

<uboot-file>

Основное ПО

<firmware-file>

ESR-100всеesr200esr200-1.X.Y-buildZZZ.xloadesr200-1.X.Y-buildZZZ.ubootesr200-1.X.Y-buildZZZ.firmware
ESR-200всеesr200esr200-1.X.Y-buildZZZ.xloadesr200-1.X.Y-buildZZZ.ubootesr200-1.X.Y-buildZZZ.firmware
ESR-1000

1v0 - 1v6esr1000esr1000-1.X.Y-buildZZZ.xloadesr1000-1.X.Y-buildZZZ.ubootesr1000-1.X.Y-buildZZZ.firmware
1v7 - 2vXesr1000esr1000-1.X.Y-buildZZZ.1v7.xloadesr1000-1.X.Y-buildZZZ.ubootesr1000-1.X.Y-buildZZZ.firmware
ESR-1200всеesr1200esr1200-1.X.Y-buildZZZ.xloadesr1200-1.X.Y-buildZZZ.ubootesr1200-1.X.Y-buildZZZ.firmware
ESR-1500всеesr15xxesr15xx-1.X.Y-buildZZZ.xloadesr15xx-1.X.Y-buildZZZ.ubootesr15xx-1.X.Y-buildZZZ.firmware
ESR-1511всеesr15xxesr15xx-1.X.Y-buildZZZ.xloadesr15xx-1.X.Y-buildZZZ.ubootesr15xx-1.X.Y-buildZZZ.firmware

В таблице Выше приведены шаблоны имён файлов, которые далее по тексту будут упоминаться как <xload-file>, <uboot-file> и <firmware-file>.

Архив с актуальными файлами ПО и загрузчиков можно скачать на официальном сайте компании https://eltex-co.ru/ выбрав:

"Продукты" ---> "Сервисные маршрутизаторы" ---> <Выбрать необходимую модель> ---> Вкладка "Документы и файлы" ---> Столбец "Программное обеспечение"

Необходимое программное обеспечение на персональном компьютере (ПК)

Для подготовки загрузочной SD-карты по данной инструкции потребуется:

  • Операционная система Linux любой сборки
  • Терминальная программа (встроенный терминал, terminator или любая аналогичная)
  • Утилита для разметки диска в терминале: fdisk 
  • Утилита для форматирования разделов: mkfs.vfat из пакета dosfstools
  • Утилита для побитного копирования файлов: dd

Алгоритм создания образа

1. Подключить SD-карту к ПК

Для этого можно использовать либо штатный разём для SD-карт либо Card-reader подключаемый к USB-разъёму ПК.

2. Определить идентификатор подключенной SD-карты

Для выполнения данного шага необходимо в терминальной программе запустить утилиту fdisk с ключём "-l"

user@PC:~$ sudo fdisk -l
[sudo] пароль для user: password
......
Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                  62    7563    7502   3,7M            83 Linux
/dev/sdc2                7564 1006011  998448 487,5M             b W95 FAT32 

В примере выше, подключенная SD-карта определена как  /dev/sdc

3. Создать необходимые разделы на SD-карте

3.1. В терминальной программе запустить утилиту fdisk в  качестве ключа используя идентификатор подключенной SD-карты. Проверить текущие разметку и разделы на SD-карте.

user@PC:~$ sudo fdisk /dev/sdc
[sudo] пароль для user:

Добро пожаловать в fdisk (util-linux 2.31.1).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.

Команда (m для справки): p
Диск /dev/sdc: 14,4 GiB, 15485370368 байт, 30244864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos Идентификатор диска: 0x00000000
Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                  62    7563    7502   3,7M            83 Linux
/dev/sdc2                7564 1006011  998448 487,5M             b W95 FAT32

Команда (m для справки):

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.

3.2. Создать новую разметку диска типа DOS. Проверить текущую разметку на SD-карте.

Команда (m для справки): o
Создана новая метка DOS с идентификатором 0x2868c887.


Команда (m для справки): p
Диск /dev/sdc: 14,4 GiB, 15485370368 байт, 30244864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos Идентификатор диска: 0x2868c887

3.3. Создать первый раздел размеров в 1МБ без указания типа файловой системы. Проверить текущие разметку и разделы на SD-карте.

Команда (m для справки): n
Тип раздела
   p основной (0 первичный, 0 расширеный, 4 свободно)
   e расширенный (контейнер для логических разделов)
Выберите (по умолчанию - p): p
Номер раздела (1-4, по умолчанию 1): 1
Первый сектор (2048-30244863, по умолчанию 2048): 2048
Последний сектор + число секторов или + размер{K,M,G,T,P} (2048-30244863, по умолчанию 30244863): +1M

Создан новый раздел 1 с типом 'Linux' и размером 1 MiB.

Команда (m для справки): p
Диск /dev/sdc: 14,4 GiB, 15485370368 байт, 30244864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x2868c887
Устр-во    Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sdc1                2048  4095    2048 1M                83 Linux

Вводимые в данном разделе числовые значения ("Первый сектор" и "Последний сектор") должны чётко соответствовать значениям указанным в примере выше.

3.4. Создать второй раздел, размер 100 МБ, тип файловой системы - FAT32. Проверить текущие разметку и разделы на SD-карте.

Команда (m для справки): n
Тип раздела
   p   основной (1 первичный, 0 расширеный, 3 свободно)
   e   расширенный (контейнер для логических разделов)
Выберите (по умолчанию - p): p
Номер раздела (2-4, по умолчанию 2): 2
Первый сектор (4096-30244863, по умолчанию 4096): 4096
Последний сектор + число секторов или + размер{K,M,G,T,P} (4096-30244863, по умолчанию 30244863): +100M

Создан новый раздел 2 с типом 'Linux' и размером 100 MiB.

Команда (m для справки): t
Номер раздела (1,2, по умолчанию 2): 2
Шестнадцатеричный код (введите L для получения списка кодов): b

Тип раздела 'Linux' изменен на 'W95 FAT32'.

Команда (m для справки): p
Диск /dev/sdc: 14,4 GiB, 15485370368 байт, 30244864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x2868c887

Устр-во    Загрузочный начало  Конец Секторы Размер Идентификатор Тип
/dev/sdc1                2048   4095    2048     1M            83 Linux
/dev/sdc2                4096 208895  204800   100M             b W95 FAT32

Вводимые в данном разделе числовые значение "Первый сектор" должно чётко соответствовать значению указанному выше.
Размер раздела может отличаться от 100МБ. Но меньше его делать не рекомендуется т.к. может не хватить места для записи необходимых файлов, а больше - также бессмысленно т.к. кроме ПО для одной модели ESR туда копировать не нужно. 

3.5. Сохранить изменения разметки SD-карты.

Команда (m для справки): w
Таблица разделов была изменена.
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

user@PC:~$

4. Отформатировать второй раздел носителя в FAT32

user@PC:~$ sudo mkfs.vfat -F 32 /dev/sdc2
[sudo] пароль для user: password
mkfs.fat 4.1 (2017-01-24)
user@PC:~$

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.

5. Записать первичный загрузчик в первый раздел SD-карты

user@PC:~$ sudo dd if=<xload-file> of=/dev/sdc bs=512 seek=2 && sync
[sudo] пароль для user: password
244+1 записей получено

244+1 записей отправлено
124976 bytes (125 kB, 122 KiB) copied, 0,0753591 s, 1,7 MB/s
user@PC:~$ 

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.
Вместо переменной <xload-file> необходимо использовать путь и имя файла актуального первичного загрузчика для той модели ESR, для которой создается данная загрузочная SD-карта. Имена файлов соответствующие переменным указаны в таблице в разделе Необходимые файлы.

6. Создать во втором разделе директорию с названием модели ESR и скопировать в неё загрузчики и образ основного ПО

user@PC:~$ mkdir temp
user@PC:~$ sudo mount /dev/sdc2 temp
user@PC:~$ sudo mkdir temp/<DIR>
user@PC:~$ sudo cp <xload-file> temp/<DIR>/xload.bin
user@PC:~$ sudo cp <uboot-file> temp/<DIR>/u-boot.bin
user@PC:~$ sudo cp <firmware-file> temp/<DIR>/firmware
user@PC:~$ sudo ls -lh temp/<DIR>
итого 57M
-rwxr-xr-x 1 root root 56M мая 28 11:36 firmware
-rwxr-xr-x 1 root root 824K мая 28 11:36 u-boot.bin
-rwxr-xr-x 1 root root 123K мая 28 11:36 xload.bin

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.
Вместо переменной <DIR> необходимо использовать имя папки указанное в таблице Необходимые файлы в соответствии с моделью ESR, для которой создается данная загрузочная SD-карта.
Вместо переменной <xload-file> необходимо использовать путь и имя файла актуального первичного загрузчика для той модели ESR, для которой создается данная загрузочная SD-карта. 
Вместо переменной <uboot-file> необходимо использовать путь и имя файла актуального вторичного загрузчика для той модели ESR, для которой создается данная загрузочная SD-карта. 
Вместо переменной <firmware-file> необходимо использовать путь и имя файла актуального ПО для той модели ESR, для которой создается данная загрузочная SD-карта.
Имена файлов соответствующие переменным указаны в таблице в разделе Необходимые файлы.

7. Отмонтировать второй раздел и удалим временную директорию

user@PC:~$ sudo umount temp
user@PC:~$ sudo rm -r temp

Получившуюся SD-карту можно использовать для загрузки сервисного маршрутизатора ESR и обновления/восстановления загрузчиков и основного ПО. 

Инструкция по восстановлению загрузчиков описана в статье: Восстановление программного обеспечения на сервисных маршрутизаторах ESR-100/200/1000/1200/1500/1511 с загрузкой с SD-карты

Алгоритм копирования загрузочной SD-карты в файл

После создания загрузочной SD-карты есть возможность сохранить её образ в файл на ПК. Это может потребоваться для передачи образа другим сотрудникам или для быстрого разворачивания образа на SD-карту в случае повторения проблемы с загрузкой маршрутизатора.

1. Подключить SD-карту к ПК

Для этого можно использовать либо штатный разём для SD-карт либо Card-reader подключаемый к USB-разъёму ПК.

2. Определить идентификатор подключенной SD-карты

Для выполнения данного шага необходимо в терминальной программе запустить утилиту fdisk с ключём "-l"

user@PC:~$ sudo fdisk -l
[sudo] пароль для user: password
......
Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                  62    7563    7502   3,7M            83 Linux
/dev/sdc2                7564 1006011  998448 487,5M             b W95 FAT32 

В примере выше, подключенная SD-карта определена как  /dev/sdc

3. Произвести побитное копирование содержимого всей SD-карты в файл на ПК

user@PC:~$ sudo dd if=/dev/sdc of=<file-name>.iso bs=1M count=102 status=progress; sync
81788928 bytes (82 MB, 78 MiB) copied, 2 s, 40,5 MB/s
102+0 записей получено
102+0 записей отправлено
106954752 bytes (107 MB, 102 MiB) copied, 2,66469 s, 40,1 MB/s
user@PC:~$ 

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.

Вместо переменной <file-name> необходимо использовать путь и имя файла сохраняемого образа. В имени файла желательно отобразить всю ключевую информацию относящуюся к данному образу, такую как модель ESR'а и версия ПО. Например "recovery_esr200_1_20_4"

Необходимо учитывать, что в примере выше использованы параметры для сохранения образа SD-карты размер второго раздела которой не превышает 100МБ. 
Если второй раздел созданной SD-карты более 100МБ, необходимо в качестве аргумента ключа "count" указывать количество мегабайт во втором разделе и приплюсовать еще 2 блока по 1МБ (указано в качестве аргумента ключа "bs").

Алгоритм загрузки образа загрузочной SD-карты на носитель

1. Подключить SD-карту к ПК

Для этого можно использовать либо штатный разъём для SD-карт либо Card-reader подключаемый к USB-разъему ПК.

2. Определить идентификатор подключенной SD-карты

Для выполнения данного шага необходимо в терминальной программе запустить утилиту fdisk с ключём "-l"

user@PC:~$ sudo fdisk -l
[sudo] пароль для user: password
......
Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                  62    7563    7502   3,7M            83 Linux
/dev/sdc2                7564 1006011  998448 487,5M             b W95 FAT32 

В примере выше, подключенная SD-карта определена как  /dev/sdc

3. Распаковать образ на подключенную SD-карту

user@PC:~$ sudo dd if=<file-name>.img of=/dev/sdc status=progress; sync
103690752 bytes (104 MB, 99 MiB) copied, 18 s, 5,8 MB/s
208896+0 записей получено
208896+0 записей отправлено
106954752 bytes (107 MB, 102 MiB) copied, 22,4274 s, 4,8 MB/s
user@PC:~$

Вместо /dev/sdc необходимо использовать идентификатора подключенной SD-карты определенный в п.2 данной инструкции.

Вместо переменной <file-name> необходимо использовать путь и имя файла образа (сохраненного ранее Вами или другим человеком). 

  • Нет меток