講者 : 李東霖
李東霖
現在是碩士 0 年級
第一次來到 COSCUP
"Over-the-air software updates
for embedded Linux
Mender is an end-to-end
open source updater
for connected IoT devices"Mender 官網
by Apache License 2.0
https://github.com/mendersoftware/mender
用 go 寫成
可藉由 yocto project 整合進 device
也能自行整合
image-based | package-based | |
---|---|---|
更新範圍 | 大 | 小 |
更新時間 | 多 | 少 |
測試難度 | 易 | 難 |
atomic op | ![]() |
![]() |
https://github.com/mendersoftware/meta-mender
內含有多個 yocto 層(layer)
meta-mender-core
meta-mender-demo
meta-mender-raspberrypi
meta-mender-raspberrypi-demo
meta-mender-qemu
Beagle bone board
使用在 client 進行更新的特殊格式 .mender
工具 mender-artifact
可產生與修改該檔案類型
https://github.com/mendersoftware/mender-artifact
Mender artifact:
Name: release-2
Format: mender
Version: 2
Signature: no signature
Compatible devices: '[qemux86-64]'
State scripts:
Updates:
0:
Type: rootfs-image
Files:
name: core-image-full-cmdline-qemux86-64.ext4
size: 226492416
modified: 2018-08-08 17:31:30 +0800 CST
checksum: 03c643e2401dd3c675c29992be0d15b36f405d5fbfd4619fdff202256dcdc2b6
https://github.com/mendersoftware/integration
每個 microservice 為 docker service
利用 docker-compose 管理
$ ./up #開啟所有 service
$ ./stop #關閉所有 service
st=>start: 開始
make=>operation: 製作或取得映像檔(包含完整分區)
provisioning=>operation: 燒錄進設備並取得 server 授權
newversion=>condition: 有新版本?
newart=>operation: 產生新的 mender-artifact
upload=>inputoutput: 上傳 mender server
deployment=>operation: 使用 server 建立新的佈署
make->provisioning->newversion
newversion(no, )->newversion
newversion(yes, right)->newart->upload->deployment(right)->newversion
Mender client 狀態轉換間呼叫
方便客製化
e.g. 重開前先結束運作功能、啟用網路的時機、設備功能的驗證與啟動…
因為任何人都可以知道 mender 的行為
有什麼機制避免被白箱攻擊?
client 有 server 憑證
可驗證 server 來源
open source
know how
hardware & software 服務