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系统引导过程及引导修复详解相关推荐

  1. linux命令打包文件,Linux系统中打包文件的命令详解

    linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...

  2. Linux系统7个运行级别图文详解

    Linux系统7个运行级别图文详解 当安装linux操作系统时将选择下列那一个操作 ______ A.选择 "图形登录方式" 设定系统开始运行级为4 B.选择 "文本登录 ...

  3. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  4. tecplot脚本在Linux系统下运行,Linux系统下安装Tecplot的步骤详解

    众所周知,Tecplot是Linux系统中的数据分析软件,Tecplot的功能正在变得更加完善,使用的人群也在逐渐增多.下面,我们就跟随U大侠小编一起来看看Linux系统下安装Tecplot的步骤详解 ...

  5. tail是Linux命令吗,linux系统中tail命令的使用详解

    Linux系统中tail命令是查看文件末尾内容的主要功能,下面由学习啦小编为大家整理了linux系统中tail命令的使用详解,希望对大家有帮助! linux系统中tail命令的使用详解 1 命令功能 ...

  6. linux只输入wc命令,Linux系统中wc命令的用法详解

    在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...

  7. linux zcat 使用方法,Linux系统中zcat命令的知识详解

    Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...

  8. linux中关于防火墙的命令,Linux系统中查看防火墙的命令详解

    Linux系统中如果要查看到防火墙的状态信息要怎么办呢?下面由学习啦小编为大家整理了Linux系统中查看防火墙的命令详解,希望对大家有帮助! Linux系统中查看防火墙的命令详解:一.service方 ...

  9. 虚拟机下Linux系统的安装及项目部署详解

    一 .工具介绍及百度云下载链接 百度云盘链接:http://pan.baidu.com/s/1nuHAWVf 密码:c9hr 云盘里没有CentOS,需要自己在网上下载 1. VirtualBox-5 ...

  10. Linux系统中FTP的配置(图文详解-全)

    Linux系统中FTP的配置 二.    把安全级别调低           #vi /etc/selinux/config           注意:在RHEL4三.FTP软件包 #mount /d ...

最新文章

  1. numpy-random函数
  2. hashmap为什么容量是2的n次方
  3. springMVC 后端代码 如何用 @requestParam() 接收前台传过来的数组
  4. Google Guava缓存实现接口的限流
  5. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
  6. Java学习——Java基本的程序设计结构笔记(一)
  7. 隐马尔可夫模型HMM[转载牛人,看了半天没看懂]
  8. Wireshark网络封包分析软件——过滤表达式
  9. Java核心技术36讲(整理)
  10. Visual Studio Code配置Salesforce Apex开发环境
  11. 如何将企业微信好友设置为外部联系人
  12. 【专业发展】技术领导力
  13. [编程实例]360漏洞修复(绿色版)制作器 v1.0
  14. qt打开xls文件_Qt中打开excel文件
  15. aardio - 制作启动等待动画窗口
  16. 什么是电阻器与电阻?
  17. 【云原生】Grafana 介绍与实战操作
  18. HC-SR501 人体红外感应模块 单片机
  19. 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接
  20. 东南大学计算机科学与工程学院收费,东南大学计算机科学与工程学院硕士研究生奖助学金评定细则...

热门文章

  1. JAVA版本微信管家平台—JeeWx 捷微 4.1 微服务版本发布,微信砍价活动闪亮登场!...
  2. android+复杂绘图工具,Inker - 专业级矢量图绘画工具,功能不输桌面应用 - Android 应用 - 【最美应用】...
  3. 【听译大师说话】python 创始人访谈录2: python 的起源,特点和未来
  4. 第七届中国数据挖掘会议纪要
  5. 我的世界java版高清修复_[1.7.5]Minecraft我的世界高清材质修复补丁MCPATCHER HD
  6. 中文域名目前的注册情况怎么样?
  7. 区块链Opyn ETH Put逻辑漏洞技术分析
  8. CodeForces 409C Magnum Opus
  9. android xml 中include的用法,Android include使用
  10. [RHEL7基础篇-2] 文本编辑器、基础命令与SSH服务