Див. також:
Процедура sysupgrade у OpenWrt повністю замінює поточну інсталяцію системи на нову версію. Це включає ядро Linux і розділи ОС (SquashFS/ext4/ubifs/JFFS2 та інші). Це не те саме, що перша (factory) інсталяція.
Sysupgrade через LuCI або CLI працює шляхом збереження вибраних конфігураційних файлів, очищення файлової системи, інсталяції нової версії OpenWrt та відновлення збережених конфігурацій.
УВАГА: усі частини файлової системи, які не були явно збережені, будуть втрачені.
Встановлені вручну пакети потрібно буде перевстановити після оновлення, щоби відповідали оновленому ядру та модулям.
Будь-які файли або дані, які не зберігаються в спеціальних місцях, також буде втрачено. Обов’язково зробіть резервні копії всіх змін, які ви робили.
ВАЖЛИВО: Більшість процедури можна автоматизувати через сервіс attended.sysupgrade. Він створює імідж прошивки з вашими пакетами, завантажує його та оновлює систему зі збереженням налаштувань. Доступно через `luci-app-attendedsysupgrade` або з CLI (`auc`).
Про процедуру extroot див. цей гайд.
Для Пристроїв з подвійною прошивкою перегляньте сторінку пристрою.
При створенні власного іміджу через OpenWrt buildroot або imagebuilder багато кроків можна пропустити.
Sysupgrade з опцією “залишити налаштування” автоматично збереже налаштування (наприклад, у `/etc/config`). Деякі додаткові сервіси можуть потребувати ручної конфігурації.
Див. також: Сумісність оновлення
Тільки для досвідчених користувачів!
Скористайтесь інструкцією зі створення резервної копії, або пропустіть, якщо не плануєте зберігати поточні налаштування.
Завантажуйте та використовуйте лише образи прошивки OpenWrt, що закінчуються на “-sysupgrade.bin”, для оновлення через CLI.
Для x86-систем немає окремого образу sysupgrade — просто переконайтесь, що нова прошивка використовує ту ж файлову систему, що й попередня.
Увага: файл оновлення повинен бути у каталозі `/tmp`, оскільки під час оновлення флеш-пам'ять відмонтовується. Якщо файл не у /tmp, оновлення НЕ буде виконано.
DOWNLOAD_LINK="http://URL_ДО_FIRMWARE.BIN"
SHA256SUMS="http://URL_ДО_SHA256"
cd /tmp
wget $DOWNLOAD_LINK
wget $SHA256SUMS
sha256sum -c sha256sums 2>/dev/null | grep OK
Усунення несправностей:
scp openwrt-....-sysupgrade.bin root@192.168.1.1:/tmp
ssh root@192.168.1.1 "cat > /tmp/firmware.bin" < firmware.bin
OpenWrt має утиліту sysupgrade для оновлення прошивки.
# Перевірити обсяг вільної 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>
# Оновити прошивку вручну mtd -r write /tmp/firmware_image.bin firmware
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)
Усунення несправностей:
sysupgrade -v /tmp/firmware_image.bin
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...
Усунення несправностей:
Увага: не робіть цього, поки пристрій ще оновлюється — це може призвести до пошкодження системи (softbrick), і для відновлення може знадобитися підключення через UART/JTAG.
mtd -r write /tmp/openwrt-....-sysupgrade.bin firmware
Дивіться також: Доповнення для opkg, Доповнення для UCI
# Оновити пакети 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` недостатньо для збереження образу прошивки 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 КіБ доступної пам’яті.
rm -r /tmp/opkg-lists/
sync && echo 3 > /proc/sys/vm/drop_caches
rm /etc/modules.d/*80211* rm /etc/modules.d/*ath9k* rm /etc/modules.d/b43* reboot
Wi-Fi драйвери зазвичай займають чимало RAM і не потрібні, якщо ви підключені по Ethernet. Видалення відповідних символьних посилань у `etc/modules.d` і подальше перезавантаження допоможе вивільнити пам’ять.
Використовуйте netcat тільки, якщо не вдалося звільнити достатньо RAM іншими способами. Будь-які проблеми з мережею під час процесу можуть призвести до псування прошивки пристрою (brick).
# З ПК під Linux cat firmware_image.bin | ssh root@openwrt.lan mtd write - firmware
# ПК під 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
Див. також: Оновлення OpenWrt через LuCI
cd /tmp wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/md5sums md5sum -c md5sums 2> /dev/null | grep
OK
wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/sha256sums sha256sum -c sha256sums 2> /dev/null | grep
OK
sysupgrade -v /tmp/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
*Див. додаткові поради для пристроїв з малим обсягом пам'яті наприкінці сторінки.*