لماذا التقسيم A/B التقسيم A/B؟
في الأنظمة المدمجة، يمكن أن تؤدي التحديثات الفاشلة إلى تعطيل الأجهزة. يحل تخطيط A/B هذه المشكلة من خلال الحفاظ على نظامي ملفات جذر:
- الفتحة أ - الجذر النشط
- الفتحة ب - الجذر الاحتياطي للتحديث التالي
عندما ينجح التحديث، يتحول محمل الإقلاع إلى الفتحة الجديدة. إذا فشل التمهيد، فإنه يعود إلى آخر إصدار جيد معروف.
يفترض هذا الأسلوب أن الفتحة (أ) والفتحة (ب) لهما نفس حجم القسم، وهو ما قد يكون صعبًا في بعض الأحيان في الأنظمة المدمجة، عندما تكون الموارد محدودة.
نهج آخر هو، إنشاء أقسام لنظام إنقاذ صغير وقسم أكبر لنظام التشغيل العادي.
مثال على تخطيط التقسيم
| التقسيم | النوع | الغرض |
|---|---|---|
| p1 | FAT32 | /التمهيد_A (نواة ، سمدين ، محمل الإقلاع) |
| p2 | إكست4 | الجذر أ |
| p3 | FAT32 | /boot_B (kernel، cmdline، محمل الإقلاع لنظام الإنقاذ) |
| p4 | ext4 | rootfs_B |
| p5 | إكست4 | البيانات / التكوين |
مثال عملي
تم توضيح هذا الإعداد في مثالين rpi-image-genمثالين:
- 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
الأول ينشئ نظام الإنقاذ والثاني يدمج نظام الإنقاذ مع نظام آخر قيد التشغيل، ويضبط تسميات الأقسام في cmdline.txt و fstab.
تحديث الإدارة
يمكنك تحميل قسم النظام غير النشط يدوياً لتحديث التكوينات أو التطبيقات أو مكونات النظام.
بالنسبة لأنظمة الإنتاج، تتم إدارة التحديثات عادةً عبر SWUpdateالتي تعمل على أتمتة هذه العملية بأمان.
التكامل مع SWUpdate
SWUpdate يدعم أصلاً استراتيجيات تحديث الجذر المزدوج (A/B).
يتم تعريف الأقسام ومنطق التحديث مباشرةً في ملف sw-description الملف.
يضمن هذا النهج تحديثات النظام الذرية مع أمان التراجع المدمج - وهي ميزة أساسية للأجهزة التي لا رأس لها أو الأجهزة البعيدة، حيث لا يمكن الاسترداد اليدوي.
مقالات في هذه السلسلة
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- من نظام تشغيل المخزون إلى منصة الإنتاج
- Customizing Raspberry Pi OS with rpi-image-gen
- متانة النظام - تصميم تخطيط نظام ملفات الجذر A/B
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
المصادر
- 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