本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍了Alibaba Cloud Linux 3.2104(内核5.10.134-13及以上版本)系统的ECS实例,修改/etc/default/grub
文件并重启系统后配置无法生效的原因和解决方案。
问题描述
Alibaba Cloud Linux 3.2104(内核5.10.134-13及以上版本)系统的ECS实例,修改了/etc/default/grub
文件,例如:将crashkernel
参数中128G:-384M修改为128G-512M。
系统重启后,执行cat /proc/cmdline
命令查看当前系统内核启动时使用的实际命令行参数,发现cmdline
参数未按预期进行修改,与 /etc/default/grub 中的配置不匹配。
问题原因
Alibaba Cloud Linux 3引入了业界主流的grub blscfg
功能,使系统能够在/boot/loader/entries/
目录下配置多个内核的文件。从5.10.134-13
版本开始,ANCK内核引入了最佳实践配置,将默认配置以固定形式写入/boot/loader/entries/
对应的入口文件中。因此,修改通用配置文件/etc/default/grub
将无法影响特定版本的内核参数。
解决方案
您可以通过以下三种方案使修改的/etc/default/grub
参数生效,本文以将crashkernel
中参数128G:-384M修改为128G-512M为例进行说明。
方案一:(推荐)通过grubby
工具修改对应内核参数
执行以下命令,修改内核参数。
说明<NEW_PARAM>替换为实际的内核参数,例如:crashkernel=0M-2G:0M,2G-8G:192M,8G-128G:256M,128G-:512M。
修改当前运行内核的参数配置。
sudo grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAM>"
更新/boot目录下所有内核参数。
sudo grubby --update-kernel=ALL --args="<NEW_PARAM>"
执行以下命令,重启系统。
sudo reboot
执行以下命令,查看当前系统内核启动时使用的实际命令行参数。
cat /proc/cmdline
方案二:重新生成可读取通用配置的bls
内核配置文件
若系统中存在多个内核,这些内核将共享内核参数。如果不同内核版本需要特定的内核参数配置,请谨慎使用该方案。
执行该方案后,
bls
配置文件中的cmdline
将会转换为$kernelopts
的形式,即读取/etc/default/grub
中GRUB_CMDLINE_LINUX的内容,特定版本内核的独特配置将丢失。在执行此操作前,确保相关内核参数已经备份。执行该方案后,若后续需要修改内核参数,需再次执行该方案,使用
grubby
工具修改内核参数将无法生效。
执行以下命令,打开
/etc/default/grub
文件。sudo vim /etc/default/grub
按 i 键进入编辑模式。将
crashkernel
参数128G:-384M修改为128G-512M。按
Esc
键,输入:wq
后按Enter
键,保存配置。执行以下命令,重新生成
bls
内核配置文件。sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo grub2-mkconfig -o /boot/efi/EFI/alinux/grub.cfg
执行以下命令,重启系统。
sudo reboot
执行以下命令,查看当前系统内核启动时使用的实际命令行参数。
cat /proc/cmdline
方案三:关闭bls
特性读取传统内核参数的配置文件
该方式将延续使用类似 CentOS 7的传统grub
方式,默认读取/etc/default/grub
的配置参数。
执行以下命令,打开
/etc/default/grub
文件。sudo vim /etc/default/grub
按 i 键进入编辑模式。将
crashkernel
参数128G:-384M修改为128G-512M。按
Esc
键,输入:wq
后按Enter
键,保存配置。执行以下命令,关闭
bls
特性。sudo sed -i "s/GRUB_ENABLE_BLSCFG=true/GRUB_ENABLE_BLSCFG=false/g" /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo grub2-mkconfig -o /boot/efi/EFI/alinux/grub.cfg
执行以下命令,重启系统。
sudo reboot
执行以下命令,查看当前系统内核启动时使用的实际命令行参数。
cat /proc/cmdline