美文网首页
启动流程和故障恢复

启动流程和故障恢复

作者: 王永清88 | 来源:发表于2017-09-03 13:18 被阅读0次

    centos6启动大体分为四部

    一、POST加电自检
    二、MBR引导
    三、GRUB
    四、加载内核
    其中,MBR引导有三部分组成

    1. 446个字节为boot loader
    2. 64个字节为分区表
    3. 2个字节为标记位 即 (55 aa)
    实验一:我们模拟对/boot/grub/*进行转移

    把/boot/grub/移动到/app下
    mv /boot/grub/
    /app
    把/app/grub.conf文件移动回/boot/grub/下
    mv /app/grub.conf /boot/grub/
    重启centos 6,我们发现系统可以正常启动。

    由此证明:系统启动二阶段只有一个grub.conf文件是可以启动的

    实验二:对系统启动第一阶段/dev/sda的前446(即boot loader)个字节进行破坏

    破坏一阶段/dev/sda的前446个字节
    dd if=/dev/zero of=/dev/sda bs=1 count=446
    查看被破坏的二进制的文件
    hexdump -C -n 512 /dev/sda
    可以看出前446个字节都为0

    1.png

    重新启动centos6就会发现系统无法启动,系统默认是进入光盘模式启动,这时我们需要进入救援模式

    进入救援模式后,我们使用df命令发现显示的根(/)不是我们系统原来的根(/),而系统原来的根(/)在/mnt/sysimage/下,需要切根操作,
    chroot /mnt/sysimage
    而被我们破坏的/dev/sda的前446个字节只需要一个命令就可以修复,那就是重新安装grub
    grub-install /dev/sda
    查看/dev/sda的前512个字节
    hexdump -C -n 512 /dev/sda
    发现前446个字节已经有内容了,即修复成功。

    2.png

    重启centos6发现可以启动成功。

    实验三:破坏1.5阶段(即跳过/dev/sda的前512个字节之后破坏512个字节)

    破坏前/dev/sda的前512个字节
    dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
    查看破坏后的二进制文件
    hexdump -C -n 1024 /dev/sda
    发现从标记位(55 aa)之后为0

    3.png

    重启centos6,无法启动,使用光盘引导,进入救援模式
    chroot /mnt/sysimage/ (切根)
    grub (使用grub手工引导)
    root (hd0,0)(hd0:代表第一个磁盘,后面的0代表第一个分区)
    setup (hd0)
    quit (退出)
    检查修复后的二进制文件
    hexdump -C -n 14000 /dev/sda
    修复成功,重启

    4.png
    实验四:把/boot/grub/grub.conf文件移除并恢复

    把/boot/grub/grub.conf文件移到/app下
    mv /boot/grub/grub.conf /app/
    重启centos6会发现1阶段和1.5阶段都可以启动,到2阶段是就会卡在grub界面无法启动

    5.png

    这里我们需要手工输入来引导系统启动
    grub>root (hd0,0)
    grub>kernel /vmlinuz-2.6.32-696.e16.x86_64 root=/dev/sda2
    grub>initrd /initramfs-2.6.32-696.e16.x86_64.img
    grub>boor(启动)

    6.png

    启动成功即修复完成

    实验五:对/boot/grub/文件夹进行删除并修复

    删除/boot/grub/文件夹
    rm -rf /boot/grub
    启用光盘救援模式,进入光盘救援模式后,切根(/)
    chroot /mnt/sysimage
    重新安装grub
    grub-install /dev/sda
    安装完成以后,需要我们在/boot/grub/下手工编写一个grub.conf文件
    vim /boot/grub/grub.conf
    格式如下:

    default=0
    timeout=3
    root (hd0,0)
    title wanglinux
    kernel /vmlinuz-2.6.32-696.e16.x86_64 root=/dev/sda2
    initrd /initramfs-2.6.32-696.e16.x86_64.img
    保存退出

    7.png

    编辑使用vi,而不是vim,编写格式如下

    8.png

    为了确保文件已写入,我们使用命令sync同步一下
    在使用exit退出两次进行重启,重启成功即修复完成。

    相关文章

      网友评论

          本文标题:启动流程和故障恢复

          本文链接:https://www.haomeiwen.com/subject/drmrjxtx.html