Mặc dù bạn chắc chắn có thể sử dụng rpm, deb hoặc ipk để nâng cấp, cách ưa thích của tôi (ít nhất là từ nhỏ đến kích thước hợp lý) là có hai hình ảnh được lưu trữ trên flash và chỉ cập nhật hình ảnh rootfs hoàn chỉnh.
Hôm nay tôi có thể xem xét meta-swupdate nếu tôi bắt đầu làm việc với Linux nhúng bằng cách sử dụng OpenEmbedded/Yocto Project.
Những gì tôi đã sử dụng cho bản thân mình và nhiều khách hàng là một cái gì đó như thế này:
- Một container nâng cấp tập tin đó là một tarball gồm một tarball (sau đây gọi là tập tin nâng cấp), MD5SUM của tệp nâng cấp và thường là chữ ký gpg.
- Tập lệnh cập nhật được lưu trữ trong hình ảnh đang chạy. Tập lệnh này chịu trách nhiệm giải nén vùng chứa bên ngoài của tệp nâng cấp, xác minh tính chính xác của tệp nâng cấp bằng md5sum và thường để xác minh chữ ký mã hóa (thường dựa trên gpg). Nếu tệp cập nhật vượt qua các thử nghiệm này, tập lệnh cập nhật sẽ tìm kiếm tập lệnh nâng cấp bên trong tệp cập nhật và thực thi điều này.
- Kịch bản nâng cấp bên trong tệp cập nhật thực hiện nâng cấp thực tế, tức là viết lại hình ảnh không chạy, trích xuất và viết lại hạt nhân và nếu các bước này thành công, hãy hướng dẫn bộ tải khởi động sử dụng hạt nhân và hình ảnh mới thay vì hiện đang chạy hệ thống.
Lợi ích của việc có tập lệnh thực hiện nâng cấp thực tế bên trong tệp nâng cấp, là bạn có thể làm bất cứ điều gì bạn cần trong tương lai chỉ bằng một bước. Tôi đã thực hiện các hình ảnh nâng cấp đặc biệt để nâng cấp FW của các modem đính kèm hoặc trích xuất một số thông tin chẩn đoán bổ sung thay vì thực hiện nâng cấp thực tế. Sự linh hoạt này sẽ được đền bù trong tương lai.
Để làm cho hệ thống đáng tin cậy hơn, bộ tải khởi động sử dụng tính năng khởi động, có thể là số lần khởi động và nếu số này vượt quá ngưỡng, ví dụ 3, bộ tải khởi động chọn khởi động ảnh khác (như hình ảnh được cấu hình để được khởi động được coi là bị lỗi). Điều này đảm bảo rằng hình ảnh bị hỏng hoàn toàn, hình ảnh được lưu trữ khác sẽ tự động được khởi động.
Rủi ro chính với lược đồ này là bạn nâng cấp lên hình ảnh có cơ chế nâng cấp bị hỏng. Thông thường, chúng tôi cũng thực hiện một số loại cơ chế phục hồi trong bộ nạp khởi động, sao cho bộ nạp khởi động có thể reflash một hệ thống hoàn toàn mới; mặc dù cơ chế cứu hộ này thường có nghĩa là phân vùng dữ liệu (được sử dụng để lưu trữ cấu hình, cơ sở dữ liệu, vv) cũng sẽ bị xóa. Đây là một phần cho an ninh (không rò rỉ thông tin) và một phần để đảm bảo rằng sau khi hoạt động cứu hộ này trạng thái hệ thống sẽ hoàn toàn được biết đến với chúng tôi. (Đó là một lợi ích lớn khi điều này được thực hiện bởi một kỹ thuật viên thiếu kinh nghiệm ở xa).
Tôi đang tìm cách sử dụng meta-swupdate trên Edison, nhưng đây là lần đầu tiên tôi sẽ sử dụng bất kỳ tác nhân cập nhật nào. Có bất kỳ bước nào mà tôi có thể làm theo để đạt được nó không? –