Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 內核編譯升級全流程實戰指南:從源碼下載到啟動配置

編輯:Linux 教學

Linux 內核升級可獲得最新硬件支持、文件系統特性、安全補丁及性能優化。本文以升級至 linux-3.19-rc4 為例,詳細記錄從內核源碼獲取、依賴安裝、配置、編譯、安裝至啟動項更新的完整實戰流程,適用於 CentOS/RHEL 系列發行版。

一、準備工作:獲取源碼與安裝構建依賴

  1. 下載內核源碼:
    推薦從 kernel.org 獲取最新穩定版或長期支持版 (LTS)。
    示例:wget https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.19-rc4.tar.xz
    註:國內網絡 wget 較慢,可本地下載 (迅雷/IDM) 後 scp 上傳。
  2. 解壓並移動至標準目錄:
    tar -xf linux-3.19-rc4.tar.xz
    mv linux-3.19-rc4 /usr/src/
    cd /usr/src/linux-3.19-rc4
  3. 更新系統並安裝編譯工具鏈與依賴庫 (CentOS/RHEL):
    yum update -y
    yum install -y gcc make ncurses-devel openssl-devel elfutils-libelf-devel flex bison bc
    完整依賴組 (編譯報錯時補裝):
    yum groupinstall -y "Development Tools"
    yum install -y qt-devel hmaccalc zlib-devel binutils-devel

二、配置內核選項 (關鍵步驟)

  1. 查看當前運行內核版本:
    uname -r
  2. 基於當前配置生成新配置 (推薦,保留現有硬件支持):
    cp /boot/config-$(uname -r) .config
    make olddefconfig
    或交互式微調:
    make menuconfig (需 ncurses-devel)
    說明:make olddefconfig 自動將新增選項設為預設值,無需人工干預,最適合版本升級。

三、編譯內核與模組

多核並行編譯大幅提速 (假設 8 核心):

# 編譯內核映像 (bzImage)
make -j8 bzImage

# 編譯模組
make -j8 modules

# 安裝模組至 /lib/modules/$(kernel_version)/
make -j8 modules_install

注意:-jN N 通常為 CPU 邏輯核心數 +1。編譯時間視硬件而定 (通常 10-40 分鐘)。

四、安裝內核並更新啟動配置

# 安裝內核映像、System.map、config 至 /boot,生成 initramfs,更新 grub
make install

make install 會自動調用 /sbin/installkernel 腳本,完成:

  • 複製 arch/x86/boot/bzImage → /boot/vmlinuz-3.19-rc4
  • 複製 System.map → /boot/System.map-3.19-rc4
  • 複製 .config → /boot/config-3.19-rc4
  • 執行 dracut 或 mkinitrd 生成 /boot/initramfs-3.19-rc4.img (含啟動必需驅動)
  • 更新 /boot/grub2/grub.cfg (或 grub.cfg) 添加新啟動項

五、驗證與啟動

  1. 檢查啟動項:
    grep menuentry /boot/grub2/grub.cfg
  2. 設置新內核為預設啟動 (可選):
    grub2-set-default 'CentOS Linux (3.19-rc4) 7 (Core)'
  3. 重啟系統:
    reboot
  4. 進入系統後驗證:
    uname -r 應輸出 3.19-rc4

六、常見問題與避坑指南

問題原因與對策
編譯報錯 openssl/ssl.h not found缺少 openssl-devel,yum install openssl-devel
編譯報錯 elfutils/libelf.h not found缺少 elfutils-libelf-devel
啟動進入 dracut 急救模式 / 找不到根設備initramfs 缺少存儲/文件系統驅動。make menuconfig 將對應驅動 (如 CONFIG_BLK_DEV_SD, CONFIG_EXT4_FS, CONFIG_XFS_FS, CONFIG_NVME_CORE) 設為 =y (內建),而非 =m (模組)。重新編譯安裝。
虛擬機 (VMware/VirtualBox) 掛載共享目錄失效需重新安裝 VMware Tools / VirtualBox Guest Additions (內核版本變更需重編譯內核模組)。
第三方驅動 (NVIDIA、Docker ZFS 等) 失效需對新內核重新編譯安裝 DKMS 模組:dkms autoinstall -k 3.19-rc4。

七、總結最佳實踐

  1. 優選 LTS 版本 (如 5.15, 6.1, 6.6) 獲取長期安全維護。
  2. 備份舊內核:升級前備份 /boot/vmlinuz-*, /boot/initramfs-*, /lib/modules/$(uname -r)/,保留 GRUB 舊啟動項便於回滾。
  3. 使用 make olddefconfig 繼承現有配置,避免手動配置遺漏關鍵驅動。
  4. 模組內建關鍵驅動 (存儲控制器、根文件系統、網卡) 避免 initramfs 缺失導致無法啟動。
  5. 生產環境先測試:在測試機/預發環境完整驗證業務應用相容性後再推廣。
Copyright © Windows教程網 All Rights Reserved