編譯內核前需安裝必要的工具鏈和依賴庫,確保系統具備構建能力。常用命令如下:
# 安裝基礎開發工具組(含make、gcc等)
sudo yum groupinstall "Development Tools" -y
# 安裝內核編譯關鍵依賴(OpenSSL、NCurses、Elfutils等)
sudo yum install -y openssl-devel ncurses-devel elfutils-libelf-devel bison flex
這些工具用于解析內核配置、編譯源碼及生成引導文件。
CentOS默認GCC版本(如7.6)可能較舊,無法支持新內核特性。建議升級至較新版本(如GCC 8+):
# 添加SCL源(Software Collections)
sudo yum install centos-release-scl -y
# 安裝Devtoolset(如GCC 8)
sudo yum install devtoolset-8-gcc* -y
# 啟用新GCC版本(臨時生效)
scl enable devtoolset-8 bash
# 永久替換舊GCC(可選)
mv /usr/bin/gcc /usr/bin/gcc-old
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
升級后需驗證版本:gcc --version
。
從官方或鏡像站點獲取內核源碼(推薦LTS版本,如6.9.4),解壓至指定目錄:
# 下載內核源碼(以6.9.4為例,使用清華鏡像加速)
wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.9.4.tar.gz
# 解壓源碼包
tar -xzf linux-6.9.4.tar.gz
# 進入源碼目錄
cd linux-6.9.4
注意:避免使用wget
直接下載未校驗的源碼,優先選擇鏡像站點或官方簽名包。
內核配置決定了功能模塊的包含與否,需根據需求調整:
# 復制當前系統內核配置(保留現有驅動和設置)
cp /boot/config-$(uname -r) .config
# 更新配置(基于現有配置,詢問新增選項)
make oldconfig
# 或通過圖形界面配置(需ncurses-devel)
make menuconfig
make oldconfig
:快速生成配置,適合基于現有內核升級;make menuconfig
:交互式配置,可手動啟用/禁用功能(如驅動、文件系統)。使用GCC并行編譯以提升速度(-j
參數指定CPU核心數,如-j4
):
# 編譯內核(并行編譯,節省時間)
make -j$(nproc)
# 編譯內核模塊(去除debug信息,減少體積)
make INSTALL_MOD_STRIP=1 modules_install
nproc
命令自動獲取CPU核心數,INSTALL_MOD_STRIP=1
可移除模塊中的調試符號,節省磁盤空間。
將編譯好的內核鏡像和模塊安裝至系統目錄:
# 安裝內核鏡像至/boot目錄
sudo make install
# 更新GRUB引導配置(CentOS 7/8均適用)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig
會自動檢測新內核,并將其添加至引導菜單。
若需將新內核設為默認啟動項,可通過GRUB配置調整:
# 查看內核啟動項順序(0為第一項)
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
# 設置默認啟動項(如第0項)
sudo grub2-set-default 0
重啟后系統將自動加載新內核。
重啟系統以加載新內核,驗證版本是否正確:
# 重啟系統
sudo reboot
# 檢查內核版本
uname -r
若輸出為新內核版本(如6.9.4
),則說明編譯安裝成功。
注意事項:
yum provides
命令查找并安裝對應包;/boot
目錄,可通過GRUB菜單選擇啟動,確保系統兼容性。