Linux下系统的恢复

一、系统启动过程

     系统启动过程

  1. 电脑通电
  2. BIOS(基本输入输出系统)芯片进行初始化 --
  3. 主动引导记录(Main Boot Recoder)512个字节 -----BIOS按照启动顺序,将控制权交给排在第一位的存储设备。即根据用户指定的引导顺序从软盘,硬件或可移动设备中读取启动设备的MBR,并放入指定位置内存中。 

MBR结构:

(1) 第1-446字节:调用操作系统的机器码。     可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统  
(2) 第447-510字节:分区表(Main Partition table)。由四个分区表项构成(每个16个字节)
(3) 第511-512字节:主引导记录签名(0x55和0xAA)。结束标志

      4.硬盘启动

       5.操作系统。先载入/boot目录下面的kernel,然后运行程序/sbin/init。。。。然后执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。

启动阶段介绍


   1.grub文件引导阶段
由文件/boot/grub2/grub.cfg控制流程
指定/boot分区位置——>加载内核——>启动系统初始化进程——>grub2-mkconfig

   2.内核引导阶段
检测硬件设备——>设备驱动初始化——>将/只读挂载——> 载入初始化进程systemd——>内核文件丢失请重新安装内核

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

二、系统进入挽救模式的方法:

  1、真机上打开虚拟机管理器:

           virt-manager

   2、插入镜像文件

   3、把光驱启动设置为第一个,然后启动。

注意:设置的时候f记得关闭虚拟机

       4、选择Troubleshooting(进入系统修复)

     5、进入Rescue  a  Res Hat Enterprise Linux  system(挽救模式)

6、挽救模式完毕,关闭虚拟机,然后改变启动顺序,此时系统启动成功。

三、系统启动出错恢复

1、硬盘引导阶段   mbr主引导记录的恢复


安全起见,对数据进行 先进行备份:

dd if=/dev/vda of=/mnt/yyz bs=512 count=1  

 含义就是:将MBR复制一份放到/mnt/yyz目录中。
      
模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1
   
                      含义就是:将主引导程序清空。   

解决方法: 

grub2-install    启动分区所在硬盘
grub2-install  /dev/vda


2.文件引导阶段发生错误   


1)、引导文件丢失

即/boot/grub2/grub.cfg文件丢失


模拟问题: rm -fr /boot/grub2/grub.cfg

     当系统没有从新启动时


grub2-mkconfig > /boot/grub2/grub.cfg      原理就是:重新制作一个文件将其导入该目录

     当系统重新启动时:

报错:

解决步骤

grub > set root='hd0,msdos1'     此位置是不固定的,位置指定/boot所在分区       hd0表示第一块硬盘   msdos1第一个分区

grub > linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1 #跟分区的设备名称       内核版本              只读挂在  根分区硬盘
grub > initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
grub > boot       启动系统镜像
#以上操作可以使系统正常启动,但是是临时的,所以进入系统后还是需要执行:
grub2-mkconfig > /boot/grub2/grub.cfg
加入引导文件


2)内核文件丢失


#模拟问题: rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64

进入到挽救模式trouble shooting 

chroot /mnt/sysimage   
mkdir /rhel7    
mount /dev/sr0 /rhel7
cd /rhel7/Packages             
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
cd  boot
ls -l  
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit
exit

该系统的信息可以进入引导文件内进行查看:

3)系统初始化镜像文件丢失
模拟问题: rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img

     当系统没有重启时
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

等价于initramfs-3.10.0-123.el7.x86_64.img
   $(uname -r)引用命令执行结果

     当系统重启后
进入挽救模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

 

4)当/boot分区被删掉后
mbr,镜像,内核都没了

进入到挽救模式
进来之后:
chroot /mnt/sysimage  修改用户到真实主机
mkdir /boot
grub2-install /dev/vda   安装mbr程序
mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
安装内核这个包
grub2-mkconifg > /boot/grub2/grub.cfg
引导文件的生成
然后两次exit

重启
然后用磁盘启动修复就好了

3、当开机启动级别被篡改

模拟问题:
systemctl set-default reboot.target  开机一直在重启 

#解决
1.开机按上下键停止读秒
2.按“e”进入编辑模式
3.选择内核启动行    
linux16 /vmlinuz-xxxxxx ro xxxxxxxxxxxxxx     改变为:
linux16 /vmlinuz-xxxxxx rw rd.break
4.ctrl +x 
5.chroot /sysroot        此时就可以修改密码
进入系统真实环境
6.rm -fr /etc/systemd/system/default.target
7.ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target      软链接
8.exit两次

4、root密码忘记

(1)重新启动系统
(2)在系统启动阶段按上下健停止系统系统引导
(3)选择启动引导标题,按“E”进行编辑
(4)找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd.break选项
(5)ctrl+x启动设定过后的系统引导条目
(6)进入系统后执行chroot /sysroot切换到真实的系统环境
(7)passwd root修改超级用户密码

                                     或者用echo keywords : passwd --stdin root

                                    意思就是将密码是keywords,输入到root的passwd 里即可修改成功
(8)touch /.autorelabel让系统从新扫描所有文件,不然可能修改失败,密码有问题
(9)exit两次使系统自动重新启动

   命令行界面往图形化界面切换用命令  init+空格+5

 

5、闪退

关闭虚拟机,从光盘启动进入挽救模式

 systemctl set-default reboot.target
 reboot
即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值