复习之linux系统的引导修复

news2024/10/6 12:20:43

启动Linux系统时,需要先通电,接着系统会自动进行bios初始化,对硬件进行检测并初始化硬件时钟,之后就进入了 Linux系统引导过程。Linux系统引导过程的具体内容和引导修复方法将在下文中进行详细介绍。由于我们在引导修复时需要利用光盘进入系统,所以需要事先为虚拟机westosa添加一个挂载了系统镜像的光驱

ps:添加光驱时虚拟机必须关机

 一、磁盘引导

Linux系统磁盘上0磁道1扇区内的446字节数据存储的是Linux系统的主引导记录mbr,mbr会告诉系统下一步应该读取哪个分区的数据,其中了记录grub2引导文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动

1. 问题模拟

查看启动分区所在硬盘

[root@westosa ~]# fdisk -l

 清空系统启动磁盘/dev/sda上的mbr数据

ps:大小只能是446

[root@westosa ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1
1+0 records in
1+0 records out
446 bytes copied, 4.6178e-05 s, 9.7 MB/s
[root@westosa ~]# reboot

重启系统,系统找不到启动分区,无法启动,问题出现!

 2.引导修复

  • 关闭虚拟机,利用光驱启动虚拟机
  • 开启虚拟机,进入挽救模式
  • 重新安装grub2到启动硬盘/dev/vda
  • 关闭SELINUX,其开启状态下会影响系统的启动速度
  • 退出系统,关闭虚拟机
  • 设定用硬盘启动系统,成功开启虚拟机,完成引导恢复

(1)利用光驱启动虚拟机

打开虚拟机

(2)进入挽救模式

 (3)安装grub2到启动硬盘/dev/vda

 修改selinux文件为disabled否则会影响系统的启动速度!

(4)退出系统,关闭虚拟机

(5)重新设定用硬盘启动系统,成功开启虚拟机,引导修复成功!

 

二、grub2文件引导

系统文件引导过程中需要用到以下两类引导文件:
一个主引导文件:/boot/grub2/grub.cfg
两个子引导文件:/boot/loader/entries/xxxxxxxxx.conf
主引导文件指定启动分区/boot位置,子引导文件指定系统启动时加载的文件名称,这两类文件丢失时系统无法启动。

ps:文件损坏时,系统无法启动才需要手动指定操作,如果没有重启系统,直接重新生成引导文件即可!

 1. 主引导文件丢失

(1)主引导文件丢失--问题模拟

删除主引导文件,重启系统时

 发现系统无法重启,需要手动引导!

 (2)手动引导恢复

  • 指定启动磁盘
  • 指定系统内核+挂载根目录:注意要先df看看根的挂载目录
  • 指定系统初始化镜像
  • 启动系统
  • 重新生成主引导文件

 启动系统成功!!

 进入系统,重新生成主引导文件,引导恢复完成!

[root@westosa Desktop]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[root@westosa Desktop]# cd /boot/grub2/
[root@westosa grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc
[root@westosa grub2]# reboot

重启系统成功!

2. 子引导文件丢失

(1)子引导文件丢失---问题模拟

[root@westosa Desktop]# cd /boot/loader/entries/
[root@westosa entries]# ls
00ed87f1fef746369334a619c0a5db43-0-rescue.conf
00ed87f1fef746369334a619c0a5db43-4.18.0-193.el8.x86_64.conf
[root@westosa entries]# rm -fr *

此时启动系统失败!

 (2)手动引导恢复

  • 指定启动磁盘
  • 指定系统内核+挂载根目录:注意要先df看看根的挂载目录
  • 指定系统初始化镜像
  • 启动系统
  • 重新生成子引导文件

步骤与上相同!!进入系统重新生成内核引导文件!

  • 查看内核版本: uname  -r
  • 重新生成内核引导文件
[root@westosa Desktop]# uname -r
4.18.0-193.el8.x86_64
[root@westosa Desktop]# kernel-install add 4.18.0-193.el8.x86_64 /lib/modules/4.18.0-193.el8.x86_64/vmlinuz 

文件生成后,查看子引导文件已经存在!

再次重启系统,引导恢复成功!

 三、内核加载

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

1.问题模拟

删除系统内核

 如果及时发现,还没有重启系统,直接复制光驱系统中usr下的内核文件到/boot中即可完成恢复

复制方法有两种:

  • 先用uname -r查看内核名,在复制
  • 直接利用$(uname -r)复制
[root@westosa boot]# uname -r
4.18.0-193.el8.x86_64
[root@westosa boot]# cd
[root@westosa ~]# 
[root@westosa ~]# cp /lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/vmlinuz-4.18.0-193.el8.x86_64
[root@westosa ~]# cd /boot/
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# cp /lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/vmlinuz-$(uname -r)
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64

复制完成,则恢复成功!

2. 引导恢复

如果删除内核后重启系统了,则需要引导恢复!

  • 关闭虚拟机,利用光驱启动系统
  • 进入挽救模式
  • 复制内核文件到/boot
  • 关闭虚拟机,用硬盘启动系统,恢复成功

删除内核且重启系统了

[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# reboot

[点击并拖拽以移动]
​

 可见系统无法重启,则先关闭虚拟机,利用光驱启动系统!

 进入挽救模式!

chroot /mnt/sysimage切换到真实系统环境的shell下,复制内核文件到/boot

 然后退出系统,关闭虚拟机,利用硬盘启动系统!

 开启虚拟机,引导恢复成功!

 四、系统初始化镜像

系统启动过程中需要利用系统初始化镜像 /boot/initramfs-4.18.0-80.el8.x86_64.img来实现以下功能:加载系统时钟;加载selinux;加载系统主机信息;加载/etc/fstab文件中磁盘挂载策略;加载磁盘配额;初始化系统程序开启开机启动服务;开启虚拟控制台;开启图形等等。系统初始化镜像丢失后,系统报错无法重新启动。

1. 问题模拟

删除系统初始化镜像

[root@westosa Desktop]# cd /boot/
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img
[root@westosa boot]# 

如果删除后,没有重启系统,使用mkinitrd命令恢复镜像即可!

[root@westosa boot]# mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img
No kernel found in /boot
usage: mkinitrd [--version] [--help] [-v] [-f] [--preload <module>]
       [--image-version] [--with=<module>]
       [--nocompress]
       <initrd-image> <kernel-version>

       (ex: mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64)
Creating: target|kernel|dracut args|basicmodules 
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64

2.引导恢复

删除系统初始化镜像后,如果重启了系统,就需要引导恢复!

  • 关闭虚拟机,利用光驱启动系统
  • 进入挽救模式
  • 进入真实shell环境,恢复镜像,退出系统
  • 关闭虚拟机,利用硬盘启动系统,恢复成功
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img
[root@westosa boot]# reboot

和之前一样,关闭虚拟机,利用光驱启动系统并进入挽救模式!

 进入真实shell环境,恢复镜像!

 退出系统,关闭虚拟机,利用硬盘启动系统,引导恢复成功!

五、开机启动级别

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

系统启动级别分别为:

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

1.问题模拟

设定系统默认启动级别为6,重启虚拟机,系统会一直处于重启状态,无法开启虚拟机

[root@westosa Desktop]# systemctl set-default reboot.target 
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/reboot.target.
[root@westosa Desktop]# reboot 

2.引导恢复

  • 开机界面按 “e"  进入编辑界面
  • 内核后输入 5 ,ctrl x 启动系统
  • 设定系统默认启动级别为5,引导恢复完成

进入系统后,设定默认启动级别,引导恢复完成!

[root@westosa Desktop]# systemctl set-default graphical.target 
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
[root@westosa Desktop]# reboot

再次重启,系统正常启动!

 六、超级用户密码忘记

1.问题模拟

当忘记超级用户密码时,系统无法登录

 2. 引导恢复

  • 关闭虚拟机,开机界面“e" 进入编辑模式
  • 更改" rw rd.break", ctrl x启动系统
  • 转换根环境+修改root密码+建立selinux标识文件
  • 退出系统,引导恢复成功!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio 关于BottomNavigationView 无法预览视图我的解决办法

一、前言&#xff1a;最近在尝试一步一步开发一个自己的软件&#xff0c;刚开始遇到的问题就是当我们引用 com.google.android.material.bottomnavigation.BottomNavigationView出现了无法预览视图的现象&#xff0c;我也在网上查了很多中解决方法&#xff0c;最后在执行了如下…

腾讯云从业者认证考试知识点——云服务器

文章目录 云服务器的产品概览腾讯云服务器的优势腾讯云服务器选型腾讯云服务器计费方案 云服务器的产品概览 腾讯云服务器的产品&#xff1f; CVM云服务器&#xff08;Cloud Virtual Machine&#xff0c;CVM&#xff09;提供安全可靠的弹性计算服务。 可以在云端获取和启用 CV…

大数据课程D3——hadoop的MapReduce

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解MapReduce的作用和特点; ⚪ 掌握MapReduce的组件; ⚪ 掌握MapReduce的Shuffle; ⚪ 掌握MapReduce的小文件问题; ⚪ 掌握MapReduce的压缩机制; ⚪ 掌握MapReduce的推测执行机制…

docker存储空间报错解决(谨慎操作,会影响原来的容易镜像,不熟练切勿操作)

报错内容 [rootDream package]# docker build -t imapp . [] Building 21.0s (6/19)> [internal] load build definition from Dockerfile 0.1s> > transferring …

提升维修服务体验,轻松解决问题:揭秘上门维修小程序的关键功能与用户体验

当今社会&#xff0c;随着科技的发展&#xff0c;上门维修小程序成为了人们解决维修问题的首选。下面将介绍开发上门维修小程序时的必备功能&#xff0c;以及这些功能如何提供便利和增加用户体验。   在线维修预约功能&#xff1a;上门维修小程序提供了在线预约平台&#xff…

dreamStudio试用教程【AI绘画】

文章目录 dreamStudio 简介打开官网如下邮箱登录即可切换随机提示词新用户的试用次数目前只有25张图像&#x1f4d9; 预祝各位 前途似锦、可摘星辰 dreamStudio 简介 https://github.com/Stability-AI/StableStudio StabilityAI在官网上重磅宣布——旗下的文生图应用DreamStu…

SpringBoot(十)教你手把手自定义starter

一个月的时间&#xff0c;转眼已经到了我的SpringBoot系列的第十篇文章。还记得我的第二篇文章SpringBoot&#xff08;二&#xff09;starter介绍_springboot的starter_heart荼毒的博客-CSDN博客 曾经介绍过starter。starter除了官方提供的以外&#xff0c;我们也可以自定义。本…

【LeetCode每日一题】——766.托普利茨矩阵

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 766.托普利茨矩阵 四【题目描述…

iPhone 8 Plus透明屏有哪些场景化应用?

iPhone 8 Plus是苹果公司于2017年推出的一款智能手机&#xff0c;它采用了全新的玻璃机身设计&#xff0c;使得手机更加美观和时尚。 而透明屏则是一种新型的屏幕技术&#xff0c;可以使手机屏幕呈现出透明的效果&#xff0c;给人一种科技感十足的视觉体验。 透明屏是通过使用…

Java常用工具类

1、Date类 Date类主要用来存储时间&#xff0c;精确到毫秒&#xff0c;内部是通过一个long值来进行存储的。 2、Calendar&#xff08;日历类&#xff09; 主要用来处理时间&#xff0c;例如&#xff0c;获取时间的某个部分&#xff0c;改变时间的某个部分&#xff1b;对时间…

【go语言学习笔记】03 Go 语言深入理解

文章目录 一、指针详解1. 指针的声明和定义2. 指针的操作2.1 获取指针指向的值2.2 修改指针指向的值2.3 给指针变量分配内存 3. 指针接收者4. 什么情况下使用指针5. 指向接口的指针 二、参数传递1. 值类型2. 指针类型3. 引用类型3.1 map3.2 chan 4. 类型的零值 三、内存分配1. …

Android 9系统源码_音频管理(一)按键音效源码解析

前言 当用户点击Android智能设备的按钮的时候&#xff0c;如果伴随有按键音效的话&#xff0c;会给用户更好的交互体验。本期我们将会结合Android系统源码来具体分析一下控件是如何发出按键音效的。 一、系统加载按键音效资源 1、在TV版的Android智能设备中&#xff0c;我们…

vscode插件美化C/C++和HTML

配置html语言自动补全&#xff0c;在设置中搜索Emmet 设置->搜索 Emmet Abbreviation 验证自动补全 输入html&#xff0c;下键选择html:5&#xff0c;自动补全整个开头语言

极简在线商城系统,支持docker一键部署

Hmart 给大家推荐一个简约自适应电子商城系统&#xff0c;针对虚拟商品在线发货&#xff0c;支持企业微信通知&#xff0c;支持docker一键部署&#xff0c;个人资质也可搭建。 前端 后端 H2 console 运行命令 docker run -d --name mall --restartalways -p 8080:8080 -e co…

Maven引入本地第三方Jar包

背景 引入第三方的Jar包&#xff0c;本来是在项目结构的库里面引入的jar包&#xff0c;但是用maven打包时报错&#xff0c;所以后面想着用maven引入本地地址的方式。 解决方法 1.将Jar包放到根目录里面&#xff0c;我这边放在了lib文件中,如图所示&#xff1a; 2.在pom文件…

深空物联网通信中视频流的智能多路TCP拥塞控制|文献阅读|文献分析和学习|拥塞控制|MPTCP|SVC

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/categ…

【CAS6.6源码解析】ST的默认淘汰策略 MultiTimeUseOrTimeoutExpirationPolicy

本篇文章是对上篇文章【深度解析票据淘汰与过期策略】的一个补充&#xff0c;上篇文章主要分析了TGT的默认淘汰策略配置&#xff0c;ST的配置有TGT的默认配置有一些差异化&#xff0c;特别是ST是基于MultiTimeUseOrTimeoutExpirationPolicy这样一种淘汰策略&#xff0c;本文将详…

精密划片机行业发展趋势

划片机行业的发展趋势主要包括以下几个方面&#xff1a; 高精度、高效率的切割技术&#xff1a;随着半导体芯片的尺寸不断增大&#xff0c;切割的精度和效率要求也越来越高。因此&#xff0c;行业将继续推动切割技术的创新和发展&#xff0c;以提高划片效率和精度。 自动化和智…

百度地图点标记加调用

先看效果 PHP代码 <?phpnamespace kds_addons\edata\controller;use think\addons\Controller; use think\Db;class Maps extends Controller {// 经纬度计算面积function calculate_area($points){$totalArea 0;$numPoints count($points);if ($numPoints > 2) {f…

Blazor前后端框架Known-V1.2.9

V1.2.9 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazor…