Linux系统引导过程及引导修复详解

Posted 是大姚呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统引导过程及引导修复详解相关的知识,希望对你有一定的参考价值。

Linux系统引导过程及引导修复

前言: 在我们启动Linux系统时,需要先通电,接着系统会自动进行bios初始化,对硬件进行检测并初始化硬件时钟,之后就进入了 Linux系统引导过程。Linux系统引导过程的具体内容和引导修复方法将在下文中进行详细介绍。在进一步说明前,由于我们在引导修复时需要利用光盘进入系统,所以需要事先为虚拟机westosvm添加一个挂载了系统镜像的光驱,具体操作如下:
1)为虚拟机westosvm添加光驱
注意:添加光驱必须在虚拟机关机的状态下,添加后再开机
在这里插入图片描述
2)挂载系统镜像到光盘
在这里插入图片描述

1、磁盘引导

Linux系统磁盘上0磁道1扇区内的446字节数据存储的是Linux系统的主引导记录mbr,mbr会告诉系统下一步应该读取哪个分区的数据,其中了记录grub2引导文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动。
a)实验步骤:问题模拟
1)查看系统启动分区/dev/vda1,其处于系统硬盘/dev/vda上
在这里插入图片描述
清空系统启动磁盘/dev/sda上的mbr数据
在这里插入图片描述
重启系统,系统找不到启动分区,停止启动
在这里插入图片描述
b)实验步骤:引导恢复
1)关闭虚拟机,设定用光驱启动系统,相当于读取光盘镜像内的数据,开启虚拟机,进入系统挽救模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2)chroot /mnt/sysimage切换到真实系统环境的shell下,重新安装grub2到系统硬盘/dev/vda(系统启动分区/dev/vda1所在的硬盘)上,即可恢复/dev/vda上的主引导记录mbr,关闭SELINUX,其开启状态下会影响系统的启动速度,退出系统在这里插入图片描述在这里插入图片描述
3)关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机,完成引导恢复
在这里插入图片描述
在这里插入图片描述

4、grub2文件引导

系统文件引导过程中需要用到以下两类引导文件:
一个主引导文件:/boot/grub2/grub.cfg
两个子引导文件:/boot/loader/entries/xxxxxxxxx.conf
主引导文件指定启动分区/boot位置,子引导文件指定系统启动时加载的文件名称,这两类文件丢失时系统无法启动。
在这里插入图片描述
问题一:主引导文件丢失
a)实验步骤:问题模拟
1)rm -fr /boot/grub2/grub.cfg删除主引导文件
在这里插入图片描述
2)重启虚拟机,无法成功开启,显示手动引导界面
在这里插入图片描述
b)实验步骤:引导恢复
1)进行手动引导:通过df命令查看包含系统启动文件的/boot分区位于/dev/vda1(系统第一块磁盘的第一个分区),系统启动时还需要读取根目录中的一些数据,/dev/vda3为系统根目录所在的设备在这里插入图片描述
根据查询结果手动指定系统启动磁盘、指定系统启动内核、挂载根目录、指定系统初始化镜像,开启虚拟机
在这里插入图片描述
2)grub2-mkconfig > /boot/grub2/grub.cfg重新生成主引导文件,引导恢复完成
在这里插入图片描述
问题二:子引导文件丢失
a)实验步骤:问题模拟
1)rm -fr /boot/loader/entries/xxxxxxxxx.conf删除子引导文件,重启虚拟机,无法成功开启(如问题一)在这里插入图片描述
b)实验步骤:引导恢复
1)手动引导,开启虚拟机(如问题一)
2)kerne-install add 内核版本号 内核镜像重新生成内核引导文件,引导恢复完成
注意:在生成内核引导文件前,需要先复制生成过程所需的辅助文件bls.conf到/boot下
在这里插入图片描述

5、内核加载

系统启动过程中通过加载/boot/vmlinuz-$(uname -r)这一内核初始化硬件设备,内核丢失后,系统报错无法重新启动。

