(linux基础17)Linux系统引导修复,各种系统疑难杂症

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言(linux启动引导过程)

在这里插入图片描述

第一步:通电(插腚开机)
问题解决:没电就去充电费吧
第二步:进入bios(bios初始化)

  1. 对硬件检测
  2. 初始化硬件时钟
    这里bios程序都是集成在主板上的,出了问题需要重刷bios程序或者找售后。

第三步:磁盘引导
这是本篇博客的重点,接下来将会使用虚拟机做实验,模拟问题及解决办法。

一、磁盘引导

  1. MBR(Master Boot Record)是装有Linux系统的硬盘的第一个扇区,成为主引导扇区,计算机开机直接访问的第一个扇区,其开头的446字节内容被称为主引导记录。
  2. mbr =0磁道1扇区446字节,用来记录grub2引导文件的位置,如果此数据丢失会因为找不到分区而停止启动。

1.实验环境准备

为了更好的展示实验效果和保险,所以准备一台虚拟机进行实验,也可以防止误操作损坏真机。
虚拟机不会搭建的可以看我前面的文章linux下kvm虚拟化部署

在这里插入图片描述
使用 fdisk -l 指令查看硬盘以及分区信息
系统磁盘:/dev/vda(*所在的分区对应的设备上有mbr)

在这里插入图片描述下面开始做实验。

2.恢复过程及恢复

1. 模拟0磁道1扇区446字节损坏
使用 dd if=/dev/zero of=/dev/vda bs=446 count=1 指令清空/dev/vda1上的mbr数据。注意446字节后面的64个字节是分区表,分区表一经损坏后,你就要知道设备开始的块和结束的块,所以一般分区表是备份的。
在这里插入图片描述

2. 开机现象

在这里插入图片描述

3. 修复过程

真机的话重进bois,选择从u盘启动或者从光驱启动
这里虚拟机我选择从光驱启动。
1、点灯泡
2、增加光驱,这里要加和本机一样的镜像版本,红帽8.2就选红帽8.2,一定要选一样。
3、调整启动顺序
4、设置从光驱启动,放到第一个即可,然后再启动

在这里插入图片描述在这里插入图片描述
在这里插入图片描述5、注意这个挽救模式使用的是光盘里的资源,而不是磁盘里的数据,它可以将磁盘里的系统挂载到光盘里的挽救环境中的/mnt/sysimage。
1)表示继续,
2)表示只读打开我们的系统,
3)表示不挂载系统,直接进入挽救的shell,
4)表示重启。
在这里插入图片描述6、使用 chroot /mnt/sysimage 指令,发现分区挂载正常了。
7、使用 grub2-install /dev/vda 指令重新安装grub2到系统硬盘上(重新给硬盘写mbr),发现没有产生错误。
在这里插入图片描述8、两次exit后重启后将启动顺序由光驱启动换成磁盘启动,成功进入系统。
在这里插入图片描述
在这里插入图片描述

二、grub2文件引导恢复

1.实验环境准备

依然是虚拟机环境,同一

1.文件位置:
rehl7:/boot/grub2/grub.cfg
rehl8:/boot/grub2/grub.cfg 及 /boot/loader/entries/xxxx.conf
在rehl8中,标题和要加载的文件已经从grub.cfg分离出去了,放在/boot/loader/entries/下。

2.作用: 指定/boot位置,指定系统启动时加载文件名称。

3.问题模拟:
rehl7:rm -fr /boot/grub2/grub.cfg
rehl8:rm -fr /boot/loader/entries/xxxx.conf 两个都要删掉
如果删掉一个,留下rescue文件,系统还是可以起来的。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.修复

2.1 只是删除文件,但还没有重启时修复:

rehl7:grub2-mkconfig > /boot/grub2/grub.cfg
rehl8:kernel-install add 内核版本号 内核镜像
kernel-install add $ (uname -r) /lib/modules/$ (uname -r)/vmlinuz
注意:uname -r命令可以得到linux版本号 ,$表示执行这个命令。

2.2 已经重启时修复,要进行手动引导:

(1)set root=“hd0,msdos1”(root是boot分区的挂载点,hd0表示第一块硬盘,msdos1表示第一块硬盘的第一个分区,使用df查看/boot分区在第几块硬盘就写什么)
(2)linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/vda3
(指定内核镜像文件和根分区文件所在的位置,内核加载时权限为只读,并通过“root=”来指定根分区设备文件的位置,/root在第二块硬盘,同样使用df查看/root分区位置)
(3)initrd16 /initramfs-4.18.0-193.el8.x86_64.img(指定系统初始化镜像)
(4)boot(启动),注意不是reboot(重启)。
在这里插入图片描述在这里插入图片描述(5)为了下次可以正常启动系统,我们要进行以下操作,这样就会恢复原来的两个文件。
在这里插入图片描述

