解決 Linux Kernel 2.6 的龐大體積

Linux Kernel 2.6 在設計上進步太多太多了,讓許多人急於跟進。但應該有人會發現,當 2.6 版的 kernel 編譯好後,他的 Modules 居然有快 400mb!真的是技術進步,身材也跟著進步了呢!

解決辦法就是用 strip 指令去縮小他。但很多人應該都試過,如果用 strip 去減少模組的大小,這些被處理過的模組都會壞掉不能使用。其實,並不是不能用 strip ,而是要有條件的用,以免刪到模組中重要的東西。你可以使用以下指令可以在不破壞模組程式下,將模組的體積縮小:

strip -g -S -d *.ko

PS. 關於 strip 有許多 Options,可以自行查閱。

後記

雖然 Linux 核心的模組選單中有自動 strip 模組的項目,但我發現並不是一定有效果,往往就算勾選,最後也是沒有做 strip 的動作。所以,在預設 strip 沒效果的情況下,就可以使用 find 指令搭配上述 strip 方法,縮減模組的體積。

留言

  1. 太感謝了, 我也一直為了編譯kernel 後, 發現所有的 modules 都變肥了而苦惱, 因為要將一些必要的 modules 放進 initrd.img 當中, 如果沒有瘦身, 擺得進去也開不了機了, 哈.

    回覆刪除

張貼留言

這個網誌中的熱門文章

有趣的邏輯問題:是誰在說謊

Web 技術中的 Session 是什麼?

淺談 USB 通訊架構之定義(二)

淺談 USB 通訊架構之定義(一)

Reverse SSH Tunnel 反向打洞實錄