# 19. Фильтр: обновление прошивки

[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](18.md)

---

Обновление программного обеспечения фильтра выполняется через CLI из конфигурационного режима. Система хранения прошивок построена на принципе **двух равнозначных разделов**, что позволяет безопасно обновляться и при необходимости откатываться на предыдущую версию.

## 19.1. Два раздела: prim1 и prim2 (равнозначные) + FB (заводская)

На SSD-накопителе фильтра расположены **три раздела** для программного обеспечения:

| Раздел    | Описание                                                         |
| --------- | ---------------------------------------------------------------- |
| **FB**    | Заводская прошивка — минимальный образ, предоставляющий только доступ к management-интерфейсу и возможность загрузить нормальную прошивку |
| **prim1** | Первый рабочий раздел для полноценной прошивки                   |
| **prim2** | Второй рабочий раздел для полноценной прошивки                   |

Разделы **prim1** и **prim2** — **абсолютно равнозначные**. Нет «основного» и «второстепенного» — оба раздела одинаковы. На каждом может быть загружен свой образ ПО, и между ними можно свободно переключаться (с перезагрузкой).

## 19.2. `firmware status` — текущее состояние (cur / boot)

Команда `firmware status` (из конфигурационного режима) выводит информацию о разделах прошивки:

| Поле      | Описание                                                    |
| --------- | ----------------------------------------------------------- |
| **cur**   | Активная версия — та, с которой устройство работает сейчас  |
| **boot**  | Версия, которая будет загружена при следующей перезагрузке   |

Пример вывода: активная версия — `4031` (cur), после перезагрузки загрузится `4038` (boot). Это означает, что новая прошивка была установлена, но устройство ещё не перезагружено.

В нормальном рабочем состоянии значения **cur** и **boot** указывают на один и тот же раздел. После установки новой прошивки **boot** автоматически переключается на раздел с новой версией.

## 19.3. `firmware download` — скачивание, `firmware install` — установка

Обновление прошивки выполняется в **два этапа**:

### Этап 1: Скачивание

```text
    firmware download <URL>
```

Команда скачивает образ прошивки с указанного URL на устройство.

### Этап 2: Установка

```text
    firmware install
```

Команда устанавливает скачанный образ на **неактивный раздел** (тот, который сейчас не используется). После установки значение **boot** автоматически переключается на раздел с новой прошивкой.

**Важные ограничения:**

- Установка выполняется быстро (~5 секунд), но в этот момент фильтр может **не реагировать** на команды в CLI;
- После установки, пока устройство не перезагружено, **повторная установка невозможна** — для установки новой прошивки значения cur и boot должны совпадать;
- Для применения новой прошивки необходима **перезагрузка** устройства (из конфигурационного режима, с подтверждением).

### Полная последовательность обновления

```text
    # 1. Проверить текущее состояние
    firmware status

    # 2. Скачать новую прошивку
    firmware download <URL>

    # 3. Установить на неактивный раздел
    firmware install

    # 4. Проверить, что boot указывает на новый раздел
    firmware status

    # 5. Перезагрузить устройство
    reload
```

## 19.4. `firmware rollback` / `firmware reset`

Для управления разделами загрузки доступны две команды:

| Команда               | Действие                                                    |
| --------------------- | ----------------------------------------------------------- |
| **firmware rollback**  | Переключает **boot** на неактивный раздел (откат на другую версию) |
| **firmware reset**     | Возвращает **boot** обратно на текущий активный раздел (отмена rollback) |

### firmware rollback

Команда `firmware rollback` меняет значение boot с активного раздела на неактивный. Это позволяет:

- **Откатиться** на предыдущую версию прошивки (если на другом разделе сохранена рабочая версия);
- **Отменить** запланированное обновление (если после `firmware install` вы решили не обновляться).

### firmware reset

Команда `firmware reset` выполняет обратное действие — возвращает boot на текущий активный раздел. Используется, если rollback был выполнен по ошибке.

> **Примечание:** обе команды изменяют только указатель boot — фактического переключения не происходит до перезагрузки.

## 19.5. Централизованное обновление через ЦСУ

В промышленной эксплуатации обновление прошивок выполняется **централизованно** через центральную систему управления (ЦСУ):

- Оператор инициирует обновление через интерфейс ЦСУ;
- ЦСУ автоматически скачивает и устанавливает прошивку на фильтры;
- По завершении формируется **отчёт** об успешности или неуспешности обновления;
- Перезагрузка фильтров также инициируется через ЦСУ.

Ручное обновление через CLI остаётся важным навыком для:

- Диагностики проблем с обновлением;
- Обновления единичных устройств;
- Работы на площадках, где ЦСУ временно недоступна.

При массовом обновлении множества фильтров через ЦСУ рекомендуется **последовательная** перезагрузка с проверкой работоспособности каждого устройства после обновления.

---

[← Оглавление](../README.md) · [← Раздел 18: Фильтр: мониторинг и диагностика](18.md) · [Раздел 20: Балансировщик: аппаратная платформа →](20.md)
