Оновлення прошивки OpenWrt через веб-інтерфейс LuCI

Зверніть увагу, що ця стаття описує базову процедуру оновлення, проте для більшості користувачів краще підійде сучасніший підхід. LuCI Attended Sysupgrade (або його CLI-альтернатива — auc) поєднує описану нижче процедуру з автоматичним створенням індивідуального образу, який включає всі встановлені вами пакети. Це значно спрощує оновлення.

Докладніше дивіться тут: Оновлення через Attended Sysupgrade.

Ваш пристрій повинен вже мати встановлену OpenWrt-прошивку, щоби була можлива процедура sysupgrade.

:!: Тільки для досвідчених користувачів!

Скористайтесь інструкцією зі створення резервної копії, або пропустіть, якщо не плануєте зберігати поточні налаштування.

Завантажуйте та використовуйте лише образи прошивки OpenWrt, що закінчуються на “-sysupgrade.bin”, для оновлення через CLI.
Для x86-систем немає окремого образу sysupgrade — просто переконайтесь, що нова прошивка використовує ту ж файлову систему, що й попередня.

:!: Увага: файл оновлення повинен бути у каталозі `/tmp`, оскільки під час оновлення флеш-пам'ять відмонтовується. Якщо файл не у /tmp, оновлення НЕ буде виконано.

  1. Перевірте наявність вільної пам’яті: виконайте `free`. Продовжуйте, лише якщо доступно вдвічі більше пам’яті, ніж розмір прошивки.
  2. Задайте змінні з посиланнями на файл прошивки і контрольну суму SHA256 (потрібно замінити URL на актуальні):
    DOWNLOAD_LINK="http://URL_ДО_FIRMWARE.BIN"
    SHA256SUMS="http://URL_ДО_SHA256"
  1. Завантажте файл та перевірте контрольну суму:
    cd /tmp
    wget $DOWNLOAD_LINK
    wget $SHA256SUMS
    sha256sum -c sha256sums 2>/dev/null | grep OK
  1. У виводі шукайте рядок типу: `<ІМ’Я_ФАЙЛУ>: OK`
  2. Не продовжуйте, якщо контрольна сума не співпадає!

Усунення несправностей:

  • Якщо не можете використовувати `wget` (наприклад, передаєте файл з ПК):
    • використовуйте scp:
scp openwrt-....-sysupgrade.bin root@192.168.1.1:/tmp
  • використовуйте ssh:
ssh root@192.168.1.1 "cat > /tmp/firmware.bin" < firmware.bin
  • або netcat:
    1. На ПК: `cat firmware.bin | pv -b | nc -l -p 3333`
    2. На роутері: `nc 192.168.1.111 3333 > /tmp/firmware.bin`
  • Якщо контрольна сума не співпадає — перевірте завантаження або зверніться на "Installing and Using OpenWrt" Forum
  • Якщо мало RAM, дивіться: Low Memory Workarounds

OpenWrt має утиліту sysupgrade для оновлення прошивки.

  • Переконайтесь, що є достатньо RAM
  • Завантажте прошивку з локального ПК
  • Виконайте оновлення
# Перевірити обсяг вільної RAM
free
 
# Завантажити прошивку
scp firmware_image.bin root@openwrt.lan:/tmp
 
# Оновити прошивку
sysupgrade -v /tmp/firmware_image.bin

Усунення несправностей:

  • Якщо з’являється помилка:
    ash: /usr/libexec/sftp-server: not found
  — це через OpenSSH >= 9. Щоб обійти, використовуйте флаг `-O`:<code>
  scp -O firmware_image.bin root@openwrt.lan:/tmp</code>
Якщо sysupgrade недоступний
# Оновити прошивку вручну
mtd -r write /tmp/firmware_image.bin firmware
  • При використанні sysupgrade вивід може виглядати так:
Saving config files...
etc/config/network
etc/config/system
...
killall: watchdog: no process killed
Sending TERM to remaining processes ...
Sending KILL to remaining processes ...
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...
Writing from <stdin> to firmware ...  [w]
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...
TRX header not found
Error fixing up TRX header
Upgrade completed
Rebooting system...

