يعمل هذا المشروع على تبسيط عملية ترقية النظام لترقية البرامج الثابتة للأجهزة التي تعمل بنظام OpenWrt أو التوزيعات القائمة عليه. توفر هذه الأدوات طريقة سهلة لإعادة تحميل جهاز التوجيه بإصدار جديد من البرنامج الثابت (بما في ذلك جميع الحزم) دون الحاجة إلى استخدام opkg
.
تعتمد جامعة ولاية أريزونا (ASU) على واجهة برمجة التطبيقات (API) لطلب صور البرامج الثابتة المخصصة مع أي مجموعة مختارة من الحزم المثبتة مسبقًا. يؤدي هذا إلى تجنب الحاجة إلى إعداد بيئة بناء، ويجعل من الممكن إنشاء صورة برنامج ثابت مخصصة حتى باستخدام جهاز محمول.
واجهة ويب بسيطة تستخدم JavaScript الفانيليا التي تم تطويرها حاليًا بواسطة @mwarning. يوفر بحثًا عن الأجهزة بناءً على أسماء الطرازات ويعرض روابط إما للصور الرسمية أو طلبات الصور عبر واجهة برمجة التطبيقات asu . يرجى الانضمام إلى التطوير في مستودع GitLab
توفر الحزمة luci-app-attendedsysupgrade
أداة بسيطة ضمن System > Attended Sysupgrade
. فهو يطلب صورة برنامج ثابت جديدة تتضمن المجموعة الحالية من الحزم، وينتظر حتى يتم إنشاؤها ثم يومضها. إذا تم تحديد "الاحتفاظ بالتكوين" في واجهة المستخدم الرسومية، فسيقوم الجهاز بالترقية إلى البرنامج الثابت الجديد دون الحاجة إلى إعادة إدخال أي تكوين أو إعادة تثبيت أي حزم.
باستخدام OpenWrt SNAPSHOT-r26792 or newer
تم استبدال تطبيق CLI auc
بـ owut
كأداة CLI أكثر شمولاً لتوفير طريقة سهلة لترقية جهازك.
تنفذ حزمة auc
نفس العملية التي يقوم بها luci-app-attendedsysupgrade
من SSH/سطر الأوامر.
يستمع الخادم لطلبات الصور، وإذا كانت صالحة، يقوم بإنشائها تلقائيًا. يقوم بتنسيق العديد من OpenWrt ImageBuilders ويخزن الصور الناتجة مؤقتًا في قاعدة بيانات Redis. إذا تم تخزين الصورة مؤقتًا، فيمكن للخادم توفيرها على الفور دون إعادة بنائها.
لأسباب أمنية، يتم تنفيذ كل بناء داخل حاوية بحيث لا يؤثر بناء واحد على بناء آخر. لكي يعمل هذا، تقوم حاوية Podman بتشغيل خدمة API حتى يتمكن العمال من تنفيذ عمليات البناء بأنفسهم داخل الحاويات.
الرجاء تثبيت Podman واختبار ما إذا كان يعمل:
podman run --rm -it docker.io/library/alpine:latest
بمجرد أن يعمل Podman، قم بتثبيت podman-compose
:
pip install podman-compose
أصبح من الممكن الآن تشغيل جميع الخدمات عبر podman-compose
:
# where to store images and json files
echo "PUBLIC_PATH=$(pwd)/public" > .env
# absolute path to podman socket mounted into worker containers
echo "CONTAINER_SOCK=/run/user/$(id -u)/podman/podman.sock" >> .env
podman-compose up -d
سيؤدي هذا إلى بدء تشغيل الخادم وحاوية Podman API والعاملين. يحتاج التشغيل الأول إلى بضع دقائق حيث يتم تحليل الحزم المتوفرة من الخادم الرئيسي. بمجرد تشغيل الخادم، من الممكن طلب الصور عبر واجهة برمجة التطبيقات (API) على http://localhost:8000
. قم بتعديل podman-compose.yml
لتغيير المنفذ.
بالنسبة للإنتاج، يوصى باستخدام وكيل عكسي مثل nginx
أو caddy
.
بعد استنساخ هذا المستودع، أنشئ بيئة بايثون الافتراضية وقم بتثبيت التبعيات:
poetry install
poetry run fastapi dev asu/main.py
# podman unix socket (not path), no need to mount anything
export CONTAINER_HOST=unix:///run/user/1001/podman/podman.sock
poetry run rq worker
لتحديث قائمة الأهداف المتاحة، قم بتشغيل:
poetry run python3 misc/update_all_targets.py
يمكن إضافة هذا إلى مهمة cron لتحديث الأهداف بانتظام. يجب تغيير البرنامج النصي في حالة رغبتك في تحديث الأهداف من مصدر مختلف أو تشغيل الخادم على منفذ مختلف.
تم توثيق واجهة برمجة التطبيقات (API) عبر OpenAPI ويمكن مشاهدتها بشكل تفاعلي على الخادم: