CentOS7 升級內核到 4.4 以上版本時重啟無法進入系統


摘要: CentOS 7.3 從內核 3.10.0 升級到 4.14.40 后,重啟進不了系統,原因是 Linux 內核 4.4.x 版本之后,dracut 命令生成的 initramfs 默認不會自動加載 mpt3sas 驅動模塊。因為沒有對應的驅動程序,所以識別不了系統盤(兩塊 SAS 系統盤接在 LSI 2308 HBA 卡上,創建 RAID 1),從而導致內核 vmlinuz 無法加載它的 rootfs(根文件系統)

 

1. 現象描述

使用 CentOS-7-x86_64-DVD-1611.iso 原版 ISO 光盤安裝了 CentOS-7.3 后,默認的 Linux內核 版本是 3.10.0-514.el7.x86_64

下載並安裝以下兩個 RPM 包,將內核升級到 4.14.40

  • kernel-4.14.40-1.x86_64.rpm
  • kernel-headers-4.14.40-1.x86_64.rpm

重啟系統,等了半天系統沒啟動成功,發現一直卡在進度條。按 ESC 鍵查看詳細信息如下:

既然能顯示 GRUB2 的引導菜單(都到進度條了,肯定過了引導菜單),說明 MBR 和 GRUB2 沒有問題,那么問題應該是 initramfs 中沒有系統盤的驅動程序(需要 mpt2sas),導致內核 vmlinuz 無法加載它的 rootfs(根文件系統)。不能使用 單用戶模式,因為進不去,systemd不可能啟動起來,自然進不了單用戶模式,那只能使用安裝光盤的 救援模式 了

2. 問題解決
 
2.1 救援模式

我們需要利用原版 ISO 光盤所提供的 Rescure a CentOS Linux system(救援模式)來重建 initramfs

插入光盤后,設置 Boot Sequence(啟動順序),選擇從光盤啟動:

選擇 Troubleshooting(故障排除)

選擇 Rescure a CentOS Linux system

輸入數字 1,即選擇 1) Continue

按 Enter 回車鍵:

2.2 重建 initramfs
(1) chroot

df 查看目錄,執行命令:chroot /mnt/sysimage (切換根目錄)

查看已安裝的 Linux 內核版本

•使用rpm -qa kernel*或rpm -qa | grep -i kernel命令

•ps:如果前面那個命令后面不加 * 號,是查不到新安裝的內核的

查看默認啟動內核是否更改成功

•使用grub2-editenv list命令

查詢initramfs的驅動

[root@lab103 lab103]# lsinitrd -k 3.10.0-327.el7.x86_64|grep mpt

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

可以在4.x內核中看到可以看到在3.10內核的時候是mpt2sas驅動

新版的內核已經把mpt2sas升級為mpt3sas

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

查詢initramfs內的模塊

lsinitrd -k 4.14.113-1.el7.x86_64|grep mpt3

可以看到並沒有輸出,說明initramfs並沒有把這個驅動打進去

 

(2) add kernel module

這個地方有兩種方式來解決

方法一:

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

add_drivers+="mpt3sas"

重新生成initramfs,注意后面要加內核的版本號

dracut -f /boot/initramfs-4.14.113-1.el7.x86_64.img 4.14.113-1.el7.x86_64

強制加載驅動方法二:
dracut --force --add-drivers mpt3sas --kver=4.14.113-1.el7.x86_64
lsinitrd -k 4.14.113-1.el7.x86_64|grep mpt3

以上方法二選一做下驅動的集成,然后做下面的檢查

如果有輸出就是正常了的

然后重啟操作系統即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM