Функція снепшотів (знімків) файлової системи: /sbin/snapshot

Ця функція була згадана в анонсі Barrier Breaker, але потребувала документації. Нижченаведена інформація взята з листування на розсилці Battlemesh від розробника, який реалізував цю функцію.

Є багато ситуацій, де це корисно, але ця система не є заміною jffs2.
Ця технологія орієнтована на масові розгортання, коли багато пристроїв працюють на однаковій прошивці та повинні отримувати однакові оновлення одночасно. Мета — зберігати конфігурацію та невеликі зміни у вигляді ланцюжка блоків. Зрештою, все працює на tmpfs.

Основна перевага: можна просто відкотитися до попереднього знімка, якщо щось пішло не так. Наприклад, тригером для відкaту може бути ситуація, коли “неможливо під’єднатись до mesh-мережі”.

Зазвичай у OpenWrt використовується поєднання squashfs + jffs2 overlay. У цій реалізації:

- rootfs_data більше не використовується для jffs2 - натомість використовується для зберігання ланцюжка блоків, вирівняних за розміром сторінки flash (erasesize) - кожен блок містить заголовок та tar-архів - заголовок містить: розмір, хеш, тип - є два типи блоків: snapshot та volatile - блок типу volatile може бути лише один і завжди останній у ланцюжку

Під час завантаження:

1. Монтується squashfs як базова rootfs

2. Поверх неї — overlayfs, але замість jffs2 використовується tmpfs

3. Потім розпаковуються tar-архіви з блоків у вказаному порядку

4. Після всіх snapshot-блоків виконується додатковий overlay з tmpfs та volatile-блоком

У підсумку ми маємо багатошаровий overlay, де:

  • `/snapshot` — знімок (delta) початкового стану
  • `/overlay` — зміни, що відбулись після останнього завантаження

Цей інструмент доступний за замовчуванням у Barrier Breaker.

Після завантаження та ініціалізації jffs2 виконайте:

snapshot convert

Це перетворить поточні зміни overlay у ланцюжок з одним volatile-блоком. Тепер система працює подібно до initramfs — зміни у `/etc/config/` не зберігаються після перезавантаження.

Щоб зберегти зміни в overlay у volatile-блок:

snapshot config

Коли ви задоволені поточним станом — можна створити статичний знімок:

snapshot push

Під час перезапису блоків (наприклад, заміни volatile або конвертації у snapshot), використовуються останні сектори флеш-пам’яті як резервна буферна зона. Це дозволяє зберігати попередню версію даних для відкату у разі помилки.

Оновлення знімка з оновленням прошивки:

snapshot upgrade

Ця команда:

- шукає доступні оновлення (наприклад, через `opkg`)

- якщо знаходить — встановлює

- автоматично створює новий знімок після встановлення

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/28 14:19
  • by vazaz