چرا تقسیم بندی A/B؟
در سیستم های تعبیه شده، به روزرسانی های ناموفق می تواند دستگاه ها را خراب کند. چیدمان A/B این مشکل را با نگهداری دو فایل سیستم ریشه حل می کند:
- شکاف A — ریشه های فعال
- اسلات B — ریشه های آماده باش برای به روزرسانی بعدی
وقتی به روزرسانی موفق می شود، بوت لودر به اسلات جدید سوئیچ می کند. اگر بوت شکست بخورد، به آخرین نسخه شناخته شده خوب برمی گردد.
این رویکرد فرض می کند که شکاف A و شکاف B اندازه پارتیشن یکسانی داشته باشند، که گاهی در سیستم های تعبیه شده وقتی منابع محدود است، می تواند دشوار باشد.
رویکرد دیگر ایجاد پارتیشن برای یک سیستم نجات کوچک و یک پارتیشن بزرگ تر برای سیستم معمولی در حال اجرا است.
نمونه چیدمان پارتیشن
| هدف | نوع | تقسیم | بندی
|---|---|---|
| p1 | FAT32 | /boot_A (کرنل، cmdline، بوت لودر) |
| P2 | ext4 | ریشه های A |
| p3 | FAT32 | /boot_B (کرنل، cmdline، بوت لودر برای سیستم نجات) |
| P4 | ext4 | rootfs_B |
| p5 | ext4 | داده ها / پیکربندی |
مثال عملی
این ساختار در دو پروژه نمونه 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 تعریف می شوند.
این رویکرد تضمین می کند که به روزرسانی های اتمی سیستم با ایمنی بازگشت به عقب داخلی همراه باشد — ویژگی ضروری برای دستگاه های بدون سر یا راه دور که بازیابی دستی امکان پذیر نیست.
مقالات این مجموعه
- <a href="https://www.interelectronix.com/index%2Ephp/fa/sakht-yk-linux-amadh-twlyd-bray-raspberry-pi-compute-module-5.html" title="Building a Production-Ready لینوکس برای Raspberry Pi Compute Module 5«>ساخت یک Linux آماده تولید برای Raspberry Pi Compute Module 5
- از سیستم عامل استاندارد تا پلتفرم تولید
- <a href="https://www.interelectronix.com/index%2Ephp/fa/sfarshy-sazy-raspberry-pi-os-ba-rpi-image-gen.html" title="Customizing سیستم عامل Raspberry Pi با rpi-image-gen«>سفارشی سازی Raspberry Pi OS با rpi-image-gen
- پایداری سیستم — طراحی چیدمان سیستم فایل ریشه A/B
- Provisioning — خودکارسازی بوت اول با rpi-sb-provisioner
- OTA و چرخه عمر — به روزرسانی های نرم افزاری با 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