下載 linux kernel 4.14 包(以 4.14 為例)
從 https://mirrors.edge.kernel.org/pub/linux/kernel 中找到 4.14.124 並下載
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.14.124.tar.gz
安裝一些編譯內核的依賴# yum install -y ncurses-devel elfutils-libelf-devel openssl-devel bc
安裝 rpm 編譯到依賴
# yum install -y gcc rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools
解壓 kernel 4.14 包
# tar -zxvf linux-4.14.124.tar.gz
選擇配置項,自定義內核編譯
執行 make menuconfig 將會彈出配置選項菜單,可定制化編譯的內核模塊,如果不打補丁,不做定制化需求,則直接 save 生成 .config 文件后 Exit 即可
l]# make menuconfig

編譯內核並生成 rpm 包
make rpm 執行會自動生成 *.spec 文件,編譯完后會自動生成 rmp 安裝包,編譯時間比較長,建議使用配置較大的機器進行編譯(4C16G的機器親測30分鍾內可編譯完,1C1G一天都夠嗆),磁盤空間要保持在20G以上
]# make rpm & # 或者 ]# make rpm-pkg &
編譯好后的 rmp 包路徑會有提示[root@aws-172-20-20-101 kernel]# cd /root/rpmbuild/RPMS/`uname -m`/
[root@aws-172-20-20-101 kernel]# tree RPMS/ RPMS/
└── i386
├── kernel-4.14.124.x86_64.rpm
├── kernel-devel-4.14.124.x86_64.rpm
└── kernel-headers-4.14.124.x86_64.rpm
安裝新編譯好的內核
編譯好后的 rpm 即可隨處使用了
]# rpm -Uvh kernel-*-*.rpm
安裝完成后設置 4.14 位默認啟動項
awk -F "'" '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
]# cat /boot/grub2/grub.cfg |grep menuentry if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" menuentry_id_option="" export menuentry_id_option menuentry 'CentOS Linux (4.14.124.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.3.2.el7.x86_64-advanced-8c1540fa-e2b4-407d-bcd1-59848a73e463' { menuentry 'CentOS Linux (3.10.0-957.12.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.3.2.el7.x86_64-advanced-8c1540fa-e2b4-407d-bcd1-59848a73e463' { menuentry 'CentOS Linux (3.10.0-862.3.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.3.2.el7.x86_64-advanced-8c1540fa-e2b4-407d-bcd1-59848a73e463' { menuentry 'CentOS Linux (0-rescue-b30d0f2110ac3807b210c19ede3ce88f) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-b30d0f2110ac3807b210c19ede3ce88f-advanced-8c1540fa-e2b4-407d-bcd1-59848a73e463’ {
設置默認啟動
]# grub2-set-default 'CentOS Linux (4.14.124.x86_64) 7 (Core)’
驗證
]# grub2-editenv list saved_entry=CentOS Linux (4.14.124.x86_64) 7 (Core)
重啟機器
]# reboot ***** ]# uname -r