centos 7内核编译升级

由于公司有k8s和ceph集群混合部署的需求,需要将服务器的内核版本升级到4.(ceph推荐使用4.的内核)
centos 7官方维护的版本是3.10,第三方源(ELRepo)有最新的内核版本和长期维护版本(4.4)
地址: https://pkgs.org/search/?q=kernel

一、使用4.4的rpm包直接升级内核
升级完之后重启发现ceph有问题,cephfs挂载不上。google说是需要升级至4.10以上的内核

二、由于不想使用最新的5.*版本内核(怕不稳定),所以决定自己编译内核。

  1、centos官方维护了4.14的内核,不过基于aarch64架构的,所以根据文档重新编译了4.14 x86的内核版
  [https://wiki.centos.org/zh/HowTos/Custom_Kernel]
  内核源码: [http://vault.centos.org/7.6.1810/os/Source/SPackages/]
  在之前也尝试了编译4.18的代码 http://vault.centos.org/7.7.1908/updates/Source/SPackages/kernel-4.18.0-147.0.3.el7.src.rpm
  但是由于需要升级rpm版本,升级之后使用rpmbuild就无法找到依赖已安装的依赖,问题不了了之 : )

  2、使用上面的.config文件,编译linux官方的4.14长期维护版本 [https://www.kernel.org/](https://www.kernel.org/)
  参考文档: [https://www.linux.com/tutorials/how-compile-linux-kernel-0/]
  将上面的.config文件copy到编译目录,然后执行make oldconfig,补全差异的配置项,然后直接make rpm-pkg就行。

  注意:需要置空内核配置文件中的 CONFIG_SYSTEM_TRUSTED_KEYS 选项: CONFIG_SYSTEM_TRUSTED_KEYS=""
  不然编译会报错:
  make[3]: *** No rule to make target 'certs/rhel.pem', needed by 
  'certs/x509_certificate_list'. Stop.

  3、两个内核都能启动,哪个比较稳定还需要进一步测试

疑惑点和坑:
1、源码编译出来的rpm包比较大, 400多M,发行版的只有几十M
2、make menuconfig / make oldconfig的用法
3、rpm升级之后, rpm -qa 输出是空的,yum --version之后发现yum使用的rpm还是旧版本,估计和这个有关系

ps: 升级内核需要安装header、devel和kernel三个包,然后修改默认启动版本
查看所有安装的内核: awk -F' '2}' /etc/grub2.cfg
修改启动内核: grub2-set-default "CentOS Linux (4.14.160) 7 (Core)"
查看启动内核: grub2-editenv list

你可能感兴趣的:(centos 7内核编译升级)