十五、Linux系统引导过程及引导修复

本文详细介绍了Linux系统的引导过程,包括从光盘启动、磁盘引导修复,特别是针对MBR破坏的解决方法,如使用dd命令修复MBR,并通过grub2安装恢复引导。同时,讲解了GRUB2文件引导、内核文件和初始化镜像的恢复,以及系统启动级别的修复。此外,还提供了忘记超级用户密码时的破解步骤,确保系统安全和正常运行。
摘要由CSDN通过智能技术生成

十五、Linux系统引导过程及引导修复

15.1、从光盘启动主机

两种启动方法(适用于真机为Windows):

1、适合手速快,此方法为临时设定
点击启动虚拟机,在读取进度条时候
在这里插入图片描述
按Esc键进入系统启动设备选择列表。
在这里插入图片描述
在列表中选择CD-ROM。

2、永久设定启动方式
选择打开电源时进入固件
在这里插入图片描述
按< shift >+< + > 把CD-ROM Devices调整到最上。
在这里插入图片描述
按F10 保存退出,则默认从光盘启动。
注:若需要从硬盘启动,仍然要进入bios重新调整。

15.2、系统引导过程中磁盘引导修复

1、通电
2、bios初始化
对硬件检测
初始化硬件时钟
3、磁盘引导
执行fdisk -l
在这里插入图片描述
上图中
/dav/sda表示设别名称
/dev/sda1表示设备分区
Boot下的 * 表示设备上的mbr记录(即启动引导记录)

例:若采用截取指令破坏mbr记录,则系统无法重启
(1)截取指令:

dd if=/dev/zero of=/dev/sda bs=446 count=1 #清空系统/dev/sda上的mbr数据
#从系统的无线0字节中截取数据到vda硬盘中,截取一块大小为445byte,共截取1块

dd表示截取命令
if=/dev/zero表示截取模板
of=/dev/sda表示存放数据位置
bs=446表示数据块大小
count=1表示截取块个数
在这里插入图片描述
#注:截取指令中of后跟的设备取决于Disk后的显示。
(2)reboot重启,发现无法正常启动。

结论:当系统引导磁盘被破坏,则当系统重启时,系统无法识别从什么位置读取信息,就无法启动。

解决方案:
(1)选择从光盘启动,选择第三个
在这里插入图片描述
(2)然后选择第二个rescue
在这里插入图片描述
(3)选择第一个,继续进入挽救模式。
在这里插入图片描述
四个选项分别表示:
1)继续进入挽救模式
2)只读进入挽救模式
3)直接开启shell
4)退出
(5)给出一个指令chroot /mnt/images/ ,该指令表示转换系统从光驱到真实系统的磁盘中
在这里插入图片描述
回车后,输入指令chroot /mnt/sysimage/ 切换到真实系统
(6)执行下面指令,安装mbr

grub2-install /dev/sda #安装mbr
#/dev/sda为有引导分区的设备名称,此分区所在的硬盘设备就是需要mbr的设备
# fdisk -l 可查看有引导分区的设备

回车进行安装,提示no error reported
在这里插入图片描述
(7)输入两次exit重启
(8)引导已修复

15.3、grub2文件引导

系统启动时,此两行标题是系统引导文件中的内容
在这里插入图片描述
切换到引导文件所在目录:cd /boot/loader/entries/
执行ls查看
在这里插入图片描述
两条内容分别对应启动时候的两行标题
执行

vim 037a0ee7d3e349548dde05f707a1e879-4.18.0-80.el8.x86_64.conf

发现标题内容完全对应。
在这里插入图片描述
执行df
在这里插入图片描述
/dev/sda3 表示根分区所在系统设备
/dev/sda1 表示启动分区所在系统设备

问题模拟:
如果删除/boot/loader/entries/下的两个引导文件rm -fr *,则系统引导文件丢失,执行reboot,无法自动引导,需要手动引导。
在这里插入图片描述

手动引导步骤:

(1)指定系统启动分区
在这里插入图片描述
root表示指定引导设备
hd0表示指定引导分区的位置为第一块硬盘
msdos1表示指定引导分区在第一块硬盘的第一个分区中

(2)启动内核只读挂载/分区

linux16 /vmlinuz-4.18.0-80.e18.x86_64 ro root=dev/sda3
# /vmlinuz-4.18.0-80.e18.x86_64为内核文件
# ro 为只读挂载
# root=dev/sda3为根分区设备

在这里插入图片描述

