為什么要自己編譯內核
優點
- 定制化:你可以根據自己的硬件和需求配置內核,去掉不必要的模塊,優化性能。
- 性能優化:移除不需要的驅動程序和特性,減小內核體積,提高系統性能。
- 最新特性和修復:獲取最新的內核版本和特性,或者提前應用一些補丁。
- 學習機會:通過編譯內核,可以更深入地理解Linux的內部工作機制。
缺點
- 復雜性:編譯和配置內核需要較高的技術水平,過程復雜且容易出錯。
- 時間消耗:編譯內核是一個耗時的過程,尤其是在資源有限的系統上。
- 維護成本:自己編譯的內核需要手動更新和維護,缺乏自動化工具的支持。
- 兼容性問題:手動配置不當可能導致硬件或軟件兼容性問題,需要仔細測試。
我的感受是
- 了解到內核相關的知識。
- 提前使用到最新版本的內核,不用等論壇大佬的更新:
- 內核體積大大縮小:
過程
下載
網站下載linux內核源碼[^1] [^2],并解壓,進入源碼目錄;
https://www.kernel.org/
https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/
安裝依賴
參考腳本安裝依賴[^3];
sudo apt install git wget fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison zstd debhelper
配置文件
- 使用現有配置文件dppve.config[^3]
cp /xxx/dppve.config .config
- 精簡(可選)
先讓系統盡可能多地加載模塊,使用工具自動保留已加載的模塊[^5] [^6];
make localmodconfig
- 手動調整配置(可選)
make menuconfig
- 使用ccache加速多次編譯(可選)
安裝配置ccache[^7] [^8];
sudo apt-get install ccache
export CC="ccache gcc"
export CXX="ccache g++"
編譯
這個步驟很慢,網友講可能需要1-3個小時;
可能是我直接在實體機上編譯的原因,我第一次編譯大約花費25分鐘;
經過localmodconfig、ccache后,后續編譯時間一般在2-8分鐘,感覺很快;
make -j$(nproc)
打包deb
make bindeb-pkg
安裝文件在源碼文件夾同級目錄生成
默認配置生成的linux-image deb文件約80M,localmodconfig后約20M;
安裝
安裝軟件包[^9],linux-libc-dev可不安裝;
# 查看
ls -lh ../linux-*.deb
# 安裝
dpkg -i ../linux-*.deb
啟用
可使用grub-customizer管理grub配置,更換內核加載
列表
設置
References
[^1]. The Linux kernel archives. (n.d.). https://www.kernel.org/
[^2]. 8.10. 編譯內核. (n.d.). https://www.debian.org/doc/manuals/debian-handbook/sect.kernel-compilation.zh-cn.html
[^3]. kernel_config · AtomGit_開放原子開源基金會代碼托管平臺. (n.d.). https://atomgit.com/fslong/kernel_config/
[^4]. Kernelconfig.io. (n.d.). https://www.kernelconfig.io/index.html
[^5]. Linux 內核編譯 —— make localmodconfig 簡化內核配置流程-CSDN博客. (n.d.). https://blog.csdn.net/maijian/article/details/6202426
[^6]. 精簡LINUX內核配置及快速編譯的方法匯總_linux 最小配置 快速編譯-CSDN博客. (n.d.). https://blog.csdn.net/exiaoqian/article/details/42522653
[^7]. 使用 ccache 加速內核編譯. (n.d.). https://www.expoli.tech/articles/2023/07/06/Use-ccache-to-speed-up-kernel-compilation
[^8]. Linux 5.10.20 上使用ccache加快內核編譯速度(安裝配置及使用方法)_kernel-5.10編譯慢-CSDN博客. (n.d.). https://blog.csdn.net/weixin_48299611/article/details/115563624
[^9]. 查看、安裝、卸載內核-論壇-深度科技. (n.d.). https://bbs.deepin.org/post/243646