Kernel
為嵌入式設備選擇核心版本時需要考慮哪些因素?
我使用 buildroot 成功創建了核心、根文件系統和交叉編譯器,使我能夠編寫應用程式碼以在嵌入式設備上執行。目前我不需要編寫設備驅動程序,目前也不知道如何去做,但很可能將來我可能需要這樣做。根據我的研究,我了解到核心 API 可以在版本之間更改,並且編寫設備驅動程序是特定於核心版本的,這與編寫使用者級應用程序不同。基本上我想知道:
- 以上是正確的嗎?
- 在決定使用什麼核心版本時需要考慮哪些因素?
我問的原因是,從我讀過的所有關於這個主題的文獻(以及嵌入式 linux 課程的出席情況)中,都涉及到 2.6.x 版本的核心。我正在使用 3.6.11 核心通過嵌入式系統建構,但我想知道為什麼課程和文獻似乎處理這些舊核心。使用舊核心有什麼好處,還是使用新版本有缺點?
3.x 只是 2.x 的延續——Linus 一度認為版本的“x”部分太大了。一般來說,您可能想要相當新的核心,可能是一個標記為“longterm”的核心。很大程度上也取決於您的應用程序 - 雖然核心中的遠端安全漏洞相當少,但本地問題更為普遍。
選擇核心是一個約束性問題:
- 核心必須足夠新以可靠地支持您正在執行的硬體(即:NIC 驅動程序)
- 核心必須足夠新以可靠地支持您計劃使用的軟體功能(即:iptables)
- 核心必須足夠新以消除盡可能多的漏洞
- 核心必須足夠老才能被證明是可靠的(有“出血邊緣”之類的東西)
- 核心必須是可以接收長期更新的系列(除非它是一個一旦部署就沒有機會更新的系統,那沒關係,但你必須更加重視#4和#3)
瀏覽完該列表後,實際滿足您需求的核心列表往往非常少,因此解決方案往往很清楚。