阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS8 Stream编译安装最新的Linux Kernel 6.0 rc3

65次阅读
没有评论

共计 2900 个字符,预计需要花费 8 分钟才能阅读完成。

导读 现在还有不少机器是 CentOS8 Stream 系统,虽然上了贼船,不影响用就是了。8 的编译和 7 大同小异,只是踩了更多的坑在这里记录一下,或许会帮到看到的朋友。

CentOS8 Stream 编译安装最新的 Linux Kernel 6.0 rc3

安装编译环境
CentOS8 安装必要的包
yum groupinstall "Development Tools" -y \
yum install openssl-devel epel-release -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 ncurses-devel -y
yum install  ncurses-devel -y \
yum install  bc -y \
yum install python3 -y \
yum install rsync -y \
yum -y install rpm-build
下载最新的 Linux Kernel6.0 rc3

(CentOS8 Stream 无需切换 gcc 版本)从 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

编译内核需要硬盘 50G 左右的空间!!!

配置 config

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

通过 menuconfig
make menuconfig

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

cat  .config // 查看有没有正确保存
根据现有内核拷贝生成 config

也可通过现有内核参数生成的新参数文件.config。要注意 /boot/config-3.10.0-957.el7.x86_64,就是 /boot/ 目录下面这个相似的目录。或许不同 CentOS8 Stream 的路径名不同。要根据实际机器的目录改动。

cp /boot/config-3.10.0-957.el7.x86_64 ./.config
make oldconfig // 操作这里要一路回车
cat  .config
修改.config

上面两个生成.config 的操作,二选一即可,一般选第一个 1 然后全部保存默认。在 CentOS8 Steam 实际编译过程中,会有两个参数导致编译失败,这里可以提前修改避免这个问题。

修改参数 1

打开.config,找到

CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"

不要删除这行配置,将这行配置引号内的内容清空即可,即

CONFIG_SYSTEM_TRUSTED_KEYS=""

如果没改,编译过程中可能会导致下面报错:
.make[1]: *** No rule to make target 'certs/rhel.pem', needed by 'certs/x509_certificate_list'. Stop.
make: *** [Makefile:1729: certs] Error 2

修改参数 2

将.config 中

CONFIG_DEBUG_INFO_BTF=y

参数由 y 改为 n, 即

CONFIG_DEBUG_INFO_BTF=n

如果没改,编译过程中可能会导致下面报错:

.BTF: .tmp_vmlinux.btf: pahole (pahole) is not available Failed to generate BTF for vmlinux Try to disable CONFIG_DEBUG_INFO_BTF make: *** [Makefile:1113: vmlinux] Error 1
执行编译

我要再再提醒你一次,金箍戴上以后,你再也不是一个凡人,执行以下命令,你将又是一个编译 Linux 内核的人。-j12 视具体情况修改。

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 8 Stream 机器上直接安装,免去了以上繁琐的手动编译的过程。在当前目录 linux-6.0-rc3 下执行:

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

如果需要压缩体积,可以将 make rpm-pkg -j32 换成 make INSTALL_MOD_STRIP=1 rpm-pkg -j32。

这条命令又会执行一会。执行完不出意外,会在系统的~/rpmbuild/RPMS/x86_64/ 目录下出现三个 rpm 安装包。

[root@localhost x86_64]# ll -h
总用量 487M
-rw-r--r--. 1 root root 308M 9 月   1 10:53 kernel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root 177M 9 月   1 10:54 kernel-devel-6.0.0_rc3-1.x86_64.rpm
-rw-r--r--. 1 root root 1.5M 9 月   1 10:53 kernel-headers-6.0.0_rc3-1.x86_64.rpm

在其他机器 CentOS8 Stream 上安装 (yum localinstall kern* -y)or dnf 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

这是我打包好的三个适用 CentOS8 Stearmrpm 包,有兴趣的朋友可以下载安装试试。不做任何可靠保证,请避免在生产环境上直接使用。
CentOS8 Stream 编译安装最新的 Linux Kernel 6.0 rc3

正文完
星哥说事-微信公众号
post-qrcode
 1
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2900字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中