رفتن به محتوای اصلی

چرا تقسیم بندی A/B؟

در سیستم های تعبیه شده، به روزرسانی های ناموفق می تواند دستگاه ها را خراب کند. چیدمان A/B این مشکل را با نگهداری دو فایل سیستم ریشه حل می کند:

  • شکاف A — ریشه های فعال
  • اسلات B — ریشه های آماده باش برای به روزرسانی بعدی

وقتی به روزرسانی موفق می شود، بوت لودر به اسلات جدید سوئیچ می کند. اگر بوت شکست بخورد، به آخرین نسخه شناخته شده خوب برمی گردد.

این رویکرد فرض می کند که شکاف A و شکاف B اندازه پارتیشن یکسانی داشته باشند، که گاهی در سیستم های تعبیه شده وقتی منابع محدود است، می تواند دشوار باشد.

swupdate با سیستم نجات

رویکرد دیگر ایجاد پارتیشن برای یک سیستم نجات کوچک و یک پارتیشن بزرگ تر برای سیستم معمولی در حال اجرا است.

نمونه چیدمان پارتیشن

یک چیدمان معمولی Raspberry Pi Compute Module 5 (CM5) ممکن است به این شکل باشد: بندی
هدفنوعتقسیم
p1FAT32/boot_A (کرنل، cmdline، بوت لودر)
P2ext4ریشه های A
p3FAT32/boot_B (کرنل، cmdline، بوت لودر برای سیستم نجات)
P4ext4rootfs_B
p5ext4داده ها / پیکربندی
بوت لودر می تواند با استفاده از یک پرچم (مثلا GPIO17=1 در rpi-eeprom) تصمیم بگیرد که آیا باید از پارتیشن نجات بوت شود یا نه.

مثال عملی

این ساختار در دو پروژه نمونه rpi-image-genنشان داده شده است:

اولی سیستم نجات را ایجاد می کند و دومی سیستم نجات را با یک سیستم دیگر در حال اجرا ترکیب می کند و برچسب های پارتیشن را در cmdline.txt و fstabتنظیم می کند.

به روزرسانی مدیریت

می توانید پارتیشن غیرفعال سیستم را به صورت دستی نصب کنید تا پیکربندی ها، برنامه ها یا اجزای سیستم را به روزرسانی کنید.
برای سیستم های تولیدی، معمولا به روزرسانی ها از طریق SWUpdateمدیریت می شوند که این فرآیند را به صورت ایمن خودکار می کند.

ادغام با SWUpdate

SWUpdate به طور بومی از استراتژی های به روزرسانی دو ریشه ای (A/B) پشتیبانی می کند.
پارتیشن ها و منطق به روزرسانی مستقیما در فایل sw-description تعریف می شوند.

این رویکرد تضمین می کند که به روزرسانی های اتمی سیستم با ایمنی بازگشت به عقب داخلی همراه باشد — ویژگی ضروری برای دستگاه های بدون سر یا راه دور که بازیابی دستی امکان پذیر نیست.

مقالات این مجموعه