Примітка: Повідомлення TRX header not found і Error fixing up TRX headerне є проблемою, дивіться пост розробника OpenWrt [jow](https://dev.openwrt.org/ticket/8623)

  • Дочекайтеся перезавантаження
  • Після автоматичного запуску конфігурація повинна зберегтись (IP-адреса, пароль SSH тощо)
  • Перейдіть до розділу “Додаткова конфігурація після оновлення OpenWrt”

Усунення несправностей:

  1. Файл прошивки вже знаходиться у каталозі `/tmp`, тому можна починати прошивку.
  2. Якщо ви виконуєте оновлення віддалено, бажано, щоб хтось був поруч з пристроєм (деякі пристрої можуть потребувати жорсткого перезавантаження після оновлення).
  3. Виконайте команду для прошивки:
    sysupgrade -v /tmp/firmware_image.bin
  1. Щоб не зберігати стару конфігурацію та почати з чистої системи, додайте параметр `-n` (мережеві й системні налаштування буде втрачено).
  2. Під час оновлення ви побачите приблизно таке виведення:
Saving config files...
etc/config/dhcp
...
etc/config/wireless
etc/dropbear/authorized_keys
...
etc/sysupgrade.conf
killall: watchdog: no process killed
Sending TERM to remaining processes ... ubusd askfirst logd logread netifd odhcpd snmpd uhttpd ntpd dnsmasq
Sending KILL to remaining processes ... askfirst
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...
Writing from <stdin> to firmware ...  [w]
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...
TRX header not found
Error fixing up TRX header
Upgrade completed
Rebooting system...
  1. Повідомлення “TRX header not found” та “Error fixing up TRX header” можна ігнорувати — вони не критичні, дивіться: https://dev.openwrt.org/ticket/8623
  1. Дочекайтесь, поки роутер знову увімкнеться. Система повинна завантажитися з тими самими конфігураціями (IP-адреса, пароль SSH тощо).

Усунення несправностей:

  • Пристрій не перезавантажується або завис: зачекайте 5 хвилин, потім зробіть жорстке перезавантаження — вимкніть живлення, зачекайте 2–3 секунди, увімкніть знову.

:!: Увага: не робіть цього, поки пристрій ще оновлюється — це може призвести до пошкодження системи (softbrick), і для відновлення може знадобитися підключення через UART/JTAG.

  • Проблеми з OPKG: якщо після оновлення виникають помилки під час встановлення пакетів, перевірте актуальність `opkg.conf`, дивіться: https://dev.openwrt.org/ticket/13309
  • Якщо відсутній `sysupgrade`, замість нього використовуйте:
    mtd -r write /tmp/openwrt-....-sysupgrade.bin firmware
  • Перевірка версії ОС: Після входу по SSH банер містить інформацію про версію прошивки — це найпростіший спосіб переконатися, що оновлення пройшло успішно.
  • Якщо використовувався extroot, дотримуйтесь цієї інструкції для його відновлення.
  • Перевірте наявність оновлень для пакетів — після оновлення базової прошивки можуть з’явитися нові версії встановлених пакетів.
  • Повторно встановіть власноруч встановлені пакети. Конфігураційні файли збережені, але самі пакети треба перевстановити. Якщо використовували скрипти для автоматичного збереження/відновлення, цей крок може бути не потрібен.

Порівняння нових конфігурацій пакунків

Дивіться також: Доповнення для opkg, Доповнення для UCI

  • Після встановлення пакетів можуть з’явитися нові файли конфігурації зі стандартними значеннями.
  • Якщо такі конфігурації конфліктують із вашими, вони будуть збережені як файли з суфіксом -opkg.
  • Щоб зберегти нові можливості, порівняйте та об’єднайте ці конфігурації вручну за допомогою `diff`.
# Оновити пакети
opkg update
opkg install diffutils
 
# Знайти нові файли конфігурації
find /etc -name "*-opkg"
 
# Порівняти, наприклад:
diff /etc/config/snmpd /etc/config/snmpd-opkg
 
# Вручну об’єднати зміни
vi /etc/config/snmpd
rm /etc/config/snmpd-opkg
 
# Або повністю замінити
mv /etc/config/snmpd-opkg /etc/config/snmpd
 
# Перезапустити сервіс
/etc/init.d/snmpd restart
reboot

Обхід обмеження пам’яті: /tmp занадто малий для збереження файлу прошивки

Якщо файлової системи `/tmp` недостатньо для збереження образу прошивки OpenWrt, цей розділ пропонує способи тимчасово звільнити оперативну пам’ять.

Спершу перевірте використання пам’яті командами `free`, `top` або `cat /proc/meminfo`. Продовжуйте лише, якщо у вас є стільки вільної пам’яті, скільки займає файл прошивки, плюс декілька додаткових МіБ.

# free
             total         used         free       shared      buffers
Mem:         29540        18124        **11416**         0         1248
-/+ buffers:              16876        12664
Swap:            0            0            0

У цьому прикладі є рівно 11416 КіБ вільної пам’яті. Все інше (29540 - 11416 = 18124 КіБ) зайняте. Частина цієї пам’яті може бути звільнена ядром за потреби, але ми не знаємо скільки точно. Переконайтесь, що вільної пам’яті достатньо.

Також вільний простір у `/tmp` враховується у загальній доступній пам’яті.

# free
Mem:         13388        12636          752            0         1292
Swap:            0            0            0
Total:       13388        12636          752
 
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 2304      2304         0 100% /rom
tmpfs                     6696        60      6636   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3             576       288       288  50% /overlay
mini_fo:/overlay          2304      2304         0 100% /

У цьому прикладі маємо фактично 752 + 6636 = 7388 КіБ доступної пам’яті.

  • Найшвидший і найпростіший спосіб звільнити RAM — видалити списки пакетів:
    rm -r /tmp/opkg-lists/
  • Скинути кеш:
    sync && echo 3 > /proc/sys/vm/drop_caches
  • Вимкнути завантаження драйверів Wi-Fi та перезавантажити:
    rm /etc/modules.d/*80211*
    rm /etc/modules.d/*ath9k*
    rm /etc/modules.d/b43*
    reboot

Wi-Fi драйвери зазвичай займають чимало RAM і не потрібні, якщо ви підключені по Ethernet. Видалення відповідних символьних посилань у `etc/modules.d` і подальше перезавантаження допоможе вивільнити пам’ять.

Все ще недостатньо місця в /tmp?

Використовуйте netcat тільки, якщо не вдалося звільнити достатньо RAM іншими способами. Будь-які проблеми з мережею під час процесу можуть призвести до псування прошивки пристрою (brick).

Прошивка через ssh
# З ПК під Linux
cat firmware_image.bin | ssh root@openwrt.lan mtd write - firmware
Прошивка через netcat
# ПК під Linux
nc -q 0 192.168.1.1 1234 < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
 
# На OpenWrt
nc -l -p 1234 | mtd write - firmware
  1. Перейдіть на сторінку Завантаження прошивок у таблиці пристроїв та знайдіть свою модель пристрою.
  2. Завантажте файл sysupgrade.

Зверніть увагу: не всі пристрої мають файл із назвою sysupgrade.bin!

Налагодження:

  • Деякі пристрої не мають sysupgrade-образу і потребують індивідуальної процедури встановлення. Для таких пристроїв ця інструкція не підходить — дотримуйтеся інструкцій на відповідній сторінці пристрою в Wiki OpenWrt.
  • Якщо пристрій не знайдено в таблиці пристроїв — спробуйте альтернативні способи пошуку прошивки.
  • Якщо ви самостійно переглядаєте каталог завантажень OpenWrt, переконайтесь, що вибраний файл точно відповідає вашій моделі.
  1. Підключіться до пристрою через Ethernet (не використовуйте Wi-Fi, якщо є Ethernet).
  2. Увійдіть до LuCI → System → Backup / Flash Firmware → перейдіть до розділу Flash new firmware image.
  3. Зніміть прапорець “Keep settings” — особливо при оновленні на нову основну версію. Це дозволить застосувати нові налаштування за замовчуванням. (Докладніше про використання "Keep settings")
  4. Переконайтеся, що файл прошивки відповідає вашій моделі пристрою і має назву “...sysupgrade.bin” (тип файлу може відрізнятися: .bin, .tar.gz тощо, але ключове — слово “sysupgrade”).
  5. У розділі “Flash new firmware image” натисніть Choose file → оберіть файл → натисніть Flash image...
  6. Відкриється сторінка Flash Firmware – Verify, де буде показано контрольну суму SHA256.
  7. Перевірте, що контрольна сума збігається з тією, що на сторінці завантаження OpenWrt.

Якщо не збігається — не продовжуйте, файл може бути пошкоджено!

  • Примітка:* у старих версіях, як OpenWrt 15.05, може показуватись MD5-хеш.
  1. Якщо сума збігається — натисніть Proceed.
  2. Розпочнеться оновлення — файл буде записаний у флеш-пам’ять і пристрій перезавантажиться. Це може тривати кілька хвилин.
  3. Після перезавантаження буде встановлено нову прошивку. Перейдіть до наступного розділу.

Налагодження:

  • Якщо перевірка контрольної суми не вдалася — не продовжуйте! Повторно завантажте файл з офіційного джерела.
  • Якщо помилка перевірки контрольної суми виникає повторно — зверніться на форум і вкажіть точну модель пристрою.
  • Після завершення прошивки і перезавантаження перевірте доступ до веб-інтерфейсу LuCI.
  • Дивіться також розділ Post-upgrade steps у оновленні через CLI.

Налагодження:

  • Якщо ви встановили development/snapshot-версію, веб-інтерфейс може бути вимкнено. Його слід увімкнути вручну: інструкція або перевірити доступність через SSH.
  • Пристрій міг отримати іншу IP-адресу. Спробуйте:
    1. просканувати мережу
    2. перевірити DHCP таблицю основного роутера
    3. або використати режим безпечного завантаження (failsafe) для скидання налаштувань
  • Якщо при оновленні було обрано “Keep settings”, і пристрій не завантажується — скористайтеся режимом failsafe для повного скидання.
  • Якщо ви скинули налаштування, пам’ятайте про обов’язкове встановлення коду країни у Wi-Fi налаштуваннях, щоб відповідати локальним нормам: Базове налаштування Wi-Fi
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/25 10:53
  • by vazaz