Linux 內核升級可獲得最新硬件支持、文件系統特性、安全補丁及性能優化。本文以升級至 linux-3.19-rc4 為例,詳細記錄從內核源碼獲取、依賴安裝、配置、編譯、安裝至啟動項更新的完整實戰流程,適用於 CentOS/RHEL 系列發行版。
wget https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.19-rc4.tar.xzscp 上傳。tar -xf linux-3.19-rc4.tar.xzmv linux-3.19-rc4 /usr/src/cd /usr/src/linux-3.19-rc4yum update -yyum install -y gcc make ncurses-devel openssl-devel elfutils-libelf-devel flex bison bcyum groupinstall -y "Development Tools"yum install -y qt-devel hmaccalc zlib-devel binutils-develuname -rcp /boot/config-$(uname -r) .configmake olddefconfigmake 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-rc4System.map → /boot/System.map-3.19-rc4.config → /boot/config-3.19-rc4dracut 或 mkinitrd 生成 /boot/initramfs-3.19-rc4.img (含啟動必需驅動)/boot/grub2/grub.cfg (或 grub.cfg) 添加新啟動項grep menuentry /boot/grub2/grub.cfggrub2-set-default 'CentOS Linux (3.19-rc4) 7 (Core)'rebootuname -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。 |
/boot/vmlinuz-*, /boot/initramfs-*, /lib/modules/$(uname -r)/,保留 GRUB 舊啟動項便於回滾。make olddefconfig 繼承現有配置,避免手動配置遺漏關鍵驅動。