20.#.Centos启动各类故障状况分析

1.密码忘了

解决思路和方式:若是能用1模式破解直接破解,不能1破解直接光盘模式进入系统删除shadow文件中root密码便可。node

2.fstab 出现挂载错误

查看挂载博客中的详细解释,这里再也不赘述。linux

3.grub.conf中 initrd 和 kernel 项先后顺序写反了:

错误提示:

就是英文表示他俩顺序反了vim

解决思路:

调换顺序便可centos

解决步骤:

简单点:能够不用挂壁光盘模式,直接esc键进入选择菜单模式,而后按e编辑,用d删除initrd这一行并用o键删从新添加这一行,以实现调换顺序的目的,而后启动。(或者也能够在这里按c键进入命令行模式,而后直接输入kernel,root,initrd进入系统)网络

  • 注意启动以后进入系统仍须要修改/boot/grub/grub.conf文件为正确才行,上面的操做是在内存中的临时性修改,下次启动如若不修改文件正确仍是会这样。
    所以仍是直接进入光盘模式把文件修改正确一步到位更加方便!

4.启动盘MBR分区表64字节分区信息错误

错误显示:

硬盘直接没法挂载,没有分区格式,启动时启动一半便卡住ide

解决思路:

只能靠以前备份过的分区表来恢复此64字节的数据了
能够所有备份512字节,也能够只备份447到510字节的数据(注意地址比字节数少1,由于从0地址开始的)
建议两个都备份,若是只是分区坏了则还原的时候只修复分区信息便可。测试

解决步骤:

  1. 进入光盘救援,注意要跳过硬盘的检测(由于没法挂载)
  2. lsblk或者f(g)disk -l /dev/sda等查看硬盘
  3. 从网络或者其余设备scp备份过的分区64位字节数据
  4. 还原数据dd if=$backupDisk of=$Disk bs=1 count=64 seek=446
  5. 重启便可
  • 注意光盘救援模式从网络拷贝文件的时候,可临时配一个IP地址,这样才能连通内网网络,实现的话可用命令
    ifconfig ens33 IP地址/端口
    例如 ifconfig ens33 192.168.0.1/23
    或者ip a a 192.168.0.2/24 dev eth0

5.启动盘的前MBR 分区表446字节错误

  • 注意:此错误和后面的错误状况的显示状况相似,若是不知道详细错误缘由,所以用了grub-install命令以后,要按照后面的解决步骤来解决问题,只有知道仅仅是446字节错误的状况下才可按照下面的步骤较少的方法操做。

错误提示:

正如分析所示,若是有光盘挂载的话则直接进入光盘模式(由于启动盘的grubstage1错误)动画

解决思路:

光盘救援模式从新恢复grub1便可
注意在这里只是没法启动,分区表仍然存在,则硬盘的分区可以直接挂载(光盘启动就能检测到并挂载,文件系统也没有被破坏)。ui

结局步骤:

  1. 进入光盘救援模式
  2. 输入grub(无需切根) 在交互式模式下进行恢复(仅支持/boot下grub文件夹中的备份文件没有丢失,不然要用grub-install)
  3. 选择依靠恢复文件的boot文件夹的目录 grub > root (hd0,0) , 选择安装446字节MBR位置 grub > setup(hd0) . 退出quit (注意小括号前面有个空格)
  4. sync命令强制写入磁盘
  5. 安装完成后reboot.

image

5.2更方便而且更可靠的方式则是利用install安装修复grub,无需依赖grub文件夹中备份文件

  1. 进入光盘救援模式
  2. 切换根
  3. 执行命令grub-install /dev/sda 等待
  4. 成功以后重启便可
  • 注意以上是在stage2中没错误的状况下的命令,由于install也不能修复grub.conf文件,仍需手写它。

5.3有一种特殊状况:

就是计算机启动状态下运行了grub-install命令,而后把boot/grub文件夹下的grub.conf留下,其余的文件删除。在这种状况下表面上没错,可是却没法启动。会显示error 15错误,在这种状况下也只能按照上面的方式从新修复一次this

6.MBR 分区表512所有错误

解决思路:

先恢复分区表66位,再按上面方法恢复446字节grubstage1便可。

7./boot下grub文件夹丢失

错误显示:

error 15 (或者是进入了grub>的交互式界面,代表grub stagr2已经加载可是缺失了grub.conf文件)

解决思路:

恢复grub文件目录以及下面的grub.conf文件

操做步骤:

若是开机后是直接进入了grub>界面,(或者可开机后按任意键,而后按c键进入命令行)则能够直接补入grub.conf中kernel root initrd 的内容 (此方法为临时启动,启动后仍须要恢复文件,见下图)

image

若是error 15则:

  1. 光盘救援模式
  2. (不肯定缘由能够先按照上一个错误解决的第二个方法用,grub-install /dev/sda,而后再从这一步开始执行,若是知道是grub文件夹丢失缘由形成的问题,则)手动建立grub目录和grub.conf文件,注意位置要在mnt原来的系统根boot目录下。
  3. 书写格式参考下面,只须要写重要的四行便可(可用nano命令):
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password=
title CentOS 6 (2.6.32-754.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=d5db5e08-dc6d-4b6e-84fc-7e490e44ba0c rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-754.el6.x86_64.img
  1. sync,而后重启便可。

注意点:

  1. 那个是e(小写字母l)6,而不是e 16!
  2. 在开机界面修改的都是没法保存的,开机后必定要再次修改文件才可。
    6.10标准可这样写:
default=0
timeout=5
hiddenmenu :前三项要写在title的前面,写进去会出错
title Centos 6
        root (hd0,0)
        kernel /vmlinuz-2.6.32-754.el6.x86_64  ro  root=/dev/sda2
        initrd /initramfs-2.6.32-754.el6.x86_64.img

8.MBR 446字节(或者512字节)以及gurb文件夹所有丢失错误

错误提示:

由于开机找不到启动设备,则开机后它会按照顺序寻找启动设备。如如有光盘挂载则直接进入光盘中。

解决思路:

(如若512字节,则先恢复备份过的分区表)能够用grub-install命令直接恢复stage1(MBR446字节) stage1.5(第一个扇区以后的装有若干个文件系统驱动文件的扇区)以及stage2(除了grub.conf文件以外)的文件,而后手动写好grub.conf文件。

解决步骤(假设分区表已经恢复,硬盘能够挂载了):

  1. 进入光盘救援模式
  2. 切换根chroot /mnt/sysimage
  3. grub-install /dev/sda (如若boot不在root下,指明boot所在的上一级目录)
  4. 进入/boot/grub文件夹中,手动修改grub.conf文件(可按照上面的格式来写)
    • 小技巧:能够在vim中用r!ls /boot/vmlinuz-VERSION /boot/initramfs-VERSION.img 的方式读入内核和initrd文件名,以及root=UUID 可用r! blkid /dev/sda2命令读入,以避免不知名称如何手写。
  5. reboot

9.MBR 446 (或512)字节崩坏,boot整个目录丢失

错误提示:

同上,但若是仅仅是boot丢失,则会相似grub文件夹丢失显示error 15

解决思路

(先恢复分区表),进入光盘恢复模式后要先恢复boot目录中的必要文件,而后安装grub。其中1.内核文件(从光盘中直接拷贝或者从新安装内核包)2.虚拟文件系统建立(mkinitrd --help)3.grub文件夹(主要是grub.conf要在install以后手动书写)

解决步骤:

  1. 进入光盘救援模式
  2. 切换根chroot /mnt/sysimage
  3. 进入boot文件夹(/dev/sda1),拷贝光盘中的内核文件vmlinuz,而后根据此内核文件制做initramfs.img文件,此时能够再也不写版本了(不过注意grub.conf中也要相对应不写版本号了)
    • 不写版本号制做initrd:mkinitrd /boot/initramfs.img `uname -r`
      3.2 也能够直接rpm -ivh 光盘挂载点/Packages/kernel-VERSION.rpm --force --nodeps 安装内核文件包
  4. grub-install /dev/sda修复1阶段和1.5,部分2阶段
  5. 进入grub文件夹,修改grub.conf文件
    • 小技巧同上,不过这里要写上面安装或者复制后的内核和虚拟文件系统的文件名(若是上面没写版本,则这里也无需再写,)
    • root=UUID=XXX 也可这样写,注意UUID后面的不加引号,用blkid命令读入UUID
  6. reboot便可

10.内核img文件错误或者丢失

错误显示:

unable to mount root fs on unkonwn- block(0,0)

解决思路:

从新生成img文件或者从备份中(彻底同样的安装机器中相同的img文件或者说以前对/boot文件夹有过备份)恢复它

解决步骤

  1. 进入光盘救援模式
  2. 切换根目录到原系统根目录下chroot /mnt/sysimage (须要提早用lsblk查看在哪)
  3. 利用mkinitrd /boot/initramfs-$(uname -r).img $(uname-r) 命令从新生成initramfs文件;若是原img文件存在可是错误须要再加上--force。,若是丢失则不须要加上它。
    • 或反向单引号也行mkinitrd /boot/initramfs-`uname -r`.img `uname-r` :注意第二个参数是内核版本号
  4. 此时修复完毕重启便可

错误提示状态Centos6:

image

错误提示状态Centos7:

image

11.内核执行文件错误或者丢失

错误显示:

file kernel-Version not found

image

解决思路:

从光盘中或者相同版本机器中拷贝一份到原目录下便可(注意光盘中拷贝时须要更更名称,由于它不含有版本信息)

解决步骤:

  1. 进入光盘救援模式
  2. 找到光盘挂载的位置(/dev/sr0)和本来根挂载的位置
  3. cp 光盘挂载位置/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
  4. 重启

12.开机启动状态故障(inittab中设置错误不断重启或者关闭)

错误显示:

要么不断重启(6) ,要么开机就关机(0)

解决思路:

将/etc/inittab文件改正确(能够不用光盘救援模式,由于这个问题很简单)

解决步骤

Centos6:

  1. 开机运行至图标画面按esc按键,进入选择栏
  2. 而后按a按键,输入这次开机临时进入的模式(就是/etc/inittab下的6种模式),这里选择1或者2,3均可以
  3. 进入以后修改文件正确便可
    Centos7:
  4. 开机进入选择栏画面
  5. 按e按键进入grub.cfg的编辑界面
  6. 在linux16后面添加systemd.unit=multi-user.target,而后按ctrl+x按键 便可让这一次启动进入
  7. 进入系统以后仍要修改默认启动模式为正确的,用systemctl set-default graphical.target。

13.开机启动服务(service,在/etc/init.d中的)加载故障卡住

错误显示:

starting 服务名 (就卡在这种状态下,这一行前面可能有许多staring 服务名 [OK])

解决思路:

跳过此服务启动,本次启动不启动此服务。等进入系统以后查找此服务错误缘由,修正后再开机启动它

解决方法:

  1. 卡主以后重启电脑(可按ctrl+alt+delete,若是这个被禁用了则想其余方法),而后进入开机启动画面按esc按键
  2. 进入以后按a,而后输入1,单用户启动。(利用单用户启动基本上不会启动任何守护进程的特性来跳过卡住的服务的启动过程)
  3. 利用chkconfig --list 服务名 命令来查看卡住的服务的错误缘由并修复。若是短期内没法修复,则先利用chkconfig 服务名 off 命令先关掉此服务开机启动,而后正常启动计算机
  4. 正常启动后再慢慢寻找缘由修复服务,先保证计算机能启动而且提供其余的正常业务进行。

14.终极破坏(分区和LVM逻辑卷混用环境下):fstab丢失;(MBR 512字节破坏,主要是分区表破坏);boot目录丢失

错误显示:

如若先不考虑512字节损坏问题,则开机后找不到grubstage2,有可能直接进入gurb命令行模式(grub >) ,或者显示error 15错误
如若考虑512字节错误,则直接没法引导,同上。

解决思路和步骤分析:

先不考虑512字节(主要是分区表),它就按照备份恢复的方法来恢复便可。注意分区恢复必定是在任何操做以前的操做,包括下面的操做以前要先恢复备份的分区表。

  1. 后面的解决方案在前面已经提到过,主要是fstab的问题。由于找不到挂载关系,没法挂载各个分区以及各个逻辑卷,就算进入光盘模式也没法修复。所以主要就是想办法修复fstab
  2. 在这里进入光盘模式后主要用fdisk -l ; df ;blkid;lvs;vgs;pvs等等命令查看逻辑卷以及分区信息。所以工做中的逻辑卷在最开始建立的时候就必定要写清楚卷名或者label(好比lv_boot、lv_root、lv_swap、lv_data、lv_home等等,没写好的话工做中最好用lvrename更名),这样才能想办法恢复fstab,否则就就算是神也救不了,不知道逻辑卷到底对应的挂载关系是什么.
    • 这里测试用的查看到信息为的boot分区直接就是本地硬盘第一个分区/dev/sda1 ,而/dev/sda2是物理卷,这个卷组分出了三个逻辑卷分别为home,root和swap
  3. 查看信息知道逻辑卷对应的挂载关系是什么以后,逻辑卷仍然没法使用,由于没有启动rc.sysinit脚本,逻辑卷默认不会激活,会显示NOT available状态(可在lvdisplay中看到)。所以要先激活它们,能够用vgchange -ay来激活LVs

image

4.激活以后就可挂载了,此时建立一个临时文件夹,把lv_root卷挂载到此文件夹上,而后进入etc,手动书写fstab.例如

  • 小技巧2:能够用ls 文件 >> fstab的方式追加剧定向文件名到文件中,上面的书写grub也可这样用(由于没有VIM命令,vi老是出问题)
  • 注意挂载的时候要提早查并获知文件格式等。
  • 注意挂载的时候可能提示要指定文件系统,这样的话可用mount -t type.(分区表恢复后重启能够解决这个问题,此时不能跳过检测硬盘,直接continue,才能继续下一步切换根并grub-install)
  • 切换根以后能够用vim命令,注意别把fstab装到光盘启动盘中去了
/dev/sda1             /boot    ext4     defaults 0 0
/dev/VolGroup/lv_root /        ext4     defaults 0 0
/dev/VolGroup/lv_home /home    ext4     defaults 0 0
/dev/VolGroup/lv_swap swap     swap     defaults 0 0
  1. fstab写好以后,从新进入救援模式让它生效并挂载好各个分区信息。而后此时即可以按照前面的解决方案修复grub以及boot文件夹了。
    • 注意书写grub.conf的时候 root=/dev/VolGroup/lv_root ,不是sda2了

15.centos7中的boot文件夹直接删除

错误提示:

直接进入了grub rescue> 命令行,说明进入了grubstage2阶段

解决思路:

相似6中的boot被删除的修复操做便可,就是命令和细节稍有变化

解决步骤:

  1. 进入光盘救援模式
  2. 切根,挂载光盘
  3. 利用rpm -ivh Package/kernel-VERSION --nodeps --force的方式拷贝出来vmlinuz-VERSION和initramfs_VERSION.img文件(固然也可光盘直接拷贝),注意安装的时候须要时间等待。
  4. 而后grub2-install /dev/sda 安装,固然也缺乏gurb.cfg文件
  5. 而后利用grub2-mkconfig -o /boot/grub2/grub.cfg 生成它
  6. sync ,reboot便可
grub2中的:
--boot-directory=DIR   install GRUB images under the directory DIR/grub2
                             instead of the boot/grub2 directory

A.注意点:

  1. 没有lsblk命令,可用blkid ,fdisk -l ,df 命令代替( 本身弄一个U盘linux盘来修复也行,题外话了)
  2. 逻辑卷的各类命令来查看逻辑卷信息,lvs lvdisplay vgs vgdisplay pvs pvdisplay
  3. 使用lvrename命令更改逻辑卷名
    lvrename /dev/VolGroup00/LogVol00 /dev/VolGroup00/lv_root
    lvrename /dev/VolGroup00/LogVol01 /dev/VolGroup00/lv_swap

B.由此可看出重要的,须要备份的文件

  1. MBR分区表512字节
  2. /boot整个文件夹(img,vmlinuz,grub文件夹中grub.conf)
  3. /etc整个文件夹(/etc/fstab /etc/inittab等不少配置文件)
相关文章
相关标签/搜索