中秋干货之系统启动修复

在使用CentOS系统时,难免会有误操作而导致机器不能正常启动,这里介绍了多种启动失败的原因和修复的方法。

grub损坏类

  • grub 1stage 被破坏
    使用dd擦写MBR前446字节,即抹去stage1阶段
    中秋干货之系统启动修复

    [root@_2_ ~]# reboot #重启
    中秋干货之系统启动修复

    启动失败,找不到系统,这时只能借助光盘进入修复模式,重新安装grub
    中秋干货之系统启动修复

    插入光盘,启动系统,选择修复模式
    中秋干货之系统启动修复

    语言和键盘都选择默认就好
    中秋干货之系统启动修复

    是否启用网络功能,我这里不需要,选择否
    中秋干货之系统启动修复

    选择continue
    中秋干货之系统启动修复

    这里提示根文件系统在/mnt/sysimage下
    中秋干货之系统启动修复
    中秋干货之系统启动修复

    选择启动一个shell
    中秋干货之系统启动修复

    使用df查看分区信息,这时,原系统根被挂载至/mnt/sysimage/目录下
    中秋干货之系统启动修复

    这时我们先把根切换到原系统,再执行grub-install修复操作
    中秋干货之系统启动修复

    使用grub-install /dev/sda重装grub,,若不做根切换,则需指定--root-directory=/mnt/sysimage/
    中秋干货之系统启动修复

    使用两次exit退出根,选择reboot Reboot重启系统,
    中秋干货之系统启动修复
    中秋干货之系统启动修复

    系统已经起来了
    中秋干货之系统启动修复

  • grub 1.5 stage被破坏
    使用dd破坏磁盘512字节之后的扇区,然后重启,发现系统依然不能启动,
    中秋干货之系统启动修复

    解决思路还是重装grub,这次我使用grub命令行来重装grub,修复完成后重启
    中秋干货之系统启动修复
    中秋干货之系统启动修复

  • grub.conf丢失
    把/boot/grub/grub.conf文件移动至其他目录,然后重启系统,会出现grub命令行:
    中秋干货之系统启动修复

    这时我们可以手动编辑grub参数
       指明grub目录的根: root (hd0,0)
       指定内核路径及参数和真正根文件系统: kernel /vmlinuz-2.6.32-642.e16.x86_64 ro root=/dev/sda3
       指明initrd,内核系统驱动initramfs: initrd /initramfs-2.6.32-642.e16.x86_64.img
       重新引导操作系统: boot
    如果忘记根文件系统路径,可以进入修复模式查看
    中秋干货之系统启动修复

    可以看到系统已经启动,虽然能够进入系统,但是grub.conf配置文件还是缺失,需要我们手动创建
    中秋干货之系统启动修复

    中秋干货之系统启动修复

    重启,启动成功
    中秋干货之系统启动修复

  • vmlinuz文件丢失
    中秋干货之系统启动修复
    1、使用rpm重装kernel包

      挂载光盘        mount /dev/sr0 /media
      安装kernel包    rp -ivh kernel-2.6.32-642.el6.x86_64.rpm --replacepkgs

    中秋干货之系统启动修复

    中秋干货之系统启动修复
    2、使用rpm2cpio解压出vmlinuz包,再把vmlinuz复制到/boot下
    中秋干货之系统启动修复
       若系统已经不能启动,则在救援模式下先切换根目录,再使用以上两种方法

  • initramfs文件丢失
    使用mkinitrd命令

      mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

    中秋干货之系统启动修复
       若系统已经不能启动,则在救援模式下先切换根目录,再使用以此种方法

  • /boot目录被删除,系统无法启动
    中秋干货之系统启动修复
       ~]# reboot
    重启会进入grub命令行
    中秋干货之系统启动修复

    此时/boot文件全部丢失,即使手动也无法指定引导grub,需要进入救援模式

    1.切换根目录,使用grub-install安装grub
    中秋干货之系统启动修复

    2.安装kernel包生成vmlinuz和initramfs等文件
    中秋干货之系统启动修复

    3.编辑grub.conf配置文件
    中秋干货之系统启动修复
    启动成功
    中秋干货之系统启动修复

  • 若/etc/fstab和/boot/丢失
    中秋干货之系统启动修复

    重启会进入grub命令行,这时根文件系统不能挂载,我们要进入修复模式修复
    到这里会提示没有发现根文件系统,因为系统找不到/etc/fstab文件无法挂载,还是选择打开一个shell
    若根分区为普通分区
    使用blkid和fdisk -l查看分区信息,这里很容易发现/dev/sda1是是boot分区,sda2时swap分区,若我们此时不能分辨根分区,则把所有类似分区挂载起来,从分区信息中分辨根分区,这里我知道sda3是根,然后新建目录,把sda3挂载至此目录
    到这一步我们先增加根分区里的/etc/fstab文件,编辑完成后重启继续进入修复模式
    中秋干货之系统启动修复

    若根分区为逻辑卷
    如下图,只有boot是独立普通分区
    中秋干货之系统启动修复

    在修复模式下,看不到具体的逻辑分区
    中秋干货之系统启动修复

    使用lvscan能看到逻辑分区处于非活动状态,使用vgchange -ay激活逻辑分区,再次查看分区信息,看到了逻辑设备
    中秋干货之系统启动修复
    接下来还是需要挂载逻辑卷,创建/etc/fstab文件,我们先挂载根文件系统,再创建fstab文件呢
    中秋干货之系统启动修复
    中秋干货之系统启动修复
    然后重启进入修复模式,让系统能识别并挂载根
    中秋干货之系统启动修复
    已经识别到了



