16 August 2019

Проблема с обновлением MikroTik RouterOS на роутерах с 16MB FLASH

Network hardware


Недавно ребята из MikroTik накосячили (опять?) и мой любимый «hAP lite» перестал обновляться. С версии 6.45.1 на 6.45.2 не обновлялся, писал, что недостаточно места. Косяк заметили и в версии 6.45.3 для архитектуры SMIPS уменьшили размер пакета, выкинув из него «лишнее» (smips — reduced RouterOS main package size (disabled LTE modem, dot1x and SwOS support)). Теперь пакет скачивается, места ему хватает, но… После перезагрузки версия остаётся 6.45.1 а в логе видим сообщение «no enough space for upgrade». Факир был пьян и фокус не удался.

Окей, гугл, mikrotik no enough space for upgrade
На forum.mikrotik.com узнаём, что проблема давняя, первое упоминание аж в 2017 году по версии 6.40.4. Похоже в компании есть проблемы с тестированием, печально.
Находим рекомендацию использовать fix_space.npk, скачиваем, закидываем на роутер, перезагружаем его и… Мне не помогло.

Дальше, наконец-то, находим полезную статью. Вкратце:

  • обновления ставятся пакетами
  • по умолчанию пакеты наследуются от мета-пакета (в моём случае «routeros-smips»)
  • удалить (деинсталлировать) наследованные пакеты нельзя, ведь информация о них содержится в мета-пакете
  • при обновлении обновляется мета-пакет и его наследники, даже отключенные
  • постоянная память роутера разделена на разделы — скрытый системный и доступный для пользователя
  • для обновления нужный пакет/мета-пакет необходимо закинуть в пользовательский раздел и перезагрузиться
  • если делать обновление из winbox, web-интерфейса или terminal, нужный мета-пакет автоматически скачивается в пользовательский раздел и роутер перезагружается
  • при перезагрузке, если в пользовательском разделе есть пакеты, то из системного раздела удаляются все установленные пакеты и устанавливаются те, что находятся на пользовательском разделе, после чего они удаляются из пользовательского раздела

Из вышесказанного следует, что, если на пользовательский раздел закинуть только нужные пакеты и перезагрузиться, то мета-пакет со всеми наследниками удалится, поставятся только нужные пакеты и, за счёт удаления ненужных, высвободится немного места, так необходимого для последующих обновлений. Давайте проверим.



Роутер бюджетный, поэтому в основном используется дома либо в мелких офисах, значит вряд ли нам нужны пакты advanced-tools, hotspot, ipv6, mpls, routing. Подробнее о пакетах читайте на официальной wiki, выбирайте, какие вам нужны, а какие нет. Например на данном роутере ipv6 отключен, а вот дома я его использую. Будьте внимательны, если забыть поставить нужный пакет, то обновление удаленного роутера — к дальней поездке.



Как видим пользовательская раздел пуст, всего занято 8.5MB



При попытке обновления ругается на отсутствие места. На самом деле скриншот «нарисован», ругалось на версии 6.45.2, с версией 6.45.3 места хватает для загрузки, поэтому пришлось схитрить, но в данном случае мы просто эмулируем похожую ситуацию.



Качаем с офсайта Extra packages для нужной архитектуры, для SMIPS, так как проблема вроде только на ней. Распаковываем и закидываем нужные пакеты на пользовательский раздел. Перезагружаемся.





Вуаля! Обновление прошло успешно, мета-пакет со всеми наследниками удалён, установлены только нужные пакеты.



Пользовательский раздел пуст, всего занято 8MB, т.е. 0.5MB мы высвободили.

Будут ли теперь работать автоматические обновления? Будут. Для проверки, на другом роутере я обновил вручную до версии 6.45.2 а после автоматически обновил до 6.45.3

Ребятам из MikroTik хочется пожелать быть более внимательными, но кто не без греха.
с ошибками и замечаниями прошу в личку
Tags: mikrotik
Hubs: Network hardware
+26
30.9k 99
Comments 33
Ads