Mengapa partisi A/B?
Pada sistem tertanam, pembaruan yang gagal dapat merusak perangkat. Tata letak A/B mengatasi hal ini dengan mempertahankan dua sistem file root:
- Slot A - root yang aktif
- Slot B - rootfs siaga untuk pembaruan berikutnya
Ketika pembaruan berhasil, bootloader akan beralih ke slot yang baru. Jika booting gagal, boot akan kembali ke versi terakhir yang diketahui baik.
Pendekatan ini mengandaikan bahwa slot A dan slot B memiliki ukuran partisi yang sama, yang terkadang dapat menyulitkan pada sistem tertanam, ketika sumber daya terbatas.
Pendekatan lainnya adalah, membuat partisi untuk sistem penyelamatan kecil dan partisi yang lebih besar untuk sistem yang berjalan normal.
Contoh Tata Letak Partisi
| Partisi | Jenis | Tujuan |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (kernel, cmdline, bootloader untuk sistem penyelamatan) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | data / konfigurasi |
Contoh Praktis
Penyiapan ini didemonstrasikan dalam dua rpi-image-gencontoh proyek:
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-rescue/README.md
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-ix-base/README.md
Yang pertama membuat sistem penyelamatan dan yang kedua menggabungkan sistem penyelamatan dengan sistem lain yang sedang berjalan, menyesuaikan label partisi di cmdline.txt dan fstab.
Mengelola pembaruan
Anda dapat memasang partisi sistem yang tidak aktif secara manual untuk memperbarui konfigurasi, aplikasi, atau komponen sistem.
Untuk sistem produksi, pembaruan biasanya dikelola melalui SWUpdateyang mengotomatiskan proses ini dengan aman.
Integrasi dengan SWUpdate
SWUpdate secara native mendukung strategi pembaruan dual-rootfs (A/B).
Partisi dan logika pembaruan didefinisikan secara langsung di dalam file sw-description file.
Pendekatan ini memastikan pembaruan sistem atomik dengan keamanan rollback bawaan - fitur penting untuk perangkat tanpa kepala atau perangkat jarak jauh, di mana pemulihan manual tidak memungkinkan.
Artikel dalam seri ini
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Dari Stock OS ke Platform Produksi
- Customizing Raspberry Pi OS with rpi-image-gen
- Kekokohan Sistem - Merancang Tata Letak Sistem Berkas A/B Root
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Sumber
- rpi-image-gen: https://github.com/raspberrypi/rpi-image-gen
- rpi-sb-provisioner: https://github.com/raspberrypi/rpi-sb-provisioner
- SWUpdate: https://github.com/sbabic/swupdate
- swugenerator: https://github.com/sbabic/swugenerator