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 ,怎么方便怎么来。 你现在已经把整个引导修复的逻辑、场景、为什么要这么学全部搞通了。

相关推荐
归秋1423 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
H.莓飛4 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
91刘仁德4 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋2014 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
硅基手札5 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
沫璃染墨6 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
工作10年+,存储芯片行业7 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
wuminyu7 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
快乐の番薯7 小时前
卷王问卷考试系统自动化功能测试
运维·功能测试·自动化