Centos6.5升级最新内核4.18的坑

升级流程

开发童鞋要搞BBR,然后让我在他的阿里云服务器上升级一下内核。我登进去一看,centos 6.5,内核还是2.6的。

之前我曾经搞过centos 7升级内核到最新版,文章在此:https://rorschachchan.github.io/2018/06/11/阿里云centos7升级内核过程/ 。centos6升级内核有几个地方不太一样,但是过程差不多。整个升级内核步骤如下:

1
2
3
4
5
先备份镜像,很重要!!!  而且备份镜像成功之前,云服务器不可以重启。
yum update -y
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #导入ELRepo GPG key
rpm -Uvh https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm #安装 6版本的ELRepo
yum --enablerepo=elrepo-kernel install kernel-ml -y #截至本文,最新的是4.18,lt版本是4.4

如果yum的时候有提示Warning: RPMDB altered outside of yum,只需要删除一下yum的历史记录即可:rm -rf /var/lib/yum/history/*.sqlite

安装完毕之后,vim /etc/grub.conf,把default改成0,即指定使用第一个内核启动,如图:
akb48

然后在阿里云控制台重启一下这个服务器即可。

无法启动?

可能有的人直接就启动成功了,因为网络上很多文章到此就结束了。但是我这台服务器,很不幸,出现了问题。在控制台上看服务器是“运行中”,但是无法ssh连接,而且ping也是失败。不一会,控制台的服务器就显示“已停止”,可见是内核出了问题。

联系了阿里的后台,他们反馈这个机器现在的状态是Module scsi_wait_scan not found,那知道了原因就对症下药吧,这个问题解决方法不止一个,我亲测以下的方法好使。

首先先用刚刚做的那个磁盘快照回滚到之前正常的状态,重新执行上面整个安装4.18的内核的所有操作,然后还要补充如下:

1
2
3
echo 'add_drivers+="virtio_blk"' >/etc/dracut.conf.d/force-vitio_blk-to-ensure-boot.conf
cp /boot/initramfs-4.18.5-1.el6.elrepo.x86_64.img /boot/initramfs-4.18.5-1.el6.elrepo.x86_64.img-bak #把新下载的4.18的img文件备份
dracut -f initramfs-4.18.5-1.el6.elrepo.x86_64.img 4.18.5-1.el6.elrepo.x86_64 #编译生成新的img,4.18.5-1.el6.elrepo.x86_64这个文件在/lib/modules/下

重新在阿里云控制台重启一下这个服务器,这一次就OK了。
akb48

发生异常的原因是:更新内核后,在写dracut程序时无法检测KVM's virtual disk driver "virtio_blk",此驱动被用于访问KVM虚拟磁盘,dracut没有正常添加新的initramfs module,导致系统没有磁盘访问驱动无法正常启动。

参考资料

https://bugzilla.kernel.org/show_bug.cgi?id=60758
https://opengers.github.io/linux/linux-source-code-compile-kernel-rpm/

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------