zoukankan      html  css  js  c++  java
  • CentOS 6 各种启动文件损坏及修复

    stage1 mbr的破坏和恢复

    清空mbr 前446字节

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

    如果没有挂载启动光盘,会显示这样

    clip_image001

    如果启动前挂载了光盘,则重启之后自动从光驱启动了

    clip_image002

    此时选择救援模式,Rescue installed system

    按照提示操作最后进入到shell

    修复mbr需要用到grub去修复磁盘,所以要先把根切到硬盘上

    chroot /mnt/sysimage

    运行grub-install进行修复

    grub-install /dev/sda

    查看一下

    hexdump -C -n 512 /dev/sda

    exit

    reboot


    stage1.5 数据破坏与修复

    1.5阶段的数据存放在mbr之后的27个扇区内,也就是13824个字节

    破坏掉1.5阶段的数据,无需全部破坏,我们用5120个字节试试.

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

    修复方法同样可以用grub-install


    重启进入救援模式

    chroot /mnt/sysimage

    grub-install /dev/sda

    reboot


    stage2  grub目录的破坏与修复

    删除文件但保留grub.conf

    重启,提示error 15 ,

    因为之前用grub-install修复过.所以之后启动系统都需要读取这些文件.


    除了grub.conf文件,其他文件依然使用grub-install来修复.


    进入救援模式

    chroot /mnt/sysimage/

    grub-install /dev/sda

    sync


    恢复grub.conf文件

    cd /boot/grub/

    可以使用scp命令通过网络其他主机copy一个过来

    也可以手动编辑一个grub.conf,内容格式如下

    clip_image003



    如果 /boot文件夹丢失

    进入救援模式

    切换根,挂载光驱

    chroot /mnt/sysimage/

    mount /dev/cdrom /mnt


    安装内核

    rpm -ivh /mnt/Packages/kernerl.... --force

    如果没切根 要加 --root=/mnt/sysimage/


    修复grub

    grub-install /dev/sda

    编辑恢复 grub.conf



    丢失/boot/ 和 /etc/fstab

    先修复 fstab

    执行mount 按照内容来猜测每一个设备分区对应的挂载点

    也可以 fdisk -l 按照分区大小来区分

    或者创建临时文件夹,挂载分区,查看其内容来确定

    mkdir /mnt /tmp

    mount /dev/sda1 /mnt/tmp;ls /mnt/tmp

    mount /dev/sda2 /mnt/tmp;ls /mnt/tmp

    ...


    按照上面得到的信息编辑fstab文件.

    vi /mnt/tmp/etc/fstab

    reboot


    此时已可以加载分区,但还需要恢复/boot文件夹.

    进入救援模式

    挂载光盘/mnt/cdrom

    安装内核

    rpm -ivh /mnt/cdrom/.... kernel.....rpm --root=/mnt/sysimage/ --force

    修复grub

    grub-install /dev/sda

    sync

    编写grub.conf

    vi /boot/grub/grub.conf

    reboot


    丢失/sbin/init

    用bash代替init


    救援模式

    读写方式重新挂载根

    mount -o remount.rw /

    如果之前在/dev/sda3有init的备份,则挂载/dev/sda3.并恢复备份

    mount /dev/sda3 /app

    mv /app/init /sbin


    如果没有备份,可以直接重装upstart.

    挂载光盘/mnt/cdrom

    安装

    rpm ivh /mnt/cdrom/CentOS_6.9_Final/Packages/upstart.xxxxxxxx.rpm –force


    逻辑卷被破坏

    通常centos默认安装分区是会使用逻辑卷的,但/boot一定会使用普通分区.

    clip_image004

    假设破坏导致/etc/fstab和/boot丢失

    删除 /etc/fstab和/boot

    reboot


    修复:

    1) 恢复逻辑卷

    进入救援模式

    使用命令查看磁盘和逻辑卷信息

    blkid

    lvs

    pvs


    挂载lv

    mkdir /mnt/root

    vgchange -ay 激活卷组

    mount /dev/VolGroup/Lv_root /mnt/root

    挂载boot分区

    mkdir /mnt/boot

    mount /dev/sda1 /mnt/boot

    编辑fstab内容,把主要磁盘挂载记录添加即可

    vi /mnt/root/etc/fstab

    其中UUID可以通过blkid获得

    reboot


    2)恢复/boot

    进入救援模式

    切换根

    chroot /mnt/sysimage/


    挂载光盘

    mkdir /mnt/cdrom


    安装内核

    rpm -ivh /mnt/cdrom/....kernel.....rpm –force


    修复grub

    grub-install


    启用swap

    blkid | tail -n1 >> /etc/fstab

    swapon -a

    swapon –s


    查看内存状态

    free

    reboot

  • 相关阅读:
    斗鱼的sidebar的实现简陋的demo
    angular JS中使用jquery datatable添加checkbox点击事件
    angular JS中使用jquery datatable添加ng-click事件
    Redis 中文文档
    操作word的
    Redis作为消息队列服务场景应用案例(入队和出队)
    nopcommerce 商城案例
    net 将手机号码中间的数字替换成星号
    V5客服
    EF 数据库迁移(Migration)
  • 原文地址:https://www.cnblogs.com/Q--T/p/8167876.html
Copyright © 2011-2022 走看看