Skip to main content

ए/बी विभाजन क्यों?

एम्बेडेड सिस्टम में, विफल अपडेट उपकरणों को ईंट कर सकते हैं। एक A/B लेआउट दो रूट फाइल सिस्टम को बनाए रखकर इसे हल करता है:

  • स्लॉट ए - सक्रिय रूट्स
  • स्लॉट बी — अगले अपडेट के लिए स्टैंडबाय रूट्स

जब कोई अपडेट सफल होता है, तो बूटलोडर नए स्लॉट पर स्विच हो जाता है। यदि बूट विफल हो जाता है, तो यह अंतिम ज्ञात अच्छे संस्करण पर वापस आ जाता है।

यह दृष्टिकोण मानता है, कि स्लॉट ए और स्लॉट बी में विभाजन का आकार समान है, जो कभी-कभी एम्बेडेड सिस्टम में मुश्किल हो सकता है, जब संसाधन सीमित होते हैं।

बचाव प्रणाली के साथ swupdate

एक अन्य दृष्टिकोण है, एक छोटी बचाव प्रणाली के लिए विभाजन और सामान्य चलने वाले सिस्टम के लिए एक बड़ा विभाजन बनाना।

उदाहरण विभाजन लेआउट

एक विशिष्ट Raspberry Pi Compute Module 5 (CM5) लेआउट इस तरह दिख सकता है:
विभाजनप्रकारउद्देश्य
पी1एफएटी32/boot_A (कर्नेल, cmdline, बूटलोडर)
पी2एक्सटी4रूटएफएस ए
पी3एफएटी32/boot_B (कर्नेल, cmdline, बचाव प्रणाली के लिए बूटलोडर)
पी4एक्सटी4rootfs_B
पी5एक्सटी4डेटा/कॉन्फ़िगरेशन
बूटलोडर एक ध्वज (उदाहरण के लिए, GPIO17 = 1 rpi-eeprom में) का उपयोग कर सकते हैं यह निर्धारित करने के लिए कि बचाव विभाजन से बूट करना है या नहीं।

व्यावहारिक उदाहरण

यह सेटअप दो rpi-image-genउदाहरण परियोजनाओं में प्रदर्शित किया गया है:

  • <a href="https://github.com/इंटरइलेक्ट्रोनिक्स/rpi-image-gen-प्रोजेक्ट्स/ब्लॉब/मेन/डीईबी12-सेमी5-रेस्क्यू/रीडमे.एमडी" लक्ष्य="_blank">https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-rescue/README.md
  • <a href="https://github.com/इंटरइलेक्ट्रोनिक्स/rpi-image-gen-प्रोजेक्ट्स/ब्लॉब/मेन/डीईबी12-सेमी5-ix-बेस/README.md" लक्ष्य="_blank">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 फ़ाइल में परिभाषित किया गया है।

यह दृष्टिकोण अंतर्निहित रोलबैक सुरक्षा के साथ परमाणु प्रणाली अपडेट सुनिश्चित करता है - हेडलेस या दूरस्थ उपकरणों के लिए एक आवश्यक विशेषता, जहां मैनुअल रिकवरी संभव नहीं है।

स्रोत