Під час оновлення прошивки OpenWrt через веб-інтерфейс можна скористатися прапорцем “Keep settings”. Він створює резервну копію налаштувань перед оновленням і відновлює її після завершення.
Якщо ви не до кінця розумієте, коли доцільно використовувати цю опцію — знімайте прапорець “Keep Settings” при кожному оновленні OpenWrt, щоби не зберігати налаштування.
Див. також: Резервне копіювання та відновлення
Цей розділ актуальний лише у разі використання метаданих образу для оновлення.
Часто трапляються ситуації, коли конфігурація пристрою змінилася таким чином, що зробила його несумісним із попередніми версіями. Це може бути пов'язано зі змінами у файловій системі або в конфігурації, які унеможливлюють оновлення через `sysupgrade`.
Починаючи з серпня 2020 (версії 20.xx), введено механізм попередження при спробі оновлення між несумісними версіями.
Це досягається шляхом використання номера сумісності (compat-version), який містить головну (x) та додаткову (y) версії у форматі: x.y
Для всіх пристроїв і образів, створених до цього моменту, за замовчуванням вважається значення “1.0”.
Це значення призначається для кожного пристрою індивідуально — воно не стосується загальної версії OpenWrt.
Якщо внесено несумісні зміни:
Зазвичай, окрім зміни номера сумісності, додається пояснювальне повідомлення з підказками.
Оновлення все ще можна примусово виконати через `sysupgrade -F`, але це може призвести до проблем, яких система намагається уникнути.
У такому випадку зверніть увагу: версія сумісності зберігається в конфігурації: `uci: system.@system[0].compat_version`
Оскільки примусове оновлення не скидає конфігурацію, версія сумісності також не зміниться автоматично. Її потрібно встановити вручну:
uci set system.@system[0].compat_version="1.1" uci commit system
Як уже зазначено, всі пристрої без `compat-version` вважаються такими, що мають значення 1.0.
Новий механізм сумісності доступний лише на пристроях, прошитих після його впровадження.
На старих пристроях, при спробі оновлення до “несумісного” образу, буде виведено попередження. Але оновлення доведеться примусово виконати з обов’язковим скиданням налаштувань: `sysupgrade -F -n`
Якщо ви цього не зробите, отримаєте наслідки, описані вище в розділі “Примусове оновлення”.
Виняток: ранні пристрої, що використовують DSA, можуть зберегти налаштування. Деталі в розділі вище.
Розділ для розробників, які реалізують підтримку compat-version при впровадженні несумісних змін.
Складається з двох частин:
Щоб встановити версію для перевірки під час оновлення, у визначенні пристрою потрібно вказати:
define Device/somedevice ... DEVICE_COMPAT_VERSION := 1.1 DEVICE_COMPAT_MESSAGE := Неможливо перенести конфігурацію з swconfig на DSA endef
`DEVICE_COMPAT_VERSION` обов’язковий для значень, відмінних від “1.0”. `DEVICE_COMPAT_MESSAGE` — необов’язковий, але рекомендований для пояснення причин несумісності.
На самому пристрої версія сумісності також повинна бути вказана — для цього в `board.d` додається команда:
ucidef_set_compat_version "1.1"
Під час виконання firstboot це значення буде додано до `/etc/board.json` та автоматично перетворено у `uci` конфігурацію.
Таким чином, версія сумісності є властивістю конфігурації, а не прошивки. Вона може бути збережена або змінена вручну, а також відновлена з резервної копії.