記一次CentOS 7.6內核升級(5.9.6)及故障總結


導入源

# rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 查看kernrl版本
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: syd.mirror.rackspace.com
Available Packages
elrepo-release.noarch                                                    7.0-5.el7.elrepo                                            elrepo-kernel
kernel-lt.x86_64                                                         4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-devel.x86_64                                                   4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-doc.noarch                                                     4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-headers.x86_64                                                 4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-tools.x86_64                                                   4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-tools-libs.x86_64                                              4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                                        4.4.241-1.el7.elrepo                                        elrepo-kernel
kernel-ml-doc.noarch                                                     5.9.6-1.el7.elrepo                                          elrepo-kernel
kernel-ml-headers.x86_64                                                 5.9.6-1.el7.elrepo                                          elrepo-kernel
kernel-ml-tools.x86_64                                                   5.9.6-1.el7.elrepo                                          elrepo-kernel
kernel-ml-tools-libs.x86_64                                              5.9.6-1.el7.elrepo                                          elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                                        5.9.6-1.el7.elrepo                                          elrepo-kernel
perf.x86_64                                                              5.9.6-1.el7.elrepo                                          elrepo-kernel
python-perf.x86_64                                                       5.9.6-1.el7.elrepo                                          elrepo-kernel

安裝內核

版本性質:主分支ml(mainline),穩定版(stable),長期維護版lt(longterm)
本文安裝的是主分支ml的5.9.6

# yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64

# 查看安裝好的kernel,已經安裝成功
[root@qd01-stop-k8s-node004 ~]# rpm -qa|grep kernel
kernel-headers-3.10.0-957.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64
kernel-ml-devel-5.9.6-1.el7.elrepo.x86_64
kernel-3.10.0-957.el7.x86_64
abrt-addon-kerneloops-2.1.11-52.el7.centos.x86_64
kernel-devel-3.10.0-957.el7.x86_64
kernel-tools-3.10.0-957.el7.x86_64
kernel-ml-5.9.6-1.el7.elrepo.x86_64
libreport-plugin-kerneloops-2.1.11-42.el7.centos.x86_64

查看並修改grub的啟動順序

主要修改了GRUB_DEFAULT=0

cat  /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto biosdevname=0 net.ifnames=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

生成grub重新創建內核配置並重啟

# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot

重啟確認內核版本

如果重啟后如果發現系統一直沒起來。
~恭喜你~,進入排錯環節
這里通過管理網卡,查看報錯如下圖

CentOS 7.6 從內核 3.10.0 升級到 5.x后,重啟不了,原因是 Linux 內核 4.4.x 版本之后,dracut 命令生成的 initramfs 默認不會自動加載 mpt3sas 驅動模塊。因為沒有對應的驅動程序,所以識別不了系統盤,從而導致內核 vmlinuz 無法加載它的 rootfs

問題解決

1、查詢initramfs的驅動

# lsinitrd -k 3.10.0-957.el7.x86_64 | grep mpt[23]sas
drwxr-xr-x   2 root     root            0 Nov  2 20:22 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

# ls /usr/lib/modules/5.9.6-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
/usr/lib/modules/5.9.6-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas/mpt3sas.ko

可以看到在3.10內核的時候是mpt2sas驅動,可以在5.x內核中看到,新版的內核已經把mpt2sas升級為mpt3sas

2、解決方法一

a、修改/etc/dracut.conf文件
sed -i '/#add_drivers+=""/aadd_drivers+="mpt3sas"' /etc/dracut.conf

b、重新生成initramfs
# cd /boot
# dracut  -f /boot/initramfs-5.9.6-1.el7.elrepo.x86_64.img 5.9.6-1.el7.elrepo.x86_64

c、檢查
# lsinitrd -k 5.9.6-1.el7.elrepo.x86_64 | grep mpt[23]sas
drwxr-xr-x   2 root     root            0 Nov  9 10:27 usr/lib/modules/5.9.6-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas
-rwxr--r--   1 root     root       481320 Nov  9 10:27 usr/lib/modules/5.9.6-1.el7.elrepo.x86_64/kernel/drivers/scsi/mpt3sas/mpt3sas.ko

d、重啟
# reboot

3、解決方法二

強制加載驅動
# dracut --force --add-drivers mpt3sas --kver=5.9.6
# reboot


免責聲明!

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



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