Centos原始碼編譯升級指定核心版本
1.檢視當前核心版本:
使用的系統版本,當前日期CentOS最新版:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
檢視當前系統核心版本
[root@localhost ~]# uname -r
4.18.0-305.10.2.el8_4.x86_64
2.下載最新穩定版本的核心原始碼包到 /usr/src/kernels ,並解壓到當前目錄
[root@localhost ~]# tar -zxvf linux-5.11.tar.gz -C /usr/src/kernels/
3.從 /boot 目錄將現有版本的核心編譯config配置檔案拷過來到放到新的核心原始碼解壓目錄內並重命名為.config的隱藏檔案
[root@localhost ~]#cp -v /boot/config-4.18.0-305.3.1.el8.x86_64 /usr/src/kernels/linux-5.11/.config
4.安裝依賴包
[root@localhost ~]#yum -y groupinstall "development tools"
安裝ncurse-devel包 (make menuconfig 文字介面視窗依賴包)
[root@localhost ~]#yum -y install ncurses-devel
5.執行 [root@localhost /usr/src/kernels/linux-5.11/]#make menuconfig,
開啟文字介面的編譯選項選單視窗,可以對核心載入的模組編譯選項進行調整,如修改編譯後的核心名稱、新新增之前系統缺少的模組等。
這裡可以自定義核心特性,如果對核心不熟悉的話,直接使用tab鍵 選save 儲存,然後退出即可。
6.編譯核心
檢視本機核心數#lscpu 或者 nproc
這裡,如果不超過4核, -j 後面接cpu核心數量;超過4核,建議使用-j 4,嗯,穩一點
[root@localhost/usr/src/kernels/linux-5.11/]# make -j 4#根據CPU核數開啟多執行緒編譯以加快編譯速度
開始漫長的編譯過程,大概需要2小時左右,具體視CPU硬體的效能決定。
如果編譯開始提示錯誤,則可能需要預先安裝對應的元件包,例如:
[root@localhost/usr/src/kernels/linux-5.11/] yum -y install openssh-devel elfutils-libelf-devel bc
根據對應的錯誤提示,yum 方式安裝對應的元件包,部分元件包在epel源,所以需要預先配置好epel源倉庫。
(常見編譯出錯問題,見下一篇Kernel 原始碼升級問題指南)
7.編譯安裝模組
編譯完成後執行make modules_install 安裝核心模組(一般編譯的時候不出錯,後面就不會出錯的。)
[root@localhost/usr/src/kernels/linux-5.11/]make modules_install
8.[root@localhost/usr/src/kernels/linux-5.11/]make install
如需將新版本核心設定為預設啟動核心,可以使用此命令
[root@localhost/usr/src/kernels/linux-5.11/]grub2-set-default 0 #0表示 /boot/grub2/grub.cfg 檔案中排在第一位的 menuentry 段
9.安裝完後重啟裝置reboot
進入系統後,再檢視一下uname -r,已經是升級為指定核心版本。