GPU裸金属服务器使用EulerOS内核误升级如何解决
问题现象
GP Vnt1裸金属服务器,操作系统为EulerOS 2.9(基于CentOS制作的Linux发行版),经常遇到服务器重启后,操作系统内核无故升级,导致系统上原安装的nvidia-driver等软件无法使用,只能卸载重新安装。
原因分析
分析EulerOS内核是如何在不知情的情况下升级的:
- 首先查看当前操作系统内核。
[root@Server-ddff ~]# uname -r 4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64
- 一般执行如下升级命令,就会导致自动下载和安装高级内核版本。
yum update -y
执行后查看当前可用内核,发现已经新增了内核h998:[root@Server-ddff ~]# [root@Server-ddff ~]# cat /boot/grub2/grub.cfg |grep "menuentry " menuentry 'EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.18.0-147.5. 1.6.h934.eulerosv2r9.x86_64-advanced-f6aefacb-f2d3-4809-b708-6ad0357037f5' { menuentry 'EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.18.0-147.5. 1.6.h934.eulerosv2r9.x86_64-advanced-f6aefacb-f2d3-4809-b708-6ad0357037f5' { menuentry 'EulerOS (0-rescue) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-advanced-f6aefacb-f2d3-4809-b708-6ad 0357037f5' { [root@Server-ddff ~]#
- 查看假如reboot(尚未reboot)后默认选择的内核版本:
[root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]#
发现默认系统内核已经变为h998,reboot后就会生效。 此时若重启那么内核版本就被升级了。
处理方法
下文中假设当前服务器的内核版本是为4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64,介绍如何避免操作系统内核自动升级。
- 操作系统内核升级生效,必然需要服务器重启, 因此重启reboot前需要查看当前默认选择的内核版本:
[root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]#
如上发现reboot后内核为4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64,和当前内核版本h934不一致,则需要重新设置内核版本与当前版本一致。
- 查看当前内核版本,并且锁定reboot后默认启动的内核版本,执行如下命令:
grub2-set-default 'EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64)'
- 执行后查看默认启动的内核版本是否和上述设置的相同:
[root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]#
发现和当前内核一致,因此即使reboot也不会更改服务器的内核版本。
若希望升级指定的操作系统内核,也可以执行grub2-set-default进行设置默认启动内核版本。但操作系统内核升级可能带来的问题。例如在操作系统内核4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64 下安装的nvidia-driver-515,由于执行了yum update并reboot服务器, 发现再次执行nvidia命令时报错:
[root@Server-ddff ~]# nvidia-smi NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. [root@Server-ddff ~]#
此时只能安裝nvidia-driver-515以及配套的cuda版本,安装方法可以参考GP Vnt1裸金属服务器EulerOS 2.9安装NVIDIA 515+CUDA 11.7。