目录
UEFI和Legacy的对比
Legacy BIOS一般是指的传统的BIOS;UEFI全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。通俗的说,UEFI是一种新的主板引导初始化的标注设置,具有启动速度快、安全性高和支持大容量硬盘而闻名。出现这种技术的主要作用基本上就是为了实现开机快的效果。
UEFI BIOS包括UEFI引导启动和Legacy引导启动,两者的区别如下图所示:
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
参考:
https://www.dandelioncloud.cn/article/details/1487204647176884225