RHCA扩展

一、系统的引导过程

1.1 过程

二、磁盘引导修复

2.1 问题复现

bash 复制代码
# 创建问题环境,首先查看系统的启动硬盘
[root@master ~]# fdisk -l
Disk /dev/nvme0n1: 150 GiB, 161061273600 bytes, 314572800 sectors
Disk model: VMware Virtual NVMe Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbad6a149
​
Device         Boot   Start       End   Sectors  Size Id Type
/dev/nvme0n1p1 *       2048   2099199   2097152    1G 83 Linux
/dev/nvme0n1p2      2099200 314572799 312473600  149G 8e Linux LVM
# 得知系统的启动硬盘为/dev/nvme0n1
​
​
Disk /dev/mapper/rhel_192-root: 70 GiB, 75161927680 bytes, 146800640 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
​
​
Disk /dev/mapper/rhel_192-swap: 2.01 GiB, 2160066560 bytes, 4218880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
​
​
Disk /dev/mapper/rhel_192-home: 76.98 GiB, 82661343232 bytes, 161447936 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
​
[root@master ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1
1+0 records in
1+0 records out
446 bytes copied, 0.000951019 s, 469 kB/s
[root@master ~]# reboot
​
# dd --数据复制与转换,此处是把/dev/zero文件复制到/dev/nvme0n1(相当于用全0文件覆盖启动硬盘)
# 覆盖的范围是 bs=446 ,只覆盖前446字节的区域,覆盖 "引导扇区" 
# count=1 只覆盖一次
​
​
##  关闭 "ISO镜像启动时连接"
# 如果不关,系统启动后自动读取光盘里的内容,发现引导区错误,会提示"进入急救模式"或者"重装系统",这样就跳过了 "直接解决引导区错误" 的方法
​
复制代码

2.2 现象

2.3解决方法

  1. 关机

  2. 插入光盘和其他设备修复

  3. 重启运行

    选择Troubleshooting

选择 修复系统

复制代码
bash 复制代码
fdisk -l |less #查看系统的启动磁盘
grub2-install /dev/nvme0n1 #安装磁盘的引导程序

或者在重启的瞬间按f12(fn + f12)进入到如下界面设置解决

三、主引导文件修复

3.1 引导文件说明

bash 复制代码
# "磁盘引导"过程中,出错了就可以用resue修复,这是硬件层面
# "文件引导"过程中,默认选择第一个引导标题,出错后可用第二个resue修复,这是软件层面
​
[root@master ~]# ll /boot/grub2/grub.cfg  # 查看主引导文件
-rw-------. 1 root root 7024 Jan 14 12:20 /boot/grub2/grub.cfg
​
[root@master ~]# ll /boot/loader/entries/   #查看子引导文件
total 8
-rw-r--r--. 1 root root 500 Jan 14 12:20 b2462f6903f949e2a33f42108734f009-0-rescue.conf
-rw-r--r--  1 root root 476 Jan 14 17:03 b2462f6903f949e2a33f42108734f009-5.14.0-570.12.1.el9_6.x86_64.conf
​
# 主引导文件和子引导文件的关系:
# 主引导文件像主函数,子引导文件是子函数。主函数调用子函数的配置段、内核,、启动参数等信息,主函数搭建菜单框架,子函数负责每个菜单的具体内容 ===》 模块化设计

子引导文件的标题

3.2 问题复现

bash 复制代码
[root@master loader]# rm -rf /boot/grub2/grub.cfg #删除主配置文件
复制代码

3.2.1 情况一(未重启)

bash 复制代码
[root@master loader]# grub2-mkconfig > /boot/grub2/grub.cfg #重新生成主配置文件
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

3.2.2 情况二(已重启)

bash 复制代码
[root@master loader]# df   # 查看磁盘空间
Filesystem                1K-blocks     Used Available Use% Mounted on
devtmpfs                       4096        0      4096   0% /dev
tmpfs                        890336        0    890336   0% /dev/shm
tmpfs                        356136     7372    348764   3% /run
/dev/mapper/rhel_192-root  73334784  4995884  68338900   7% /    # 记住 / 所在磁盘
/dev/nvme0n1p1               983040   373152    609888  38% /boot  # 记住 /boot 所在磁盘
/dev/sr0                   12462174 12462174         0 100% /mnt
/dev/mapper/rhel_192-home  80658432   604168  80054264   1% /home
tmpfs                        178064      100    177964   1% /run/user/1000
复制代码
bash 复制代码
# 成功启动后也需要重新生成配置文件
[root@master loader]# grub2-mkconfig > /boot/grub2/grub.cfg #重新生成主配置文件
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

四、总结

  1. 不管是 MBR 坏了、还是 grub.cfg 删了 → 都能用镜像(ISO)进救援模式修复

  2. 生产环境(服务器) - 镜像不是随时都有 - 关机、挂 ISO、重启、进救援 → 很麻烦、耗时间、业务会停 → 所以优先用系统内命令直接修复,不到万不得已不用 ISO。

  3. 个人电脑 / 虚拟机 - ISO 随便挂、随时能用 - 重启也无所谓 → 想用系统内修复就用系统内,想用 ISO 修复就用 ISO ,怎么方便怎么来。 你现在已经把整个引导修复的逻辑、场景、为什么要这么学全部搞通了。

相关推荐
zlpzpl1 小时前
Linux系统下安装配置Nginx(保姆级教程)
java·linux·nginx
筵陌2 小时前
Linux网络传输层协议UDP
linux·网络
海兰2 小时前
Elastic Stack 9.3.0 日志探索
java·服务器·前端
DuHz2 小时前
汽车雷达高级信号处理和建模技术简介——文章精读(上)
linux·论文阅读·人工智能·汽车·信号处理
e***13622 小时前
linux 设置tomcat开机启动
linux·运维·tomcat
coollove74823 小时前
Linux下PostgreSQL-12.0安装部署详细步骤
linux·运维·postgresql
yuyuyuliang003 小时前
Ubuntu 22.04安装PostgreSQL教程
linux·运维·ubuntu·postgresql
清水白石0083 小时前
函数签名内省实战:打造通用参数验证装饰器的完整指南
java·linux·数据库
~央千澈~3 小时前
抖音弹幕游戏开发之第7集:识别不同类型的消息·优雅草云桧·卓伊凡
java·服务器·前端