a)实验步骤:问题模拟
1)rm -fr /boot/vmlinuz-$(uname -r)删除/boot下的系统内核
在这里插入图片描述
2)重启虚拟机,系统报错缺少内核文件,无法启动
在这里插入图片描述
b)实验步骤:引导恢复
1)关闭虚拟机,设定用光驱启动系统,相当于读取光盘镜像内的数据,开启虚拟机,进入系统挽救模式
在这里插入图片描述
2)复制光驱系统中usr下的内核文件到/boot中即可完成恢复
在这里插入图片描述
3)关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机
在这里插入图片描述

6、系统初始化镜像

系统启动过程中需要利用系统初始化镜像/boot/initramfs-4.18.0-80.el8.x86_64.img来实现以下功能:加载系统时钟;加载selinux;加载系统主机信息;加载/etc/fstab文件中磁盘挂载策略;加载磁盘配额;初始化系统程序开启开机启动服务;开启虚拟控制台;开启图形等等。系统初始化镜像丢失后,系统报错无法重新启动。
a)实验步骤:问题模拟
1)rm -fr /boot/initramfs-xxxxx.img删除/boot下的系统初始化镜像
在这里插入图片描述
2)重启虚拟机,系统报错缺少系统初始化镜像文件,无法启动
在这里插入图片描述
b)实验步骤:引导恢复
1)关闭虚拟机,设定用光驱启动系统,开启虚拟机,进入系统挽救模式
2)使用mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)命令重新生成系统初始化镜像文件
在这里插入图片描述
3)关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机

7、系统启动分区

系统在启动时需要首先读取/boot分区下的信息,其中包含了引导文件、系统内核文件、系统初始化镜像文件等数据,/boot分区下所有文件丢失后,系统无法正常启动。
a)实验步骤:问题模拟
1)rm -fr /boot/*删除/boot下的所有文件
在这里插入图片描述
2)重启虚拟机,系统无法启动
在这里插入图片描述
b)实验步骤:引导恢复
1)关闭虚拟机,设定用光驱启动系统,开启虚拟机,进入系统挽救模式
2)重新安装grub2到系统硬盘/dev/vda(系统启动分区/dev/vda1所在的硬盘)上,恢复/dev/vda上的主引导记录mbr;将光驱挂载到/mnt目录下,进入/mnt/BaseOS/Packages,重新安装系统内核(/boot下的文件都是在系统内核安装过程中自动生成的);重新生成主引导文件,恢复完成
在这里插入图片描述
3)关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机

8、系统启动级别

系统默认启动级别为5,即有图形网络模式,当系统默认启动级别改变时,系统有可能无法正常启动。
系统启动级别分别为:

级别号含义
0关机
1单用户
2无图形网络模式
3无图形网络模式
4无图形网络模式
5有图形网络模式
6重启

a)实验步骤:问题模拟
1)设定系统默认启动级别为6,重启虚拟机,系统会一直处于重启状态,无法开启虚拟机
在这里插入图片描述

b)实验步骤:引导恢复
1)在开机选择界面按 e 进入到引导文件编辑模式
在这里插入图片描述
2)在内核加载选项最后加入启动级别5,ctrl+x后可以成功开启虚拟机
在这里插入图片描述
3)设定系统默认启动级别为5,引导恢复完成
在这里插入图片描述

9、超级用户密码破解

超级用户登录密码忘记时,可以通过以下方式重置超级用户密码
实验步骤:引导恢复
1)在开机选择界面按 e 进入到引导文件编辑模式
在这里插入图片描述
2)在内核加载选项最后进行删除,删除到ro选项,更改ro为rw,加入rd.break参数终止系统启动进入单用户模式,ctrl+x启动虚拟机
在这里插入图片描述
在这里插入图片描述
3)切换到真实系统环境的shell下,修改超级用户密码,建立 /.autorelabel 文件,当 /.autorelabel文件存在时selinux会重新初始化,避免系统中存在的加强级内核防火墙使更改不生效
在这里插入图片描述
4)重启虚拟机,超级用户密码更改完成,可以成功登录超级用户

以上是关于Linux系统引导过程及引导修复详解的主要内容,如果未能解决你的问题,请参考以下文章

linux系统引导过程及引导修复

Linux系统引导过程及引导修复

linux(十六) 系统引导过程及服务控制详解

Linux操作系统的引导过程及初始化的必要操作详解

linux系统引导过程和故障修复

引导过程常见故障排除详解