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

哪個男孩不想手動編譯一份自己的內(nèi)核呢?

安裝編譯環(huán)境

CentOS7安裝必要的包

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,編譯內(nèi)核會出錯

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++

下載最新的Linux?Kernel6.0 rc3

從kernel.org下載6.0 rc3 的壓縮包有203MB,由于國內(nèi)網(wǎng)絡(luò)的特殊情況下載會非常的慢,請自備加速手段或者耐心。

wget https://git.kernel.org/torvalds/t/linux-6.0-rc3.tar.gz

tar zxvf linux-6.0-rc3.tar.gz

cd linux-6.0-rc3

配置config

以下配置config文件的操作二選一,如果拿不準(zhǔn)就選擇第一個,有圖形配置界面的。編輯config文件可以選定編譯過中需要的內(nèi)核模塊或者組件。不懂不知道就全程默認。

通過menuconfig

make menuconfig

在?linux-6.0-rc3?目錄下敲這個命令,會進去一個配置界面,如果看不懂就保持默認配置,就按右方向鍵選定 save 然后回車,根據(jù)提示保存.config文件,

cat? .config //查看有沒有正確保存

根據(jù)現(xiàn)有內(nèi)核拷貝生成config

也可通過現(xiàn)有內(nèi)核參數(shù)去生成新的配置參數(shù)文件.config 。要注意?/boot/config-3.10.0-957.el7.x86_64,就是/boot/目錄下面這個相似的目錄?;蛟S不同CentOS7的路徑名不同。要根據(jù)實際機器的目錄改動。

cp /boot/config-3.10.0-957.el7.x86_64 ./.config

make oldconfig //操作這里要一路回車

cat? .config

執(zhí)行編譯

我要再提醒你一次,金箍戴上以后,你再也不是一個凡人,執(zhí)行以下命令,你將是一個編譯Linux內(nèi)核的人。-j12參數(shù)是因為我給虛擬機分配了12核,讓這12核別閑著。根據(jù)自己機器的情況改成 -j6、 -j8甚至 -j100都行。自行測試胡改的后果。編譯過程費時費力,看編譯機器的性能。假如是1C1G的云服務(wù)器執(zhí)行編譯,可以先去睡一覺。

make -j12 all

上面命令跑完后,內(nèi)核模塊如果沒有特殊需求,可以把內(nèi)核模塊的debug信息給去掉,節(jié)約點硬盤空間。

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

make modules_install &&

make install

設(shè)置默認新的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機器上直接安裝,免去了以上繁瑣的手動編譯的過程。

在當(dāng)前目錄?linux-6.0-rc3?下執(zhí)行 :

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

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

這條命令又會執(zhí)行一會。執(zhí)行完不出意外,會在系統(tǒng)的~/rpmbuild/RPMS/x86_64/?目錄下出現(xiàn)三個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包就行可以更新內(nèi)核了。三個包裝完還要更新一下啟動項。

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包,有興趣的朋友可以下載安裝試試。不做任何可靠保證,請避免在生產(chǎn)環(huán)境上直接使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容