当我们需要修改Linux内核启动参数时,很多同学喜欢直接修改/etc/grub2.cfg文件。这不是一个好的做法。原因是:一方面,我们升级内核后,需要将这个文件再改一遍,很不方便;另一方面,这样容易出错,导致内核启动失败。
实际上,Linux已经为我们准备了一系列工具来安全方便地修改内核参数。以下以添加预留大页内存为例,说明如何使用这些工具来修改Linux内核启动参数。
工具
grub2-mkconfig
grub2-set-default
如果您的系统中找不到上述工具,可以使用如下命令安装:
sudo yum install grub2 -y |
修改内核参数默认配置文件
内核配置文件位于:/etc/default/grub , 其内容大致如下:
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" #GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swaa p rhgb quiet console=tty0,115200n8" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swapp rhgb quiet console=ttyS0 default_hugepagesz=1G hugepagesz=1G hugepages=2" GRUB_DISABLE_RECOVERY="true" |
若想了解其中参数的具体含义,可以执行:
info -f grub2 -n 'Simple configuration' |
这里不再一一解释。
若要实现本文前面实现的“预留大页内存”的目标,需要在 GRUB_CMDLINE_LINUX 后面添加 “default_hugepagesz=1G hugepagesz=1G hugepages=2”
添加好后,保存退出。
生成grub配置文件
Grub配置文件位于: /boot/grub2/grub.cfg。 为了避免原文件丢失,可以先做备份:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak |
如果有多个内核,想顺便指定默认启动的内核版本的话,可以先使用这个命令查看内核列表:、
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg |
在作者的计算机上,得到如下输出:
0 : CentOS Linux (4.18.20) 7 (Core) 1 : CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core) 2 : CentOS Linux (0-rescue-bdfa1d9689cc40789eba2411fb530bc8) 7 (Core) |
记住你要默认启动的内核的编号,然后使用如下命令调整启动顺序。例如我想使用4.18内核,则执行
grub2-set-default 0 |
然后生成grub配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg |
配置生效
重启计算机即可。