如何讓嵌入式 Linux 啟動更快?

如何讓嵌入式 Linux 啟動更快?

我的團隊正在為嵌入式 Linux 解決方案開發軟體。我們面臨的問題是系統需要太多時間才能準備好開始運行我們想要的應用程式(即加載Linux核心太多時間)。通常需要 38 到 43 秒才能完成。我們已經修改了內核配置,刪除了我們知道不需要的文件,但仍然需要這麼多時間。

我的問題:還有什麼辦法可以讓核心啟動更快(最好不要改變硬體)?嵌入式 Linux 充電需要這麼長時間正常嗎?是否可以要求 Linux 核心在內核充滿電之前啟動我們的應用程式?

系統是德州儀器奧馬哈L138

以下是核心啟動時終端中顯示的包含所有最相關訊息的影像。如果有人對我的問題沒有(一般)答案,但了解有助於提高核心啟動速度的其中一行,也請隨意回答!

第一部分 第二部分 第三方 第四部分 第五部分

答案1

在您的輸出中,實際載入核心的點是:

Init version 2.86 booting

這是 23 秒後。在那之後,在裡面,一個用戶空間進程,接管並開始用戶空間的配置,儘管這不可避免地會引起各種核心驅動程式的激活,可能包括載入適當的模組。

您還沒有說這是什麼平台,但是在例如 700 Mhz 單核樹莓派上,這大約是 4 秒。所以這還是很慢,表示有問題。

如果我們減去 0 到 19 秒之間的差距,您就會達到預期的結果。這個差距以關於 MII PHY 的評論結束——這是一個以太網設備驅動程式。如果可以在沒有網路的情況下啟動系統,您可以透過在核心之外配置乙太網路驅動程式來確認這一點,並看看是否會init更快。

23 秒後,主要瓶頸可能是根檔案系統上的 I/O。由於某種原因,25 到 30 秒之間有 5 秒的間隙,最後有關於 FAT 檔案系統錯誤的註釋。事實上,那裡有一些 fs 錯誤。這意味著 init 系統正在嘗試掛載不存在的檔案系統,這將浪費時間。

在 33 到 37 秒之間,您會出現更多錯誤,表示涉及的錯誤檔案系統如何排列和/或依賴於此的軟體如何配置。這些依賴項之一可能是一個 tmpfs 檔案系統,應該在 RAM 中建立但失敗了(因此在/var/和中缺少檔案/tmp)。/etc/fstab如果這裡的要點不清楚,您可以提出一個單獨的問題,並要求某人解釋。

相關內容