美文网首页
CentOS7 编译安装最新的Linux Kernel 6.0

CentOS7 编译安装最新的Linux Kernel 6.0

作者: 老率的IT私房菜 | 来源:发表于2022-12-03 17:39 被阅读0次

    哪个男孩不想手动编译一份自己的内核呢?

    安装编译环境

    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,编译内核会出错

    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,由于国内网络的特殊情况下载会非常的慢,请自备加速手段或者耐心。

    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文件的操作二选一,如果拿不准就选择第一个,有图形配置界面的。编辑config文件可以选定编译过中需要的内核模块或者组件。不懂不知道就全程默认。

    通过menuconfig

    make menuconfig

    在 linux-6.0-rc3 目录下敲这个命令,会进去一个配置界面,如果看不懂就保持默认配置,就按右方向键选定 save 然后回车,根据提示保存.config文件,

    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

    这是我打包好的三个rpm包,有兴趣的朋友可以下载安装试试。不做任何可靠保证,请避免在生产环境上直接使用。

    相关文章

      网友评论

          本文标题:CentOS7 编译安装最新的Linux Kernel 6.0

          本文链接:https://www.haomeiwen.com/subject/qvyufdtx.html