Pembaruan OTA untuk Embedded Linux – Bagian 2: Evaluasi Platform Pembaruan Siap Pakai
Dalam artikel pertama kami membahas dasar-dasar dan implementasi sistem pembaruan OTA untuk Embedded Linux. Installmen ini mengevaluasi platform open-source siap pakai populer yang dapat diintegrasikan ke dalam proyek Anda hari ini.
Mender
Mender menyediakan pengalaman out-of-the-box yang rapi. Ia menggunakan strategi dual-rootfs mirip dengan yang dijelaskan sebelumnya dan terintegrasi erat dengan U-Boot, memungkinkan rollback yang lancar jika gambar gagal boot.
Memulai sederhana berkat dokumentasi langkah demi langkah yang jelas. Build referensi untuk Raspberry Pi dan BeagleBone Black mengilustrasikan usaha yang diperlukan untuk menyesuaikan solusi dengan hardware Anda.
Berdasarkan pengalaman saya, integrasi memakan waktu sekitar tiga hari. Prosesnya melibatkan penyesuaian kecil pada build Yocto (Morty) dan memerlukan keakraban dengan OpenEmbedded dan U-Boot untuk mengonfigurasi mekanisme dual-boot dengan benar.
Setelah build, Mender menghasilkan file “sdimg” yang berisi bootloader dan filesystem, yang kemudian Anda tulis ke flash. Ini juga menghasilkan “artifacts” yang membungkus gambar filesystem baru dengan metadata.
Artifacts dapat diinstal secara manual melalui CLI mender, atau diunggah ke server backend melalui antarmuka web untuk penerapan otomatis ke unit target.
Konsol manajemen backend dibangun pada Docker, menyederhanakan penerapan awal. Antarmuka web memungkinkan Anda memantau semua perangkat di lapangan dan mendorong pembaruan ke unit individu atau grup.
klik untuk gambar lebih besar Gambar 1: Antarmuka web kustom Mender untuk mendorong pembaruan (Sumber: Mender)
Sebagian besar Mender ditulis dalam Go, jadi pengetahuan Go disarankan untuk pemeliharaan jangka panjang. Meskipun Go belum umum dalam pengembangan embedded, adopsi-nya semakin meningkat.
Namun, Mender mengunci Anda ke satu perangkat boot (misalnya, /dev/mmcblk0) dan mengasumsikan konfigurasi bootloader dan kernel tertentu, seperti dukungan untuk filesystem tertentu. Ia juga mewajibkan systemd, yang mungkin mengecualikan proyek yang bergantung pada sistem init alternatif.
SWUpdate
SWUpdate menawarkan kerangka kerja yang sangat dapat dikonfigurasi. Konfigurasinya menggunakan sintaks kconfig yang familiar, memungkinkan pengembang menyesuaikan sistem dengan kebutuhan mereka.
Kemampuan utama meliputi dukungan untuk beberapa bootloader (U-Boot, GRUB, EFI Boot Guard), penandatanganan dan verifikasi gambar dengan kunci publik, dan enkripsi kunci simetris opsional untuk payload.
Gambar 2: Sistem konfigurasi SWUpdate (Sumber: SWUpdate)