โปรเจ็กต์นี้ทำให้กระบวนการอัปเกรดระบบง่ายขึ้นสำหรับการอัพเกรดเฟิร์มแวร์ของอุปกรณ์ที่ใช้ OpenWrt หรือการกระจายตามนั้น เครื่องมือเหล่านี้นำเสนอวิธีง่ายๆ ในการรีเฟรชเราเตอร์ด้วยเฟิร์มแวร์เวอร์ชันใหม่ (รวมถึงแพ็คเกจทั้งหมด) โดยไม่จำเป็นต้องใช้ opkg
ASU ใช้ API เพื่อขออิมเมจเฟิร์มแวร์แบบกำหนดเองพร้อมแพ็คเกจที่เลือกไว้ล่วงหน้า ซึ่งช่วยหลีกเลี่ยงความจำเป็นในการตั้งค่าสภาพแวดล้อมบิลด์ และทำให้สามารถสร้างอิมเมจเฟิร์มแวร์แบบกำหนดเองได้แม้จะใช้อุปกรณ์มือถือก็ตาม
เว็บอินเตอร์เฟสที่เรียบง่ายโดยใช้ vanilla JavaScript ที่พัฒนาโดย @mwarning ในปัจจุบัน ให้การค้นหาอุปกรณ์ตามชื่อรุ่นและแสดงลิงก์ไปยังรูปภาพอย่างเป็นทางการหรือขอรูปภาพผ่าน asu API กรุณาเข้าร่วมในการพัฒนาที่พื้นที่เก็บข้อมูล GitLab
แพ็คเกจ luci-app-attendedsysupgrade
นำเสนอเครื่องมือง่ายๆ ภายใต้ System > Attended Sysupgrade
โดยจะขออิมเมจเฟิร์มแวร์ใหม่ที่มีชุดแพ็คเกจปัจจุบัน รอจนกว่าจะสร้างแล้วจึงกะพริบ หากเลือก "Keep Configuration" ใน GUI อุปกรณ์จะอัปเกรดเป็นเฟิร์มแวร์ใหม่โดยไม่จำเป็นต้องป้อนการกำหนดค่าหรือติดตั้งแพ็คเกจใหม่อีกครั้ง
ด้วย 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
หลังจากโคลนพื้นที่เก็บข้อมูลนี้แล้ว ให้สร้างสภาพแวดล้อมเสมือน Python และติดตั้งการขึ้นต่อกัน:
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 และสามารถดูแบบโต้ตอบได้บนเซิร์ฟเวอร์: