
نظام التزويد والمشاركة لـ SBCs
Provisioner هو مساعد تزويد يركز على المطورين لأجهزة الكمبيوتر أحادية اللوحة (SBCs)، وخاصة المنصات القائمة على U-Boot.

يوفر بيئة مكتفية ذاتيًا من أجل:
نموذج التشغيل بسيط عمدًا:
لوحة واحدة => مثيل Provisioner واحد
يعمل Provisioner بالقرب من الأجهزة ويكشف عن وصول متحكم به عن بُعد للمطورين من خلال واجهة آمنة ومتعددة الإرسال.
يتكون المشروع من عنصرين رئيسيين:
| المكوّن | يعمل على | الدور |
|---|---|---|
| Provisioner | المضيف / عقدة المختبر | مستوى التحكم، بوابة تسلسلية، خدمات التزويد |
| goinit | اللوحة المستهدفة | عامل الوميض وبيئة تشغيل التزويد |
يقوم Provisioner بتنسيق سير العمل؛ وينفذها goinit محليًا على اللوحة.
يجسر Provisioner بين ثلاثة مستويات تشغيلية:
هذا يسمح بالتحكم المستمر من محمل الإقلاع إلى التزويد في وقت التشغيل.
يمتلك اتصال وحدة التحكم المادية ويوفر:
يظل المنفذ التسلسلي مسار التحكم الاحتياطي النهائي.
توفر الخدمات المدمجة قطعًا أثرية للإقلاع:
TFTP
HTTP
يكشف Provisioner عن نقطة نهاية موحدة لـ SSH تعمل كطبقة وصول وتحكم معًا.
يتم إرسال جميع التفاعلات عن بُعد عبر اتصال SSH واحد وتخضع لمصادقة المفتاح العام.
تشمل القنوات متعددة الإرسال:
حوكمة الوصول:
وبالتالي يحمل SSH كلًا من:
في صميم نموذج الإدخال/الإخراج لـ Provisioner يقع الموجه، وهو قطعة برمجية قابلة للتوصيل تتوسط تيارات المحطة الطرفية بين المنتجين والمستهلكين.
تتدفق جميع حركة مرور وحدة التحكم عبر هذا المكون بدلاً من التدفق مباشرة بين الأنظمة الفرعية.
قد يقوم عملاء الموجه بما يلي:
أمثلة:
يميز الموجه بين نوعين من العملاء:
| النوع | الخصائص | أمثلة |
|---|---|---|
| بشري | تفاعلي، واعٍ بـANSI | محطات SSH |
| آلي | حتمي، إدخال/إخراج خام | النصوص البرمجية، الأتمتة |
هذا يسمح بمعالجة تيارات مخصصة لسهولة الاستخدام مقابل الحتمية.
أحادي الإرسال
متعدد الإرسال
يمكن لعدة مهندسين مشاهدة نفس وحدة التحكم دون تداخل.
يخفف مراقب قابل للتوصيل مخصص من الفروق الدقيقة لمحطة ANSI:
يتم تنفيذه كإضافة بدلاً من منطق صلب.
توفر شاشة المراقبة تحكمًا تفاعليًا في اللوحة.
> ?
? : this text
board_stat : report last goinit board stat; board must have printed PROVISIONER_MGMT_*
echo : echoes back the argument
enuser : enable user for tunnel
exec_assm : Load and executes the specified assm script
exec_scr : Load and executes the specified script
exec_state : returns the state of the specified script
exit : exit this shell
filter : Filter commands: type 'filter help' for more info
help : this text
log_serial : copies in a file ser.log all sent and received from the serial. Note: overwrites previous.
log_serial_stop : Requires serila log subsystem to stop.
send_serial : send file over serial: send_serial <file> <plain|gzip|xmodem_unix|xmodem_uboot> [dest_path]
send_serial_deps : check remote deps for send_serial plain/gzip: stty, dd, base64, gzip, rm (or busybox).
toff : command PDU using snmp to turn off the board
ton : command PDU using snmp to turn on the board
tterm : terminate serial tunnel connection
ulist : list user state for tunnel
>
filter help
available: 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 | XMODEM عبر rx |
| xmodem_uboot | XMODEM عبر loadx |
يتم التحقق من الاعتماديات عبر:
send_serial_deps
الأدوات المطلوبة:
يشتق محرك النقل من الأداة المستقلة send_console-ng، التي تم تكييفها داخل Provisioner. يُمكّن نقل الملفات عندما:
الإمكانيات:
مقارنة بالأداة الأصلية:
stdbuf و catdd من أجل قابلية النقلهذا يسمح لـ Provisioner بالعمل حتى في حالات اللوحات المتدهورة بشدة.
محرك توقع يشبه لغة التجميع:
أنسب لعمليات تسجيل الدخول والإقلاع.
ينفذ برامج خارجية مرتبطة بالتيار التسلسلي.
الأوضاع:
| الوضع | السلوك |
|---|---|
| line | مخزن مؤقت حسب السطر |
| char | تدفق بايت |
يوجد تكامل حجز خفيف ولكنه ليس محور المشروع الأساسي. يُستخدم فقط من أجل:
لا يهدف Provisioner إلى أن يصبح جدولة مختبر كاملة.
مكتوب Provisioner بلغة Go ويتم تجميعه بسهولة عبر الأنظمة الأساسية.
make
GOARCH=arm64 make
لا حاجة إلى سلاسل أدوات خارجية.
قابل للنشر على: