发表于 2019-2-16 13:27:53

CentOS启动故障排错

一.MBR破坏

centos 6
    通过dd破坏前512个字节,模拟mbr损坏。(事先要做好备份)

      dd if=/dev/zero of=/dev/sda bs=1 count=512

    查看破坏情况

      hexdump -C -n512 /dev/sda
    破坏前
http://i2.运维网.com/images/blog/201805/12/4055590b120bc1d424b7e2bb374a66b6.png
  破坏后
http://i2.运维网.com/images/blog/201805/12/0f225157ffeb7b5abc82d6cafdf36509.png
  未重启的情况下,仅仅需要将备份的mbr重新读入即可

    dd if=/root/mbr of=/dev/sda bs=1 count=512
#if后是读取内容的文件或设备 of后是目标设备或者文件
#这里不再截图,读取后即可恢复正常
    重启后的现象(最好是挂载有镜像文件可以进入救援模式)
  硬盘无法引导
http://i2.运维网.com/images/blog/201805/12/a4121cea8c6deda9c4dd48048559ce7a.png
  解决方案
  进入救援模式(在品牌logo是按相应的键进入引导,这里使用vm的方法)
  1.在logo界面按ESC
http://i2.运维网.com/images/blog/201805/12/50e4f7a79fdfd88a9cde4c69adb08861.png
      2.选择光盘引导
http://i2.运维网.com/images/blog/201805/12/9f8afdd98cffd3f27d3834fc25bbc851.png
      3.选择救援模式启动
http://i2.运维网.com/images/blog/201805/12/eb556eada7b707e2abaabd62b1470207.png
  .4.等待一段时间后进入如下页面
http://i2.运维网.com/images/blog/201805/12/331d8f783490f64d0b658c309b90b94a.png
  5.一路回车,到网络配置选择no,挂载文件系统选择跳过,之后开启shell。
http://i2.运维网.com/images/blog/201805/12/e1445bae1773089948987ae4307d1bd4.png
http://i2.运维网.com/images/blog/201805/12/1a12faa424228d1becb6f78100543ce3.png
http://i2.运维网.com/images/blog/201805/12/67aed136601e6ba57c1e014d7c2250f7.png
  6.查看磁盘发现,发现可以识别磁盘,但是无法识别分区
  7.这里我将mbr备份到了另一台同局域网的主机上,这里通过ifconfig配置ip,之后使用scp将备份取回

      ifconfig
ifconfig eth0 192.168.242.110
scp root@192.168.242.100:/root/mbr ./

http://i2.运维网.com/images/blog/201805/12/cad79e0b5138cdcde0c35f659797f431.png
  8.通过dd恢复mbr记录,之后重启,如果担心尚未写入可以使用sync命令去同步

            dd if=mbr of=/dev/sda bs=1 count=512
http://i2.运维网.com/images/blog/201805/12/2d4463c485216fa7b992a8805a17f6ba.png
  重启后可以正常引导,同时查看mbr发现已经恢复
http://i2.运维网.com/images/blog/201805/12/c4f8f2eb82f6482594f9e626e8f9228b.png

centos 7的恢复与6基本相同,仅仅是救援模式的界面略有差别,这里不过多重复书写

破坏grub第一阶段
    破坏前446个字节,模拟grub第一阶段的损坏

    dd if=/dev/zero of=/dev/sda bs=1 count=446
centos 6
  未重启
        法一:grub-install可以实现1 1.5 2的全步骤恢复

            grub-install /dev/sda
http://i2.运维网.com/images/blog/201805/12/a99fc013c88c8936e2606f96a515d3ca.png
      法二:grub命令

            grub
root (hd0,0) 这里的root指的是/boot分区
setup (hd0) 写入到硬盘
quit
http://i2.运维网.com/images/blog/201805/12/0b85fffd966ccd99567e52af34786272.png
grub命令的修复依赖于/boot/grub下的文件,若这些文件被破坏则无法使用grub命令去修复
  重启(救援模式下)
        无法引导,现象如下
http://i2.运维网.com/images/blog/201805/12/25a5e96780a04f4f8fae56a401bcd2d8.png
        1.进入救援模式
              这里进入和之前破坏mbr基本相同,但是在下图所示的地方要选择continue
http://i2.运维网.com/images/blog/201805/12/60399d02c70728adb018490c50e3fe0b.png
        2.切换根目录

                  chroot /mnt/sysimage
http://i2.运维网.com/images/blog/201805/12/d7965dc4e77b2ba0b43a541b98c8e105.png
      3.运行grub-install

      grub-install /dev/sda
http://i2.运维网.com/images/blog/201805/12/6b72032a62d691822d057bf26e039916.png
        4.执行sync之后exit,reboot
http://i2.运维网.com/images/blog/201805/12/70307e48a569aed014bcfd67147e885e.png
http://i2.运维网.com/images/blog/201805/12/4cb963f8f53c258232b708f2cb58f5b1.png

centos7
    centos7使用的是grub2,取消了正常启动系统后,通过grub命令进入grub终端的方式,与6相比,7可以使用grub2-install命令进行修复,具体过程同6基本相近。
http://i2.运维网.com/images/blog/201805/12/66c39411680967109c78bd19774cd800.png
  重启后状态
http://i2.运维网.com/images/blog/201805/12/c67b5232a7476dcf77d0b7caa5f99eef.png
  进入救援模式修复
http://i2.运维网.com/images/blog/201805/12/580e926005d4385bedf1c4429d16de63.png
  grub2-install后执行sync 退出根目录切换状态reboot,正常启动
http://i2.运维网.com/images/blog/201805/12/f83fcdfaeffd3f25bda65ad8b92a6978.png

破坏grub的1.5阶段

centos 6
    使用dd模拟破坏1.5阶段


dd if=/dev/zero of=/dev/sda bs=1 count=10000 skip=512 seek=512
    破坏1.5阶段可以上述破坏1阶段完全一样的解决方案,因此不做重复书写
  重启后的现象,硬盘可以正常引导第一阶段,但是会在1.5阶段卡死,光标不断闪烁。
http://i2.运维网.com/images/blog/201805/12/ee1b0b47ec7dcad8552ba5488d835f02.png

centos 7也与破坏1阶段相同

删除boot目录下的所有文件

centos 6
    删除boot目录下所有文件

      rm -rf /boot
    重启后现象
http://i2.运维网.com/images/blog/201805/12/d9d44d02bf52c779fb523f6ab5b93a6e.png
  法一:
                1.进入救援模式
        2.切换根目录

      chroot /mnt/sysimage
      3.挂载光盘

      mount /dev/sr0 /media

http://i2.运维网.com/images/blog/201805/12/3bff26864b94402ae959ea85617b5e5a.png
                4.复制光盘目录下的vmlinuz到/boot

            cp /media/isolinux/vmlinuz /boot/
http://i2.运维网.com/images/blog/201805/12/ee58092cba84e887bbc2c03ef2c0e22c.png
          5.进入/boot目录并且生成initramfs.img文件

            cd /boot
mkinitrd initramfs.img `uname -r`
http://i2.运维网.com/images/blog/201805/12/241cdf137de27f35b678a2065458740b.png
          6.使用grub-install 生成grub目录

      grub-install /dev/sda
http://i2.运维网.com/images/blog/201805/12/bb8d4be207953da3d47e562b8cc17d22.png
          7.编辑grub.confg配置文件

    vim grub/grub.conf

            default=0
timeout=5
title linux
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
#这里的root指的是根目录 kernel和initrd 后跟的是/boot目录下的对应文件
#若根和boot在同一分区则应当写成
kernel /boot/vmlinuz root=/dev/sda2
initrd /boot/initramfs.img
    这里的kernel和initrd选项不能互换,kernel必须在文件系统前进行引导。
