A/B پارٹیشننگ کیوں؟
ایمبیڈڈ سسٹمز میں، ناکام اپ ڈیٹس ڈیوائسز کو خراب کر سکتی ہیں۔ A/B لے آؤٹ اس مسئلے کو دو روٹ فائل سسٹمز کو برقرار رکھ کر حل کرتا ہے:
- سلاٹ A — فعال جڑیں
- سلاٹ B — اگلی اپ ڈیٹ کے لیے اسٹینڈ بائی روٹفز
جب کوئی اپڈیٹ کامیاب ہو جائے تو بوٹ لوڈر نئے سلاٹ پر سوئچ ہو جاتا ہے۔ اگر بوٹ ناکام ہو جائے تو یہ آخری معروف اچھے ورژن پر واپس آ جاتا ہے۔
یہ طریقہ یہ فرض کرتا ہے کہ سلاٹ A اور سلاٹ B کا پارٹیشن کا سائز ایک جیسا ہو، جو ایمبیڈڈ سسٹمز میں بعض اوقات مشکل ہو سکتا ہے جب وسائل محدود ہوں۔
ایک اور طریقہ یہ ہے کہ چھوٹے ریسکیو سسٹم کے لیے پارٹیشنز بنائیں اور عام چلنے والے سسٹم کے لیے بڑا پارٹیشن بنایا جائے۔
مثال پارٹیشن لے آؤٹ
| پارٹیشن | کی قسم | کا مقصد |
|---|---|---|
| p1 | FAT32 | /boot_A (کرنل، cmdline، بوٹ لوڈر) |
| p2 | ext4 | روٹس A |
| P3 | FAT32 | /boot_B (کرنل، سی ایم ڈی لائن، ریسکیو سسٹم کے لیے بوٹ لوڈر) |
| P4 | ext4 | rootfs_B |
| صفحہ 5 | 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 فائل میں متعین کیے جاتے ہیں۔
یہ طریقہ کار ایٹمی نظام کی اپ ڈیٹس کو یقینی بناتا ہے جس میں رول بیک سیفٹی بلٹ ان ہو — جو ہیڈلیس یا ریموٹ ڈیوائسز کے لیے ایک لازمی خصوصیت ہے، جہاں دستی بازیابی ممکن نہیں ہوتی۔
اس سلسلے کے مضامین
ذرائع
- 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