優化嵌入式Linux的啟動時間之核心

2021-10-03 13:56:32 字數 1349 閱讀 8373

1.2 使用核心啟**進行有目的的優化

使用initcall_debug可以生成啟**,從而輕鬆檢視哪些核心初始化函式需要最多時間來執行。

1.3 減小核心尺寸

首先,我們專注於在不刪除功能的情況下縮小尺寸

然後考慮核心壓縮的方式:

根據儲存讀取速度和cpu解壓縮核心之間的平衡,需要對不同的壓縮演算法進行測試。還建議在核心優化過程結束時嘗試壓縮選項,因為結果可能會因核心大小而異。

在基於ti am335x (arm), 1 ghz, linux 5.1測試:

lzo和gzip似乎是最好的解決方案。 但這結果取決於儲存和cpu效能,故在決定方案是務必進行測試。

另外核心的編譯選項也有可以優化的可能:

1.4 延遲驅動程式和初始化呼叫

如果有點功能無法編譯為模組(例如,網路或模組子系統),可以嘗試推遲執行。核心不會縮小,但某些初始化將被推遲,所以啟動變快。通常,您可以修改probe()函式以返回-eprobe_defer,直到它們準備好執行為止。

有關支援此功能的詳細資訊,請參見

1.5 關閉控制台輸出

控制台輸出實際上要花費很多時間(非常慢的裝置)。 產品中可能不需要。通過在核心命令列中傳遞quiet引數來禁用它。但仍然可以使用dmesg獲取核心訊息。這一步一般建議等最後一步再做,否則將損失控制台進行除錯。

1.6 預置jiffy

每次引導時,linux核心都會校準延遲迴圈(用於udelay()函式)。這將測量每個jiff y(lpj)值的迴圈次數。只需要測量一次!在核心啟動訊息中找到 lpj值:

calibrating delay loop… 996.14 bogomips (lpj=4980736)

然後將lpj = 新增到核心命令列:

calibrating delay loop (skipped) preset value… 996.14 bogomips (lpj=4980736)

1.7 多處理器

smp初始化很慢,即使您只有乙個核心cpu,通常也會在預設配置中啟用它(預設配置應支援多個系統)。因此,如果只有乙個cpu核心,請確保將其禁用。beaglebone black上的結果:壓縮核心大小:-188 kb

要節省最後的毫秒數,您可能需要刪除不必要的功能:

![在這裡插入描述](

優化嵌入式Linux的啟動時間之檔案系統

1.檔案系統 不同的儲存介質會採用不同的檔案系統 2 raw 快閃儲存器 jffs2 yaffs2 ubifs ubiblock squashfs 對於塊檔案系統,特性各異 1.1.jffs2 用於raw flash 1.3 yaffs2 用於raw flash 1.4.ubifs 用於raw fl...

嵌入式Linux啟動時間優化的秘密之二檔案系統

0我們繼續上篇沒有講完的嵌入式linux 1.檔案系統 介質會採用不同的檔案系統 1 塊儲存介質 包括儲存卡,emmc ext2,ext3,ext4 sbtrfs f2fs squashfs 2 raw 快閃儲存器 jffs2 yaffs2 subiblock squashfs 對於塊檔案系統,特性...

嵌入式 Linux 與linux啟動時自動載入模組

一 在arm linux 下,一般而言,產品在啟動的過程中應該載入模組,最簡單的方法是修改啟動過程的rc指令碼 etc init.d rcs 增加ismod ko這個命令。例如 載入 lib modules 2.6.26.5 s3c2410 buttons cd lib modules 2.6.26...