
SBCs के लिए प्रावधान और साझाकरण प्रणाली
Provisioner एक डेवलपर-केंद्रित प्रावधानिक सहायक है, जो सिंगल-बोर्ड कंप्यूटरों (SBCs), विशेष रूप से U-Boot-आधारित प्लेटफार्मों के लिए है।

यह एक स्व-निहित वातावरण प्रदान करता है:
संचालन मॉडल जानबूझकर सरल है:
एक बोर्ड => एक Provisioner इंस्टेंस
Provisioner हार्डवेयर के करीब चलता है और डेवलपर्स को एक सुरक्षित, मल्टीप्लेक्स इंटरफ़ेस के माध्यम से नियंत्रित दूरस्थ पहुँच प्रदान करता है।
परियोजना दो मुख्य तत्वों से बनी है:
| घटक | कहाँ चलता है | भूमिका |
|---|---|---|
| Provisioner | होस्ट / लैब नोड | नियंत्रण तल, सीरियल गेटवे, प्रावधानिक सेवाएँ |
| goinit | लक्ष्य बोर्ड | फ्लैशिंग एजेंट और प्रावधानिक रनटाइम |
Provisioner वर्कफ़्लो को ऑर्केस्ट्रेट करता है; goinit उन्हें बोर्ड पर स्थानीय रूप से निष्पादित करता है।
Provisioner तीन संचालन तलों को पाटता है:
यह बूटलोडर से लेकर रनटाइम प्रावधानिक तक निरंतर नियंत्रण की अनुमति देता है।
भौतिक कंसोल कनेक्शन का स्वामी है और प्रदान करता है:
सीरियल अंतिम पतन नियंत्रण पथ बना रहता है।
एम्बेडेड सेवाएँ बूट आर्टिफ़ैक्ट प्रदान करती हैं:
TFTP
HTTP
Provisioner एक एकीकृत SSH एंडपॉइंट प्रदान करता है, जो पहुँच और नियंत्रण तल दोनों के रूप में कार्य करता है।
सभी दूरस्थ अंतःक्रियाएँ एकल SSH कनेक्शन पर मल्टीप्लेक्स होती हैं और सार्वजनिक कुंजी प्रमाणीकरण द्वारा शासित होती हैं।
मल्टीप्लेक्स चैनलों में शामिल हैं:
पहुँच शासन:
इसलिए, SSH दोनों वहन करता है:
Provisioner के I/O मॉडल के केंद्र में राउटर है, एक प्लगेबल सॉफ़्टवेयर आर्टिफ़ैक्ट जो उत्पादकों और उपभोक्ताओं के बीच टर्मिनल स्ट्रीम का दलाली करता है।
सभी कंसोल ट्रैफ़िक इस घटक के माध्यम से बहता है, न कि सीधे उप-प्रणालियों के बीच।
राउटर क्लाइंट कर सकते हैं:
उदाहरण:
राउटर दो क्लाइंट प्रकारों के बीच अंतर करता है:
| प्रकार | विशेषताएँ | उदाहरण |
|---|---|---|
| मानव | इंटरैक्टिव, ANSI-जागरूक | SSH टर्मिनल |
| मशीन | नियतत्व, रॉ I/O | स्क्रिप्ट, स्वचालन |
यह उपयोगिता बनाम नियतत्व के लिए अनुकूलित स्ट्रीम हैंडलिंग की अनुमति देता है।
यूनिकास्ट
मल्टीकास्ट
कई इंजीनियर बिना हस्तक्षेप के एक ही कंसोल देख सकते हैं।
एक समर्पित प्लगेबल वॉचर ANSI टर्मिनल बारीकियों को कम करता है:
हार्डकोडेड तर्क के बजाय एक प्लगइन के रूप में कार्यान्वित।
मॉनिटर शेल इंटरैक्टिव बोर्ड नियंत्रण प्रदान करता है।
> ?
? : यह टेक्स्ट
board_stat : अंतिम goinit बोर्ड स्थिति रिपोर्ट करें; बोर्ड ने PROVISIONER_MGMT_* प्रिंट किया होना चाहिए
echo : तर्क को प्रतिध्वनित करता है
enuser : टनल के लिए उपयोगकर्ता सक्षम करें
exec_assm : निर्दिष्ट assm स्क्रिप्ट लोड और निष्पादित करता है
exec_scr : निर्दिष्ट स्क्रिप्ट लोड और निष्पादित करता है
exec_state : निर्दिष्ट स्क्रिप्ट की स्थिति लौटाता है
exit : इस शेल से बाहर निकलें
filter : फ़िल्टर कमांड: अधिक जानकारी के लिए 'filter help' टाइप करें
help : यह टेक्स्ट
log_serial : सीरियल पर भेजे और प्राप्त किए गए सभी डेटा को ser.log फ़ाइल में कॉपी करता है। नोट: पिछला ओवरराइट करता है।
log_serial_stop : सीरियल लॉग उपप्रणाली को रोकने की आवश्यकता है।
send_serial : सीरियल पर फ़ाइल भेजें: send_serial <file> <plain|gzip|xmodem_unix|xmodem_uboot> [dest_path]
send_serial_deps : plain/gzip के लिए दूरस्थ निर्भरता जाँचें: stty, dd, base64, gzip, rm (या busybox)।
toff : PDU को SNMP का उपयोग करके बोर्ड बंद करने का आदेश
ton : PDU को SNMP का उपयोग करके बोर्ड चालू करने का आदेश
tterm : सीरियल टनल कनेक्शन समाप्त करें
ulist : टनल के लिए उपयोगकर्ता स्थिति सूचीबद्ध करें
>
filter help
उपलब्ध: enable, disable, default, show, add, remove, help
ASCII या HEX में नियम परिभाषित किए जा सकते हैं:
filter add ascii Hello Hello World
filter add hex 48656c6c6f 48656c6c6f 576f726c64
फ़िल्टर कर सकते हैं:
यह बूट स्वचालन और कंसोल सामान्यीकरण के लिए उपयोगी है।
Provisioner प्रत्यक्ष सीरियल फ़ाइल स्थानांतरण का समर्थन करता है:
send_serial <file> <mode> [dest_path]
मोड:
| मोड | विधि |
|---|---|
| plain | Base64 |
| gzip | Base64 + संपीड़न |
| xmodem_unix | rx के माध्यम से XMODEM |
| xmodem_uboot | loadx के माध्यम से XMODEM |
निर्भरताएँ इसके माध्यम से जाँची जाती हैं:
send_serial_deps
आवश्यक उपयोगिताएँ:
स्थानांतरण इंजन स्टैंडअलोन उपयोगिता send_console-ng से लिया गया है, जिसे Provisioner में अनुकूलित किया गया है। यह फ़ाइल स्थानांतरण को सक्षम करता है जब:
क्षमताएँ:
मूल उपयोगिता की तुलना में:
stdbuf और cat निर्भरताएँ हटा दी गईंdd जोड़ा गयायह Provisioner को गंभीर रूप से क्षतिग्रस्त बोर्ड स्थितियों में भी संचालित करने की अनुमति देता है।
असेंबली-जैसी Expect इंजन:
लॉगिन और बूट प्रवाह के लिए सबसे उपयुक्त।
सीरियल स्ट्रीम से बंधे बाहरी प्रोग्राम निष्पादित करता है।
मोड:
| मोड | व्यवहार |
|---|---|
| line | लाइन-बफ़र्ड |
| char | बाइट-स्ट्रीम |
हल्का आरक्षण एकीकरण मौजूद है, लेकिन यह परियोजना का प्राथमिक फोकस नहीं है। केवल इसके लिए उपयोग किया जाता है:
Provisioner का उद्देश्य पूर्ण लैब शेड्यूलर बनना नहीं है।
Provisioner Go में लिखा गया है और आसानी से क्रॉस-कंपाइल होता है।
make
GOARCH=arm64 make
कोई बाहरी टूलचेन आवश्यक नहीं है।
परिनियोजन योग्य: