在使用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
评论列表(1条)
写的很不错,图文并茂,很详细,