三、内核被删除的恢复

1.文件位置: /boot/vmlinuz- $( uname -r)
2.加载内核作用:
(1)系统初始化硬件设备
(2)只读挂载/根设备
3.问题模拟:
rm -fr /boot/vmlinuz- $(uname -r),删除文件并重启。

1.环境准备

用虚拟机进行实验,删除内核,然后重启。
在这里插入图片描述
在这里插入图片描述

2.恢复方法

重装内核
(1)进入到挽救模式
在开机时迅速按上下键,以光盘方式启动,进入挽救模式。
在这里插入图片描述在这里插入图片描述

(2)chroot /mnt/sysimage(得到真实的根挂载)
在这里插入图片描述

(3)df 一下,光盘没有挂载就挂载一下 mount /dev/cdrom /media(其他也可以,我这里是westos)

(4)cd /westos/BaseOS/Packages
(5)cp kernel-core-xxx.rpm(可以tab补齐) /mnt
(6)cd /mnt/
(7)rpm2cpio -ivh kernel-core-xxx.rpm | cpio -id
(8)cd /lib/modules/xxx.el8.x86_64/
(9)cp vmlinuz /boot/vmlinuz-$(uname -r)
(10) exit退出,设置硬盘启动,重启即修复完成。
在这里插入图片描述在这里插入图片描述

**总结:就是boot下缺啥给补上即可**

四、镜像被删除的恢复方法

1.位置: /boot/initramfs-4.18.0-193.el8.x86_64.img
2.作用:
(1)加载系统时钟
(2)加载selinux
(3)加载系统主机信息
(4)加载/etc/fstab文件中磁盘挂载策略
(5)加载磁盘配额
(6)初始化系统程序开启开机启动服务
(7)开启虚拟控制台
(8)开启图形
比如开机启动服务脚本文件在哪里呢?
在目录/etc/systemd/system/multi-user.targer.wants内
3.问题模拟:
rm -fr /boot/initramfs-xxxx.img

1.实验环境准备

boot下删除镜像文件
在这里插入图片描述在这里插入图片描述

2.恢复过程

用光盘启动进入挽救模式(可看前面步骤),切换到真实的根环境,即可使用命令生成镜像
命令:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
在这里插入图片描述exit退出改为从硬盘启动即可:

在这里插入图片描述

五、系统启动级别

位置和级别:
位置: /etc/systemd/system/
在这里插入图片描述

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

5.1系统一直重启怎么破

模拟问题: systemctl set-default reboot.target
补充几个命令含义:
(1)systemctl set-default graphical.target:图形模式
(2)systemctl set-default multi-user.target:无图形模式
(3)systemctl set-default reboot.target:无限重启
(4)systemctl set-default poweroff.target:每次读取default文件时就会关机
比如:使用命令(3),default文件就链接到了reboot文件上。
在这里插入图片描述在这里插入图片描述解决办法

重启后按上下键,让系统先不要进入,然后按e,

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.root超级用户密码忘记了怎么去修改

修复步骤:
1.在开机选择界面先按上下键停到此界面,然后按进入到引导文件编辑模式。
2.在内核加载选项最后删除到ro选项
3.更改ro为rw(这样才能写)
4.加入rd.break参数(将内核启动打断)终止系统启动,进入单用户模式。
5. 使用 ctrl+x 指令启动
6.使用 chroot /sysroot 指令切换到我们真实的shell(此时已经是超级用户身份)
7.使用 echo 123 | passwd --stdin root 指令更改超级用户密码
8.当selinux开启时,必须使用 touch /.autorelabel 指令重新初始化selinux。(selinux关闭时,不用做这步操作)
9.两次退出,重新启动。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述最后退出用新密码登陆即可

在这里插入图片描述

六、/boot/*引导程序被删除怎么恢复

1.实验环境准备

命令rm -fr /boot/* 删除boot目录下所有文件/文件夹,重启
在这里插入图片描述
在这里插入图片描述

2.修复过程

  1. 光盘启动,进入挽救模式

  2. 切换根的shell
    在这里插入图片描述

  3. 挂载光盘
    在这里插入图片描述

  4. 到 /boot/目录下

  5. 安装引导文件

  6. 安装内核软件

  7. 把引导文件写到boot下

在这里插入图片描述
7. 退出切换硬盘启动就完成了。

在这里插入图片描述



努力-奋斗
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值