博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux云自动化运维基础知识22(系统恢复)
阅读量:7237 次
发布时间:2019-06-29

本文共 2366 字,大约阅读时间需要 7 分钟。

系统引导过程概述:

通电——bios初始化——grub2磁盘引导阶段——grub2文件引导阶段——指定boot分区所在位置——启动内核,只读/挂载设备——启动init程序进入初始化阶段——启动systemd初始化进程——取/etc/systemd/中的文件——启动程序——启动登陆环境。

系统启动流程:

一.通电

bios(主板上的只读存储中,basic input or output system)

作用:硬件检测,激活硬件

二.grub系统引导(grub引导分为两个阶段)

  1. 阶段1 mbr(主引导记录)

    主引导记录在硬盘上的0磁道,一扇区,446个字节

    dd if=/dev/zero of=/dev/vda bs=446 count=1 可以清空mbr
    进入到挽救模式,执行chroot /mnt/sysimage切换到真实/环境,
       并执行grub2-install /dev/vda

实验:mbr主引导分区损坏后修复方法

(1)实验之前首先要关闭selinux。 

1
vim 
/etc/sysconfig/selinux

如图将其改为disable,然后重新启动系统

(2)破坏掉mbr主引导分区

1
dd 
if
=
/dev/zero 
of=
/dev/vda 
bs=446 count=1

重新启动系统后发现无法启动

(3)设置光驱启动进入救援模式

(4)如上图输入1回车后会得到一个shell,此时执行df命令查看自己系统的根分区,然后执行

1
chroot 
/mnt/sysimage/

转换根分区,此时便切换到了真实的根环境,然后执行

1
grub2-
install 
/dev/vda

重新恢复mbr分区,接着exit两次退出,关闭虚拟机之后将启动调回硬盘启动,开机后便可正常启动。

2.阶段2 grub文件引导阶段

   找到/boot分区
   读取/boot/grub2/grub.cfg
   文件丢失,grub2-mkconfig >/boot/grub2/grub.cfg

实验:grub文件损坏后修复方法

(1)实验之前执行df命令查看自己的根分区和boot分区

 (2)删除grub文件引导

1
rm 
-fr 
/boot/grub2/grub
.cfg

(3)重新启动发现无法启动

(4)手动输入引导文件

1
set 
root=‘hd0,msdos1’     boot分区所在的位置
1
linux16 
/vmlinuz-3
.10.0-327.el7.x86_64 ro root=
/dev/vda3 
根分区所在的位置
1
initrd16 
/initramfs-3
.10.0-327.el7.x86_64.img  执行
1
boot  启动

此时可以开机,但是这是手动引导,为临时生效,开机后应该恢复/boot/grub2/grub.cfg文件

1
grub2-mkconfig > 
/boot/grub2/grub
.cfg

恢复文件之后系统就成功复原了。

三.启动内核,只读挂载/设备

检测设备
对设备驱动进行初始化
进入系统初始化阶段
内核丢失,从新安装内核安装包就可以解决
rpm -ivh kernel-xxxxx.rpm --force

实验:内核文件丢失后修复

(1)首先查看启动需要哪些文件

1
ls 
/boot      
查看启动分区的文件

(2)将内核文件删除后重新启动

1
rm 
-fr 
/boot/vmlinuz-3
.10.0-327.el7.x86_64    删除内核文件
1
reboot

(3)重新启动后发现无法正常开机,提示缺少内核文件

(4)设置光驱启动,进入救援模式,执行df命令可以看到此时自己真实系统的根目录为/mnt/sysimage,而此处显示的根为iso镜像的根。

(5)分解iso镜像中的内核包,并将内核文件拷贝到/mnt/sysimage/boot/

1
rpm2cpio 
/run/install/repo/Packages/kernel-3
.10.0-327.el7.x86_64.rpm |cpio -
id
1
cp 
/boot/vmlinuz-3
.10.0-327.el7.x86_64 
/mnt/sysimage/boot/

(6)exit 并且设置硬盘启动,重新启动。修复完成进入系统

四.系统初始化阶段

系统初始化阶段加载initrd镜像

开启初始化进程systemd
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务
开启虚拟控制台
启动图形

initramfs-`uname -r`.img丢失用:     mkinitrd initramfs-`uname -r`.img `uname -r`    恢复

实验:系统初始化加载initrd镜像损坏后恢复

(1)删除initrd镜像文件initramfs-3.10.0-327.x86_64.img

1
rm 
-fr 
/boot/initramfs-3
.10.0-327.x86_64.img   删除initrd镜像文件

(2)重新启动发现无法进入系统

(3)设置光驱启动,进入救援模式,执行chroot  /mnt/sysimage 切换到真实的根环境

(4)mkinitrd   /boot/initramfs-$(uname -r).img  $(uname -r)

 (5)ls   /boot/查看文件是否恢复,exit两次后设置硬盘启动,系统恢复正常

本文转自 lulu2017 51CTO博客,原文链接:http://blog.51cto.com/13132425/1954643

转载地址:http://hrgfm.baihongyu.com/

你可能感兴趣的文章
python中的中文编码问题
查看>>
安卓播放音频
查看>>
in linux system of ftp command
查看>>
Win API:之GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId
查看>>
***PHP $_FILES函数详解 + PHP文件上传 move_uploaded_file() 参数的正确写法
查看>>
Mysql中Group By使用Having语句配合查询(where和having区别)
查看>>
C#连接数据库
查看>>
重定向和管道的区别
查看>>
分层、链式分析、url、联系的长度
查看>>
C++实现ping功能<转>
查看>>
使用matplotlib绘制收入增长模型——线性积累型与指数复利型
查看>>
【Spark】Spark-Redis连接池
查看>>
网络流简介
查看>>
How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
查看>>
mybatis结合mysql批量操作及查询sql
查看>>
groovy gradle 构建配置
查看>>
Linux时间子系统(十五) clocksource
查看>>
BaseRecyclerViewAdapterHelper使用
查看>>
请说出三种减少页面加载时间的方法。
查看>>
HDU 2036 改革春风吹满地
查看>>