ए/बी विभाजन क्यों?
एम्बेडेड सिस्टम में, विफल अपडेट उपकरणों को ईंट कर सकते हैं। एक A/B लेआउट दो रूट फाइल सिस्टम को बनाए रखकर इसे हल करता है:
- स्लॉट ए - सक्रिय रूट्स
- स्लॉट बी — अगले अपडेट के लिए स्टैंडबाय रूट्स
जब कोई अपडेट सफल होता है, तो बूटलोडर नए स्लॉट पर स्विच हो जाता है। यदि बूट विफल हो जाता है, तो यह अंतिम ज्ञात अच्छे संस्करण पर वापस आ जाता है।
यह दृष्टिकोण मानता है, कि स्लॉट ए और स्लॉट बी में विभाजन का आकार समान है, जो कभी-कभी एम्बेडेड सिस्टम में मुश्किल हो सकता है, जब संसाधन सीमित होते हैं।
एक अन्य दृष्टिकोण है, एक छोटी बचाव प्रणाली के लिए विभाजन और सामान्य चलने वाले सिस्टम के लिए एक बड़ा विभाजन बनाना।
उदाहरण विभाजन लेआउट
| विभाजन | प्रकार | उद्देश्य |
|---|---|---|
| पी1 | एफएटी32 | /boot_A (कर्नेल, cmdline, बूटलोडर) |
| पी2 | एक्सटी4 | रूटएफएस ए |
| पी3 | एफएटी32 | /boot_B (कर्नेल, cmdline, बचाव प्रणाली के लिए बूटलोडर) |
| पी4 | एक्सटी4 | rootfs_B |
| पी5 | एक्सटी4 | डेटा/कॉन्फ़िगरेशन |
व्यावहारिक उदाहरण
यह सेटअप दो 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 फ़ाइल में परिभाषित किया गया है।
यह दृष्टिकोण अंतर्निहित रोलबैक सुरक्षा के साथ परमाणु प्रणाली अपडेट सुनिश्चित करता है - हेडलेस या दूरस्थ उपकरणों के लिए एक आवश्यक विशेषता, जहां मैनुअल रिकवरी संभव नहीं है।
इस श्रृंखला में लेख
- Raspberry Pi Compute Module 5के लिए उत्पादन-तैयार Linux का निर्माण
- स्टॉक ओएस से प्रोडक्शन प्लेटफॉर्म तक
- rpi-image-genके साथ Raspberry Pi OS को अनुकूलित करना
- सिस्टम मजबूती - ए/बी रूट फाइल सिस्टम लेआउट डिजाइन करना
- 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: <a href="https://github.com/sbabic/swugenerator" लक्ष्य = "_blank">https://github.com/sbabic/swugenerator