centos升级内核启动失败解决方法

发布时间:2020年12月16日 阅读:367 次

entOS 7 从内核 3.10.0 升级到 5.8.7后,重启不了,原因是 Linux 内核 4.4.x 版本之后,dracut 命令生成的 initramfs 默认不会自动加载 mpt3sas 驱动模块。因为没有对应的驱动程序,所以识别不了系统盘,从而导致内核 vmlinuz 无法加载它的 rootfs(根文件系统)。用5.8.7的启动时出现:

warning: /dev/disk/by-uuid/f0a7318c-da55-4ce4-8653-52fdae118b00 does not exist

starting Dracut Emergency Shell...

warning: /dev/disk/by-uuid/f0a7318c-da55-4ce4-8653-52fdae118b00 does not exist

Generating "/run/initramfs/rdsosreport.txt"

......................................

dracut:/#

解决过程

1. 查询3.10.0 initramfs的驱动


[root@localhost ~]# lsinitrd -k 3.10.0-957.el7.x86_64 | grep mpt[23]sas

drwxr-xr-x 2 root root 0 Nov 12 19:24 usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/scsi/mpt3sas

-rw-r--r-- 1 root root 92972 Nov 9 2018 usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/scsi/mpt3sas/mpt2sas.ko.xz

[root@localhost ~]#


可以看到在3.10内核的时候是mpt2sas驱动,可以在5.x内核中看到,新版的内核已经把mpt2sas升级为mpt3sas

[root@localhost ~]# ls /usr/lib/modules/5.8.7-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas/mpt3sas.ko

/usr/lib/modules/5.8.7-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas/mpt3sas.ko

[root@localhost ~]#

查询5.3.6 initramfs的驱动, 可以看到并没有输出,说明initramfs并没有把这个驱动打进去

[root@localhost ~]# lsinitrd -k 5.8.7-1.el7.elrepo.x86_64 | grep mpt[23]sas


2. 两种解决方法:

方法1:

1). 修改 /etc/dracut.conf文件,增加字段

sed -i '/#add_drivers+=""/aadd_drivers+="mpt3sas"' /etc/dracut.conf

2)重新生成initramfs

cd /boot/

mv initramfs-5.8.7-1.el7.elrepo.x86_64.img{,.bak}

dracut -f /boot/initramfs-5.8.7-1.el7.elrepo.x86_64.img 5.8.7-1.el7.elrepo.x86_64


方法2:

强制加载驱动

dracut --force --add-drivers mpt3sas --kver=5.8.7


以上方法二选一做下驱动的集成,然后做下面的检查

lsinitrd -k 5.8.7-1.el7.elrepo.x86_64 | grep mpt[23]sas

如果有输出就是正常了的, 然后重启操作系统即可


Tag:
相关文章

发表评论: