與云系統(tǒng)不同,嵌入式系統(tǒng)在更新過程中更容易出現(xiàn)故障補丁或斷電,這可能會迅速將嵌入式設(shè)備變成磚塊或?qū)е缕湄撦d進入不穩(wěn)定狀態(tài)。通常,一個組織的唯一辦法是派一名嵌入式開發(fā)工程師手動修復問題或召回設(shè)備。然而,在容器及其便攜性和在更新設(shè)備組時應(yīng)用自動化的能力中可以找到一個更穩(wěn)定的選擇。
有人多次嘗試使用傳統(tǒng)的發(fā)行版,如Ubuntu
Core和Yocto,作為第三方以軟件包粒度貢獻軟件的地方,希望有一種方法能夠保持完全集成的像碼頭一樣的高質(zhì)量,如,發(fā)行版存儲庫,還可以獲得蓬勃發(fā)展的第三方生態(tài)系統(tǒng)的靈活性和創(chuàng)新性。但是已經(jīng)看到,使用“包”或“層”并不是使這種協(xié)作生態(tài)系統(tǒng)工作的正確粒度級別。
然而,使用Linux容器,現(xiàn)在可以將粒度保持在第三方可以作為完全工作單元交付組件的水平,如果操作正確,組件之間的相互依賴性將非常小。在云中,只有協(xié)議充當模塊的相互依賴關(guān)系,這允許更好地抽象和更容易地組合第三方組件,最終實現(xiàn)更完整的最終用戶體驗。
容器是輕量級的虛擬化軟件環(huán)境,在主機上運行應(yīng)用程序或操作系統(tǒng)的獨立實例,分配所需的資源。將發(fā)行版集裝箱化使其組件模塊化。然后,這些模塊可以用作構(gòu)建塊,并可用于構(gòu)建部署到設(shè)備組的專用發(fā)行版。在嵌入式開發(fā)中,容器通過可移植性和自動化徹底改變固件更新,允許應(yīng)用或回滾更新和關(guān)鍵補丁,而無需關(guān)閉整個系統(tǒng)。
Linux容器(LXC)持有答案
輕量級Linux容器(LXC)最適合將操作系統(tǒng)的系統(tǒng)級組件容器化。此外,LXC容器允許您獨立地安全地更新發(fā)行版的各個組件,而不必冒完全系統(tǒng)故障的風險。他們通過在設(shè)備中創(chuàng)建分區(qū)并在每個分區(qū)中運行Linux操作系統(tǒng)的實例來實現(xiàn)這一點——一個實例運行舊軟件,另一個實例安裝新軟件。這樣,如果安裝了有缺陷的更新,或者在更新中途斷電,系統(tǒng)可以很容易地在第一時間回滾到軟件的前一版本,而不會損害嵌入式設(shè)備的功能或?qū)⑵渥兂纱u塊。
希望升級其物聯(lián)網(wǎng)基礎(chǔ)設(shè)施的公司必須設(shè)計嵌入式系統(tǒng),以處理DevOps等現(xiàn)代軟件交付方法。容器對于這一轉(zhuǎn)變至關(guān)重要,并確保企業(yè)能夠推出更新,以確保其物聯(lián)網(wǎng)設(shè)備免受攻擊,并與最新的尖端嵌入式開發(fā)保持同步,而不會出現(xiàn)代價高昂的故障或更糟糕的安全漏洞。