CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3

夢共裡醉發表於2022-12-03
哪個男孩不想手動編譯一份自己的核心呢?

CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3

安裝編譯環境
7安裝必要的包
yum groupinstall "Development Tools" -y &&
yum install openssl-devel -y &&
yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto -y &&
yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel -y &&
yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel -y
CentOS7更新gcc版本

必須升級gcc版本,centOS7自帶的gcc版本是4.8.5,編譯核心會出錯

 sudo yum install centos-release-scl -y &&
 sudo yum install devtoolset-8-gcc* -y &&
 scl enable devtoolset-8 bash

永久替換舊的gcc( 可選操作 )

mv /usr/bin/gcc /usr/bin/gcc-4.8.5 &&
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc &&
mv /usr/bin/g++ /usr/bin/g++-4.8.5 &&
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
下載最新的  Kernel6.0 rc3

從kernel.org下載6.0 rc3 的壓縮包有203MB,由於國內網路的特殊情況下載會非常的慢,請自備加速手段或者耐心。

 wget 
tar zxvf linux-6.0-rc3.tar.gz
cd linux-6.0-rc3
配置config

以下配置config檔案的操作二選一,如果拿不準就選擇第一個,有圖形配置介面的。編輯config檔案可以選定編譯過中需要的核心模組或者元件。不懂不知道就全程預設。

透過menuconfig
make menuconfig

 linux-6.0-rc3 目錄下敲這個 ,會進去一個配置介面,如果看不懂就保持預設配置,就按右方向鍵選定 save 然後回車,根據提示儲存.config檔案,
CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3

cat  .config //檢視有沒有正確儲存
根據現有核心複製生成config

也可透過現有核心引數去生成新的配置引數檔案.config 。要注意  /boot/config-3.10.0-957.el7.x86_64,就是/boot/目錄下面這個相似的目錄。或許不同CentOS7的路徑名不同。要根據實際機器的目錄改動。

cp /boot/config-3.10.0-957.el7.x86_64 ./.config
make oldconfig //操作這裡要一路回車
cat  .config
執行編譯

我要再提醒你一次,金箍戴上以後,你再也不是一個凡人,執行以下 ,你將是一個編譯Linux核心的人。-j12引數是因為我給虛擬機器分配了12核,讓這12核別閒著。根據自己機器的情況改成 -j6、 -j8甚至 -j100都行。自行測試胡改的後果。編譯過程費時費力,看編譯機器的效能。假如是1C1G的雲伺服器執行編譯,可以先去睡一覺。

make -j12 all

上面命令跑完後,核心模組如果沒有特殊需求,可以把核心模組的debug資訊給去掉,節約點硬碟空間。

make INSTALL_MOD_STRIP=1 modules_install > /dev/null &&
make modules_install &&
make install

設定預設新的kernel啟動

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg &&
sudo grub2-set-default 0 &&
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
編譯成rpm包

編譯出單獨的通用RPM包可以在其他的CentOS 7機器上直接安裝,免去了以上繁瑣的手動編譯的過程。
在當前目錄  linux-6.0-rc3 下執行 :

yum -y install rpm-build && make rpm-pkg -j32

如果需要壓縮體積,可以將make rpm-pkg -j32 換成 make INSTALL_MOD_STRIP=1 rpm-pkg 。

這條命令又會執行一會。執行完不出意外,會在系統的 ~/rpmbuild/RPMS/x86_64/ 目錄下出現三個rpm安裝包。

-rw-r--r--. 1 root root  69354600 8月  31 19:46 kernel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root 179586568 8月  31 19:48 kernel-devel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root   1545516 8月  31 19:47 kernel-headers-6.0.0_rc3-1.x86_64.rpm

在其他機器CentOS7上安裝( yum localinstall kern* -y)這三個rpm包就行可以更新核心了。三個包裝完還要更新一下啟動項。

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg &&
sudo grub2-set-default 0 &&
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

這是我打包好的三個 。不做任何可靠保證,請避免在生產環境上直接使用。
CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3CentOS7 編譯安裝最新的Linux Kernel 6.0 rc3


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2926596/,如需轉載,請註明出處,否則將追究法律責任。

相關文章