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系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...
- Linux系统7个运行级别图文详解
Linux系统7个运行级别图文详解 当安装linux操作系统时将选择下列那一个操作 ______ A.选择 "图形登录方式" 设定系统开始运行级为4 B.选择 "文本登录 ...
- 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解
Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...
- tecplot脚本在Linux系统下运行,Linux系统下安装Tecplot的步骤详解
众所周知,Tecplot是Linux系统中的数据分析软件,Tecplot的功能正在变得更加完善,使用的人群也在逐渐增多.下面,我们就跟随U大侠小编一起来看看Linux系统下安装Tecplot的步骤详解 ...
- tail是Linux命令吗,linux系统中tail命令的使用详解
Linux系统中tail命令是查看文件末尾内容的主要功能,下面由学习啦小编为大家整理了linux系统中tail命令的使用详解,希望对大家有帮助! linux系统中tail命令的使用详解 1 命令功能 ...
- linux只输入wc命令,Linux系统中wc命令的用法详解
在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...
- linux zcat 使用方法,Linux系统中zcat命令的知识详解
Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...
- linux中关于防火墙的命令,Linux系统中查看防火墙的命令详解
Linux系统中如果要查看到防火墙的状态信息要怎么办呢?下面由学习啦小编为大家整理了Linux系统中查看防火墙的命令详解,希望对大家有帮助! Linux系统中查看防火墙的命令详解:一.service方 ...
- 虚拟机下Linux系统的安装及项目部署详解
一 .工具介绍及百度云下载链接 百度云盘链接:http://pan.baidu.com/s/1nuHAWVf 密码:c9hr 云盘里没有CentOS,需要自己在网上下载 1. VirtualBox-5 ...
- Linux系统中FTP的配置(图文详解-全)
Linux系统中FTP的配置 二. 把安全级别调低 #vi /etc/selinux/config 注意:在RHEL4三.FTP软件包 #mount /d ...
最新文章
- numpy-random函数
- hashmap为什么容量是2的n次方
- springMVC 后端代码 如何用 @requestParam() 接收前台传过来的数组
- Google Guava缓存实现接口的限流
- Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
- Java学习——Java基本的程序设计结构笔记(一)
- 隐马尔可夫模型HMM[转载牛人,看了半天没看懂]
- Wireshark网络封包分析软件——过滤表达式
- Java核心技术36讲(整理)
- Visual Studio Code配置Salesforce Apex开发环境
- 如何将企业微信好友设置为外部联系人
- 【专业发展】技术领导力
- [编程实例]360漏洞修复(绿色版)制作器 v1.0
- qt打开xls文件_Qt中打开excel文件
- aardio - 制作启动等待动画窗口
- 什么是电阻器与电阻?
- 【云原生】Grafana 介绍与实战操作
- HC-SR501 人体红外感应模块 单片机
- 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接
- 东南大学计算机科学与工程学院收费,东南大学计算机科学与工程学院硕士研究生奖助学金评定细则...
热门文章
- JAVA版本微信管家平台—JeeWx 捷微 4.1 微服务版本发布,微信砍价活动闪亮登场!...
- android+复杂绘图工具,Inker - 专业级矢量图绘画工具,功能不输桌面应用 - Android 应用 - 【最美应用】...
- 【听译大师说话】python 创始人访谈录2: python 的起源,特点和未来
- 第七届中国数据挖掘会议纪要
- 我的世界java版高清修复_[1.7.5]Minecraft我的世界高清材质修复补丁MCPATCHER HD
- 中文域名目前的注册情况怎么样?
- 区块链Opyn ETH Put逻辑漏洞技术分析
- CodeForces 409C Magnum Opus
- android xml 中include的用法,Android include使用
- [RHEL7基础篇-2] 文本编辑器、基础命令与SSH服务