目录

  • UEFI和Legacy的对比
  • GRUB的配置文件
  • 确认系统是采用的UEFI还是Legacy
  • 查找grub.cfg文件
  • 列出系统中所有的内核
  • 列出系统默认所使用的内核
  • 修改系统的默认内核
  • /etc/default/grub文件
  • 重新生成/etc/default/grub文件
  • 列出系统中安装的所有内核
  • 删除指定的内核


UEFI和Legacy的对比

Legacy BIOS一般是指的传统的BIOS;UEFI全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。通俗的说,UEFI是一种新的主板引导初始化的标注设置,具有启动速度快、安全性高和支持大容量硬盘而闻名。出现这种技术的主要作用基本上就是为了实现开机快的效果。

UEFI BIOS包括UEFI引导启动和Legacy引导启动,两者的区别如下图所示:

bios模式是传统 可以安装ubuntu吗 bios可以升级uefi吗_linux

GRUB的配置文件

对于Centos7,如果是采用的UEFI方式引导的,那Centos7的GRUB的有效配置文件是 /boot/efi/EFI/centos/grub.cfg,在/boot/grub与/boot/grub2目录下就不会再保存grub.cfg配置文件 ;如果是采用的Legacy方式引导,那对应的GRUB的有效配置文件是/boot/grub2/grub.cfg。

打开grub.cfg文件在该文件的头部说明中可以看到 “不可编辑这个文件”的警告信息,同时指明了修改这个文件的方法:即需要修改/etc/default/grub配置文件与/etc/grub.d目录下的模板后,再用grub2-mkconfig命令生成这个文件。

[root@localhost ~]# sudo cat /boot/efi/EFI/centos/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

/boot目录结构:

[root@localhost ~]# tree -F /boot
/boot
├── config-3.10.0-693.11.6.el7.x86_64
    ...
├── efi/
│   └── EFI/
│       ├── BOOT/
│       │   ├── BOOTX64.EFI*
│       │   ├── fallback.efi*
│       │   └── fbx64.efi*
│       └── centos/
│           ├── BOOT.CSV*
│           ├── BOOTX64.CSV*
│           ├── fonts/
│           │   └── unicode.pf2*
│           ├── fw/
│           ├── fwupia32.efi*
│           ├── fwupx64.efi*
│           ├── grub.cfg*
│           ├── grub.cfg.1554740803.rpmsave*
│           ├── grubenv*
│           ├── grubx64.efi*
│           ├── mmx64.efi*
│           ├── MokManager.efi*
│           ├── shim.efi*
│           ├── shimx64-centos.efi*
│           └── shimx64.efi*
├── grub/
│   └── splash.xpm.gz
├── grub2/
│   └── grubenv -> ../efi/EFI/centos/grubenv*
├── initramfs-0-rescue-2282c2e0651e46f796865aaa645ac7fe.img
    ...
├── lost+found/
├── symvers-3.10.0-693.11.6.el7.x86_64.gz
    ...
├── vmlinuz-0-rescue-2282c2e0651e46f796865aaa645ac7fe*
    ...
└── vmlinuz-3.10.0-957.10.1.el7.x86_64.debug*
9 directories, 56 files

确认系统是采用的UEFI还是Legacy

如果不清楚系统是采用的UEFI引导还是legacy方式引导的话,可以通过df -h命令,如果系统下存在/boot/efi挂载点说明系统是UEFI方式引导,如果没有那就是legacy方式引导。

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  3.9G   47G   8% /
devtmpfs                  32G     0   32G   0% /dev
tmpfs                     32G     0   32G   0% /dev/shm
tmpfs                     32G  9.6M   32G   1% /run
tmpfs                     32G     0   32G   0% /sys/fs/cgroup
/dev/sda2               1014M  154M  861M  16% /boot
/dev/sda1                200M  9.8M  191M   5% /boot/efi
/dev/mapper/centos-home  365G   37M  365G   1% /home
tmpfs                    6.3G     0  6.3G   0% /run/user/0
[root@localhost ~]#

查找grub.cfg文件

通过find命令查找出当前系统grub.cfg配置文件的位置。

[root@localhost ~]# find /boot -name grub.cfg
/boot/efi/EFI/centos/grub.cfg
[root@localhost ~]#

UEFI-based system: /boot/efi/EFI/centos/grub.cfg
Legacy system: /boot/grub2/grub.cfg

列出系统中所有的内核

[root@localhost ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' $(find /boot -name grub.cfg)
0 : CentOS Linux (3.10.0-957.10.1.el7.x86_64.debug) 7 (Core)
1 : CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)
3 : CentOS Linux (3.10.0-693.el7.centos.tony_base.x86_64.debug) 7 (Core)
4 : CentOS Linux (3.10.0-693.el7.centos.tony_base.x86_64) 7 (Core)
5 : CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
6 : CentOS Linux (0-rescue-2282c2e0651e46f796865aaa645ac7fe) 7 (Core)

列出系统默认所使用的内核

[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)

修改系统的默认内核

[root@localhost ~]# grub2-set-default 2
[root@localhost ~]# grub2-editenv list
saved_entry=2

/etc/default/grub文件

默认的/etc/default/grub文件并不长,内容如下:

[root@localhost ~]# cat /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="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@localhost ~]#

重新生成/etc/default/grub文件

修改配置文件后,需要重新生成grub.cfg文件,以使配置文件生效。

[root@localhost ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-26c5ae703b724ec4becd6c1df26ae1ed
Found initrd image: /boot/initramfs-0-rescue-26c5ae703b724ec4becd6c1df26ae1ed.img
done
[root@localhost ~]#

列出系统中安装的所有内核

[root@localhost ~]$ sudo rpm -q kernel
kernel-3.10.0-693.el7.x86_64
kernel-3.10.0-693.el7.centos.tony_base.x86_64
kernel-3.10.0-693.11.6.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64

删除指定的内核

[root@localhost ~]# sudo yum remove kernel-3.10.0-693.el7.centos.tony_base.x86_64
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
–> Running transaction check
—> Package kernel.x86_64 0:3.10.0-693.el7.centos.tony_base will be erased
–> Finished Dependency Resolution
&npsb;
Dependencies Resolved