Linux中的引导过程与修复方法


前言

不正确的操作会导致系统出现各种问题,在实际情况中,重装服务器显然是不现实的,因此我们需要了解系统启动原理并据此找到修复的方法。

一、磁盘引导与修复

在启动程序时,磁头经过mbr程序的指引跳转到boot分区,开启系统启动程序,读取相应的配置文件,系统正常启动,因此当 mbr 数据丢失时,系统会因为找不到启动分区而停止启动。

mbr=主引导记录=0磁道1扇区446存储字节
作用:记录 grub2 引导文件的位置

1、问题模拟

dd if=/dev/zero of=/dev/xxx(系统磁盘) bs=446 count=1  ##清空系统/dev/sda 上的 mbr 数据
此时重启系统后会停滞导致无法正常启动

2、恢复方式

1)在虚拟机关闭模式下设置光盘为第一启动项,应用,从光盘进入系统,选择挽救模式,输入以下命令:
chroot /mnt/sysimage
grub2-install /dev/xxxxxx    #重新安装grub2文件到系统硬盘上
(2)执行两次exit,关闭系统,并选择硬盘为第一启动项,启动系统,发现系统可以正常启动

二、grub2 文件引导与修复

文件存储路径:

/boot/grub2/grub.cfg 总引导文件
/boot/loader/entries/xxxxxxxxx.conf 子引导文件

删除上述任意一个文件都会导致系统无法正常启动

1、问题模拟1

rm -fr /boot/loader/entries/xxxxxxxxx.conf  #删除子引导文件

2、引导及修复过程

引导:
重启系统并执行如下指令
set root='hd0,msdos1'
linux16 /vmlinuz-3.10.0-957.el7.x86_64 ro root=/dev/nvme0n1p2
initrd16 /initramfs-4.18.0-80.el8.x86_64.img
boot
修复:
完成上述引导过程后可正常进入系统,但是还需要修复,否则下次重启还是无法正常启动
cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
kerne-install add 内核版本号 内核镜像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz

2、问题模拟2

rm -fr /boot/grub2/grub.cfg   #删除总引导文件

3、引导及修复过程

引导:和问题1引导过程相同
修复:
grub2-mkconfig > /boot/grub2/grub.cfg    #创建cfg总引导文件

注意:上述问题出现时,如果没有重启系统,可直接用修复过程修复,如果重启系统可利用上述引导操作进入系统,之后同样需要进行修复,以保证之后可以正常进入系统

三、内核加载

加载内核作用:系统初始化硬件设备,只读挂在根目录下的设备
下面展示一些 内联代码片

模拟问题:
rm -fr /boot/vmlinuz-$(uname -r)
恢复∶
复制系统中usr下的内核文件到/boot中即可
在关闭模式下选择光盘为第一启动项,启动系统,进入到挽救模式,执行以下命令:
chroot /mnt/sysimage
cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)
exit
exit

四、系统初始化镜像

文件:
/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:
加载系统时钟
加载 selinux
加载系统主机信息
加载/etc/fstab 文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形
(1)问题模拟
rm -fr /boot/initramfs-xxxxx.img    #删除镜像文件,系统无法正常启动
(2)引导及修复
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)  #恢复初始化镜像文件

五、系统启动级别

0 关机
1 单用户
2 无图形网络模式
3 无图形网络模式
4 无图形网络模式
5 有图形网络模式
6 重启
问题模拟:
systemctl set-default reboot.target
引导及修复:
在开机选择界面按<e>进入到引导文件编辑模式
在内核加载选项最后加入启动级别 5
ctrl+x
systemctl set-default graphical.target

六、超级用户密码忘记

恢复方法:
1.在开机选择界面按<e>进入到引导文件编辑模式
2.在内核加载选项最后删除到 ro 选项
3.更改 ro---->rw
4.加入 rd.break 参数终止系统启动进入单用户模式
5.ctrl+x 启动
6.chroot /sysroot
7.echo lee| passwd --stdin root
8.touch /.autorelabel ##当/.autorelabel 文件存在 selinux 会重新初始化

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nk298120/article/details/109648065