Centos7升级内核后无法启动解决办法

前言

这个问题存在有一段时间了,之前做的centos7的ISO,在进行内核的升级以后就存在这个问题:

  • 系统盘在板载sata口上是可以正常启动新内核并且能识别面板硬盘
  • 系统盘插在面板口上新内核无法启动,调试发现无法找到系统盘
  • 系统盘插在面板上默认的3.10内核可以正常启动

暂时的解决办法就是让系统插在板载的sata口上,因为当时没找到具体的解决办法,在这个问题持续了一段时间后,最近再次搜索资料的时候,把问题定位在了initramfs内的驱动的问题,并且对问题进行了解决

解决过程

查询initramfs的驱动

1
2
3
[root@lab103 lab103]# lsinitrd -k 3.10.0-327.el7.x86_64|grep mpt[23]sas
drwxr-xr-x 2 root root 0 Apr 17 12:05 usr/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/scsi/mpt2sas
-rw-r--r-- 1 root root 337793 Nov 20 2015 usr/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko

可以看到在3.10内核的时候是mpt2sas驱动

可以在4.x内核中看到
新版的内核已经把mpt2sas升级为mpt3sas

1
/lib/modules/4.4.46/kernel/drivers/scsi/mpt3sas/mpt3sas.ko

查询initramfs内的模块

1
lsinitrd -k  4.4.46|grep mpt[23]sas

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

这个地方有两种方式来解决

方法一:

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

add_drivers+=” mpt3sas”

注意增加的模块前后都要加上空格,解析的地方不加空格会解析不到模块名称会报错

重新生成initramfs

1
dracut -f /boot/initramfs-4.4.46.img 4.4.46

方法二:

强制加载驱动

1
dracut --force --add-drivers mpt3sas --kver=4.4.46

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

1
lsinitrd -k  4.4.46|grep mpt[23]sas

如果有输出就是正常了的

然后重启操作系统即可

总结

目前出现这个问题的原因不清楚来自内核还是dracut生成的地方,如果遇到这个问题就按照上面的方法进行处理下即可,问题能找到解决办法后就会发现只是小问题,没找到的时候,完全不知道问题在哪里

变更记录

Why Who When
创建 武汉-运维-磨渣 2017-06-01