Linux中修改系统启动项grub

在修改grub时看到很多资料,上来就是直接修改/etc/default/grub配置文件中的GRUB_DEFAULT配置项,但是有时候修改不成功,本文简单说明一下修改的原理。注:根据本人机器上的配置文件讲解,其他人可能不一样,所以只做参考。

介绍的是Ubuntu下的修改方式,Centos下的修改方式不一样。

Centos下可参考:https://cloud.tencent.com/developer/article/2086777

一、查看内核信息和启动界面:

1、查看当前内核启动顺序:可以看到有两个内核Linux 5.4.0-147-genericLinux 5.4.0-146-generic

book@book-vm:~$ cat /boot/grub/grub.cfg |grep "menuentry "
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-56e2ca8b-3d73-46df-9a2a-58fa2247002f' {
	menuentry 'Ubuntu, with Linux 5.4.0-147-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-147-generic-advanced-56e2ca8b-3d73-46df-9a2a-58fa2247002f' {
	menuentry 'Ubuntu, with Linux 5.4.0-147-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-147-generic-recovery-56e2ca8b-3d73-46df-9a2a-58fa2247002f' {
	menuentry 'Ubuntu, with Linux 5.4.0-146-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-146-generic-advanced-56e2ca8b-3d73-46df-9a2a-58fa2247002f' {
	menuentry 'Ubuntu, with Linux 5.4.0-146-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-146-generic-recovery-56e2ca8b-3d73-46df-9a2a-58fa2247002f' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {

2、在启动系统时,grub的菜单界面为:

可以看到有四个菜单选项,这个界面是由配置文件 /boot/grub/grub.cfg 定义的,此文件一般是通过配置文件 /etc/default/grub 生成,命令为 sudo update-grub 。

二、相关配置文件

1、/boot/grub/grub.cfg

ubuntu@ubuntu-vm:/boot/grub$ ls
fonts  gfxblacklist.txt  grub.cfg  grubenv  i386-pc  locale  unicode.pf2

打开此配置文件,这里对照grub菜单看:

(1)Ubuntu 选项,在配置文件中的定义为:

此选项下,启动的内核为Linux 5.4.0-147-generic,在配置文件/etc/default/grub中,GRUB_DEFAULT=0时,会默认选择此选项,从而启动相关内核。

(2)Advanced options for Ubuntu 选项

在配置文件中的定义为:

 此选项下有四个选项,分别启动相关内核。其它选项就不详述了。

2、/etc/default/grub 

此配置文件内容为:

(1)GRUB_DEFAULT 配置项:默认菜单项

说明:GRUB_DEFAULT=0时,默认选择grub菜单界面的第一项Ubuntu;GRUB_DEFAULT=1时,默认选择grub菜单界面的第二项Advanced options for Ubuntu 。在本人的菜单界面或者配置文件 /boot/grub/grub.cfg 下,如果只修改GRUB_DEFAULT=1,则只选择了第二项,但是没有指定此选项下的哪一个,所以修改不会成功。

修改方法如下:要根据配置文件 /boot/grub/grub.cfg 定义的grub界面修改。

$ sudo vim /etc/default/grub
GRUB_DEFAULT=0 ##修改为
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-31-generic"

参考:Linux系统修改默认内核启动顺序 

(2)其余的配置项可参考以下资料:

GRUB配置文件详解

(3)修改完成后,使用命令重新配置 /boot/grub/grub.cfg 文件,然后重启reboot。

$ sudo grub-mkconfig  -o /boot/grub/grub.cfg
或者
$ sudo update-grub    //此命令本质上就是grub-mkconfig

总结:

修改Linux系统默认内核启动顺序时,要参考配置文件 /boot/grub/grub.cfg 定义的grub,从而修改 /etc/default/grub 中的GRUB_DEFAULT配置项。本文介绍了修改grub启动顺序的原理,具体的方法除本文外还有很多,不再详述。

猜你喜欢

转载自blog.csdn.net/Healer19/article/details/130368255