http://i2.运维网.com/images/blog/201805/12/4e9814fa8f9927fe7cc5f1f1eb28a49a.png
        8.配置完成后,sync,退出切换根模式,执行重启
  法二
          1.进入救援模式
    2.挂载光盘并且rpm -ivh kernel-version.rpm --root=/mnt/sysimage/ --force强制安装

                  mkdir /media
mount /dev/sr0 /media
rpm -ivh /media/Packages/kernel-2.6.32-696.el6.x86_64,rpm --root=/mnt/sysimage/ --force
http://i2.运维网.com/images/blog/201805/12/b59fb939fd5697871ba24f2e6be19069.png
          3. 切换根目录

      chroot /mnt/sysimage
          4.生成grub目录

      grub-install /dev/sda
http://i2.运维网.com/images/blog/201805/12/d35e1e62028040506394b040acf24fc0.png
        5.编辑grub.conf配置文件

    vi /boot/grub/grub.conf

http://i2.运维网.com/images/blog/201805/12/982a4073838d98f9b4449b232d12bc9f.png
          6.保存,sync 退出根切换之后重启

    sync
exit
reboot
http://i2.运维网.com/images/blog/201805/12/5ac8d2acac40b1d05f2273df21d95ef4.png

centos7
    centos7系统法恢复方式和6流程基本相同,但是由于centos7使用了grub2,因此在某些阶段会有一些差别
      法一:
        1.进入救援模式
    2.挂载光盘并且rpm -ivh kernel-version.rpm --root=/mnt/sysimage/ --force强制安装

                  mkdir /media
mount /dev/sr0 /media
rpm -ivh /media/Packages/kernel-3.10.0-862.el7.x86_64,rpm --root=/mnt/sysimage/ --force
http://i2.运维网.com/images/blog/201805/12/8f1cecfcb9c06db47fef0c9e097a3db7.png
    3. 切换根目录

      chroot /mnt/sysimage
      4.生成grub目录

      grub2-install /dev/sda
      5.生成配置文件,grub2增加了一个自动查找文件生成配置文件的选项grub2-mkconfig,同时配置文件的后缀也改为了cfg

    cd /boot/grub2
grub2-mkconfig -o grub.cfg
http://i2.运维网.com/images/blog/201805/12/bb31f757c8195551dcb00881ae2803d4.png
        6.保存,sync 退出根切换之后重启

    sync
exit
reboot
http://i2.运维网.com/images/blog/201805/12/79243584d5622edaa01b054a31d77776.png
    法二:
        1.进入救援模式
        2.切换根目录

      chroot /mnt/sysimage
      3.挂载光盘

      mkdir /media
mount /dev/sr0 /media
      4.复制光盘目录下的vmlinuz到/boot

            cp /media/isolinux/vmlinuz /boot/
http://i2.运维网.com/images/blog/201805/12/7347b4d2df044f208169a12dec8a2c80.png
    5.进入/boot目录并且生成initramfs.img文件

            cd /boot
mkinitrd initramfs.img `uname -r`
      6.使用grub-install 生成grub目录

      grub2-install /dev/sda
http://i2.运维网.com/images/blog/201805/13/f131c7ce7878054434bb7fd7b7c54887.png
    7.编辑grub.confg配置文件
    这里配置文件同样可以使用grub2-mkconfig生成,但是却无法识别手动拷贝的vmlinuz和initramfs.img文件,因此要手动修改配置文件。
  grub2配置文件的参数可以参考下面这篇文章:

                https://blog.csdn.net/lazyclough/article/details/5790385
http://i2.运维网.com/images/blog/201805/13/99b901f44e5bc60404720dd9d18db513.png
    8.配置完成后,sync,exit退出切换根模式,执行重启
  这里centos7来说推荐使用方法一,grub2-mkconfig可以识别对应文件并且生成配置文件。



页: [1]
查看完整版本: CentOS启动故障排错