(3)加载系统的初始化镜像
在这里插入图片描述
(4)输入boot,引导完成启动系统

注:手动引导为一次性,下次开启还需引导。
开机后执行

cd /boot/loader/entries/
ls

在这里插入图片描述
被删除的文件没有恢复,则下次启动仍需手动引导。

若要永久修复,则需执行以下操作
(1)kenel-install add 内核版本 内核镜像
在这里插入图片描述

uname -r #查看内核版本

(2)修复过程出现报错,解决方案为
查找报错文件

dnf whatprovides */bls.conf

然后执行
在这里插入图片描述
(3)执行ls发现引导文件恢复
在这里插入图片描述
(4)reboot重启成功

15.4、恢复系统内核文件

加载内核作用:
内核目录:/boot/vmlinuz-$(uname -r)
系统初始化硬件设备
只读挂载/设备

模拟问题:
rm -fr /boot/vmlinuz-$(uname -r) #删除内核文件
在这里插入图片描述执行reboot,系统挂掉。
在这里插入图片描述

恢复:
(1)开机进入挽救模式
在这里插入图片描述
选择resure
选择1
回车
(2)输入指令chroot /mnt/sysimage/
在这里插入图片描述
(3)

mount /dev/cdrom /media/
cd /media/BaseOS/Packages
cp kernel-core-4.18.0-80.e18.x86_64.rpm /mnt/

(4)cd /mnt/
然后解压rpm2cpio kernel-core-4.18.0-80.e18.x86_64.rpm | cpio -id
(5)

cd lib/modules

可以看到内核版本号
在这里插入图片描述
(6)

cd 4.18 (TAB补齐)
ls

可以看到内核文件
在这里插入图片描述
(7)查看内核文件名称

cat /boot/loader/entries/TAB补齐

在这里插入图片描述
(8)cp /mnt/lib/modules/4.18< TAB > /boot/vmlinuz-4.18.0-80.e18.x86_64
在这里插入图片描述
(9)输入两次exit

15.5、恢复系统初始化镜像

cd /boot
ls

红线标出文件为内核完毕后加载的文件
在这里插入图片描述
模拟问题:

rm -fr  initramfs-4.18.0-80.el8.x86_64.img
reboot

在这里插入图片描述

解决方案:
进入光盘启动模式
开机进入挽救模式
输入1
回车
输入指令chroot /mnt/sysimage/
执行
在这里插入图片描述
ls /boot可以看到文件生成
在这里插入图片描述
重启成功

15.6、系统启动级别修复

存放启动脚本目录:cd /etc/systemd/system/
ls查看
在这里插入图片描述

15.6.1、系统所有服务的启动脚本链接

multi-user.target.wants为系统所有服务的启动脚本链接

例:系统服务开机启动原理
当设定服务开机启动或者不开启时,系统会在/etc/systemd/system/multi-user.target.wants/中建立或者删除链接
在这里插入图片描述
在这里插入图片描述

15.6.2、系统启动级别的脚本链接

default.target为系统启动级别的脚本链接
0 关机
1 单用户
2 无图形网络模式
3 无图形网络模式
4 无图形网络模式
5 有图形网络模式
6 重启

ls /lib/systemd/system/*.target  #查看系统启动级别脚本链接

在这里插入图片描述
模拟问题:

systemctl set-default reboot.target #系统在开机后进入无限重启模式

解决方案:
(1)在此界面按e进入编辑模式
在这里插入图片描述
(2)在第四行手动设定启动级别为5,然后按< crtl > + < x >启动
在这里插入图片描述
注:以上设定为手动设定,若要设置自动启动别为5,需在开机后做以下设定。

systemctl set-default graphical.target

15.7、破解超级用户密码

忘记超级用户密码解决方案:
(2)开机启动界面选择后按e进入编辑模式
在这里插入图片描述
(2)做以下更改
ro换成rw,即从只读挂载根设备变成读写挂载。
加上rd.break,在系统内核加载完成后终止系统启动
< crtl >+< x >启动
在这里插入图片描述
(3)进入系统单用户模式,当前模式默认使用root用户登陆。
在这里插入图片描述
(4)执行以下指令

chroot /sysroot/         #转换到真实系统
echo fake | spasswd --stdin root   #修改root用户密码为fake
touch /.autorelabel      #建立文件,该文件作用是让系统内核级加强型火墙(selinux)重新初始化,如果更改密码后selinux未被重新初始化,会组织新密码生效
# 注:此操作只有在selinux开启时需要

(5)exit执行两次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值