鳥哥 Linux 私房菜剛出版的時候,好像人人會手動編譯內核。我雖然用 Arch Linux 好多年了,但一直從來沒有試過手動編譯內核並替換掉原來的。

今天由於需要用 SystemTap/FlameGraph 做 profile, 得用上定製的內核,終於要到手動編譯內核的時候了;此外我記得有些定製的內核還能更節電,節約硬碟空間什麼的。


有次搞個測試(比較久了,記得大約跟iptable有關),當時的通用幾個linux發行商的版本還沒有用到3.0.0以上版本的內核,但這測試需要3.0.0以上版本的內核,於是就從http://kernel.org下載了一個達到要求的內核版本(沒敢使用最新的),編譯並引導,居然成功了,進入登錄提示符時有個提示,但不嚴重,系通也正常運行。


1. 需要用到新特性的時候。比如你是 Ryzen 用戶,但農企 Ryzen 處理器不支持你的 4.8 內核,而發行版官方並沒有提供更新版本的內核安裝包,那麼你需要自己編譯內核。

2. 嫌原來內核太臃腫的。發行商編譯內核時為了保證兼容性,往往會在 config 時加入不少東西,這些東西你可能不需要,那麼就可以通過重新編譯內核來去掉這些多餘的玩意。

3. 自己 DIY GNU/Linux,這個不用多說,比如 LFS、Gentoo 。

題外話:題主既然是 arch 用戶,那麼個人認為就沒必要編譯內核了—— 反正 pacman -Syu 就能嘗到新東西 —— 而且 arch 內核也沒那麼臃腫。


就問題回答問題的話,基本很少情況下需要手動編譯內核了,因為內核大半驅動代碼是可以以模塊的方式載入和卸載的,即使不是驅動的代碼也不一定需要重新編譯內核比如可以使用 Oracle Ksplice 打熱補丁,可以看他相關的論文,實驗中很長一段時間內的內核補丁80%都可以打上,所以內核基本上就不需要重啟就很長時間都能更新了....

基本上就是題主的這種情況,需要改預編譯參數換一些feature.

PS: 整個業界都在想辦法不去編譯內核來換內核,手動編譯內核就看起來像鑽木取火了.

買了張二手陣列卡, 新版系統裝不上舊驅動, 發行版內核默認沒有這個陣列卡的驅動

自己編譯內核把驅動選上就能識別了


一般用戶可能不需要,但是像我們這些做 Linux 內核開發的,編譯內核是家常便飯。此外,像 BAT 這樣的大廠通常也會根據自己的需求定製大量的私有 patch,也需要自己編譯內核。
1.想用一些內核的新特性的時候2.通過編譯去掉一些不需要的特性,使內核更精簡,為自己所用3.有些時候一些不必要的特性也會導致安全問題,所以要去掉
工作需要的時候,比如改個協議棧。


推薦閱讀:
相關文章