當我們需要修改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 |
配置生效
重啟計算機即可。