RHEL7的GRUB2
grub详解–RHEL7以前的版本
Centos7以前,叫grub
# rhel6查看grub
cat /etc/grub.conf
grub
文件主要内容如下:
# 默认从第1个内核启动
default=0
# 引导选项等待时间
timeout=5
# titile是可以在引导界面看到的引导项--如果有多个引导项,就有多个title
tiele Centos6 (2.6.32-696.e16.x86_64)
# root对应引导的分区
root (hd0,0)
# kernel对应具体的内核信息
grub2–RHEL7以后的版本
UEFI
启动模式下的文件路径
是 /boot/efi/EFI/openEuler/grub.cfg
legacy
启动模式下的文件路径
是 /boot/grub2/grub.cfg
在CentOS7
中,/etc/default/grub
和/etc/grub2.cfg
文件都与GRUB2
引导加载程序相关。
-
/etc/default/grub
文件是用来配置GRUB2
引导加载程序的默认设置
,它包含了GRUB2引导加载程序的一些默认设置,例如默认内核、超时时间等。当您修改此文件时,必须运行grub2-mkconfig
命令来重新生成/etc/grub2.cfg
文件,以便应用所做的更改。 -
/boot/grub2/grub.cfg
文件是由grub2-mkconfig
命令根据/etc/default/grub
文件自动生成
的。它是GRUB2
引导加载程序的主要配置文件
,定义了可供选择的操作系统和它们的内核、启动选项、启动参数等。在大多数情况下,您不需要手动编辑
此文件,因为它是由grub2-mkconfig
命令根据默认设置自动生成的。
# 查看grub2.cfg文件是否存在
ls /etc/grub2.cfg
# 查看链接文件的实际位置
readlink /etc/grub2.cfg
检查grub的引导模式是UEFI还是Legacy
# 查看目录下有没有efi目录
ls -l /sys/firmware
# 一句话判断
## 注意[ ]内的前后空格
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS Legacy
重新生成grub
如果使用 Legacy 模式引导安装操作系统,则使用以下命令重新生成 grub。
# Legacy模式重新生成grub
grub2-mkconfig -o /boot/grub2/grub.cfg
使用 UEFI 模式引导安装操作系统,则使用以下命令重新生成 grub。
# efi模式重新乘车grub
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
grub2.cfg
详解
/etc/grub2.cfg
文件中指定了引导
的目标内核文件
和目标 initrd文件
,以及内核启动时
设置的参数。
# 查看rhel8的grub文件
cat /etc/grub2.cfg
引导项
# 这里显示的引导项
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-e8a5deb3-2139-4e75-be3d-851fd05ff8a7' {
# 这里是模块信息
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
# 救援模式的引导项目
menuentry 'CentOS Linux (0-rescue-e12365cf8dd24f4089db7e2f086648e3) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-e12365cf8dd24f4089db7e2f086648e3-advanced-e8a5deb3-2139-4e75-be3d-851fd05ff8a7' {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
内核信息
# linux16 就是内核引导信息
linux16 /vmlinuz-0-rescue-e12365cf8dd24f4089db7e2f086648e3 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
为Linux设置GRUB密码
https://mp.weixin.qq.com/s/4euVunN2Kvyx765_Ujkoxg
为GRUB
设置密码
,可以防止启动前编辑GRUB
,防止破解Linux密码
。
# 查看/etc/grub目录
ll /etc/grub.d/
- 文件
00_*
用于保留给00_header - 文件
10_*
表示本机启动条目 - 文件
20_*
表示第三方应用程序 - 文件
40_custom
用于管理身份验证
功能
# 查看40_custom
/etc/grub.d/40_custom
备份grub.cfg
# 备份grub.cfg
cp /boot/grub2/grub.cfg{,.bak}
设置密码
在/etc/grub.d/40_custom
文件中添加:
# 用户
## set superusers=“[User Name]”
set superusers=”tietou”
# 用户 密码
## password [User name] [Password]
password tietou qwe123
# 使用grub2-mkpasswd-pbkdf2加密明文密码
grub2-mkpasswd-pbkdf2
# 用户
## set superusers=“[User Name]”
set superusers=”tietou”
# 用户 加密密码
# password_pbkdf2 [user name] [hashed string]
password tietou grub.pbkdf2.sha512.10000.5DF1DE834380F14945A1DBDE81004662EB871822F21154ED135FD4891FBBD5395BE919383150D10228A34A5166142AC73F177ABE8ABB0B1D93E0D669F7114DE3.D6C5AB742703B84BE2BE78FE43982524A5C9B4B0A5B0213973EF0BB5AAC6446B0EC0DCB1982D7D1DF904A84D09BF7751FC7D68CFD5E41C60ABF5AF6BB4B9D6CE
更新grub
# 生成grub
grub2-mkconfig
# 或
# 更新GRUB
update-grub
# 或
# 更新grub
## -o 指定输出文件
grub2-mkconfig -o /boot/grub2/grub.cfg
Linux修改或移除GRUB密码
https://mp.weixin.qq.com/s/PXwko0TGNtY3Yu_mxAtZ6A
如果我们知道root密码
,可以顺利登陆操作系统,那操作还是比较简单的。我们可以使用以下步骤来删除
或修改GRUB密码
。
在引导加载程序屏幕处不做任何操作,避免中断引导
过程,让系统正常启动。然后使用root
帐户登录并打开文件/etc/grub.d/40_custom
。
接下来就简单了,如果我们想删除GRUB密码
,删除文件中set superusers
和password/password_pbkdf2
部分配置就可以了;如果我们要重置
或更改GRUB密码
,按要求重新配置password
或password_pbkdf2
部分就可以了。
在修改完文件40_custom
之后,创建一个新的主配置文件grub.cfg
。
# 更新grub
## -o 指定输出文件
grub2-mkconfig -o /boot/grub2/grub.cfg
最后重新启动系统
,从引导加载程序屏幕访问grub选项
就可以验证更改是否成功了。
忘记root密码删除GURB密码
但是,如果我们不知道root密码
呢?该怎么删除GRUB密码
呢?
这时我们就要用到CentOS的安装盘
来引导系统了,首先调整BIOS引导顺序从 Centos7的安装光盘
引导系统。
接下来,选择Rescue a CentOS Linux system
选项。
短暂引导之后,我们输入1
并回车
,以选择第一个选项
,救援模式
现在将尝试查找已经安装的Linux系统,并将其挂载
到目录/mnt/sysimage
下。然后,我们就可以对系统进行所需的任何更改
。
然后我们就进入到了和重置root密码
时一样的命令环境
。
接下来,我们运行以下命令来创建必要的root环境,以便使用已安装的Linux系统。
# 将/更改为 /mnt/sysimage 目录
chroot /mnt/sysimage
在此之后,无论我们执行什么命令,都将以root权限从已安装的Linux执行。通过ls命令我们可以验证是否所有目录都已正确安装。
然后我们检查文件/etc/grub.d/40_custom
可以看到我们使用的加密的密码
,现在如果遗忘了GRUB密码
,指定是找不回来了。接下来,我们删除
文件中有关身份验证的set superusers
和password_pbkdf2
部分配置,并保存文件
退出。
更新grub
最后,我们还是运行grub2-mkconfig
命令来重新生成grub.cfg
配置文件。
# 更新grub
## -o 指定输出文件
grub2-mkconfig -o /boot/grub2/grub.cfg
# 或
# 生成新的grub.cfg
grub2-mkconfig -o /tmp/grub.cfg
# 替换旧grub.cfg
mv /tmp/grub.cfg /boot/grub2/
重启系统
# 关闭临时root环境
exit
返回救援系统shell提示
# 重启系统
reboot

结果验证
此时,我们再从引导加载程序
屏幕按e
键访问GRUB
选项,就可以发现grub密码
已经没有
了。
访问Linux中的GRUB菜单
https://linux.cn/article-16056-1.html
临时方案(当你偶尔访问GRUB时)
例如:你想切换回旧内核或进入恢复模式以 重置密码。
在重启
时按住 Shift
键,会显示 GRUB 菜单
。
永久方案(每次启动时都会显示 GRUB)
# 编辑grub
vim /etc/default/grub
将 GRUB_TIMEOUT_STYLE=hidden
更改为 GRUB_TIMEOUT_STYLE=menu
其中hidden
表示隐藏GRUB
;
menu
表示显示GRUB
。
# 显示GRUB
GRUB_TIMEOUT_STYLE=menu
# GRUB显示秒数
GRUB_TIMEOUT=5
改完后更新GRUB
# 更新GRUB
update-grub
# 或
## -o 指定输出文件
grub2-mkconfig -o /boot/grub2/grub.cfg