到这一步说明已经识别挂载了根分区,至此我们使用前述方法再修复/boot/分区,就能正常启动系统了
中秋干货之系统启动修复

了解原理之后,修复系统启动失败其实就是这么简单!

原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/46658

(0)
上一篇 2016-09-15 13:19
下一篇 2016-09-15 15:38

相关推荐

  • linux基础服务之DNS

    一、DNS简介 1、DNS:Domain Name System(域名系统),是互联网上IP和域名相互解析的分布式层级结构的数据库。DNS的出现能够使用户更好的更加方便的访问互联网,不用记IP地址来访问互联网,可以通过人类更容易记住域名来访问互联网。 2、DNS是一种C/S架构的服务器,客户机用于一个名字对应的地址,而服务器是为客户机提供查询的,查询由两种机…

    2017-05-29
  • Linux计划任务

    计划任务 工作当中有时候需要将某件事情在未来的某个特定的时间执行,而自己确不在机器旁,该如何是好?像这样在每天特定的时间内去安排做一些事情这样,一种事情我们就称之为例行性的计划任务,其实在我们的操作系统当中都有类似的例行性任务计划功能,那如何去像设定闹钟一种在Linux上指定例行性计划任务并实施,主要有两种工具:at和crontab   计划任务分…

    Linux干货 2016-09-19
  • VIM 详用!

    1、复制/etc/rc.d/rc.sysinit文件至/TMP目录,将/tmp/rc.sysinit文件的至少一个空白字符开头的行首加 :%s/^[[:space:]]/#/ 2、复制/boot/grub/grub.conf 至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s/[[:space:]]\+// 3、删除/tmp/…

    Linux干货 2017-08-20
  • 计算机的组成、Linux主流三大版本的区别、Linux的哲学思想、Linux的使用格式及命令的使用简略说明,以及如何查看命令帮助、FHS目录机构

    计算机的组成极其功能? 按功能来说计算机是由运算器、控制器、I/O系统(输入、输出系统)、存储器五部分组成。 运算器:即中央处理器(CPU)作为五大部分中心的主脑,对数据进行逻辑运算或算数运算。 控制器:主要是指内存设备,将读取到的数据临时保存在内存中这个过程被成为寻址。在cpu中也有属于自己的控制器称之为CPU的寄存器来进行多指令的行。 I/O系统:输入系…

    2017-12-03
  • 08.04 笔记总结

    1.ps axo  user,ruser,group,rgroup,cmd  //  ruser  表示程序发起的用户,一般是指系统当前的用户  //  user  表示程序的所有者。在大数情况下,两个用户都是系统当前的用户, 之后当程序被赋予suid的时候,可能user会发生变化。 2….

    Linux干货 2016-08-08
  • Linux进程及作业管理

    process 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 task struct:Linux内核存储进程信息的数据结构格式 task list:…

    Linux干货 2016-09-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 09:11

    写的很不错,图文并茂,很详细,