CentOS启动故障排错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS启动故障排错相关的知识,希望对你有一定的参考价值。
一.MBR破坏
centos 6
通过dd破坏前512个字节,模拟mbr损坏。(事先要做好备份)
dd if=/dev/zero of=/dev/sda bs=1 count=512
查看破坏情况
hexdump -C -n512 /dev/sda
破坏前
破坏后
未重启的情况下,仅仅需要将备份的mbr重新读入即可
dd if=/root/mbr of=/dev/sda bs=1 count=512
#if后是读取内容的文件或设备 of后是目标设备或者文件
#这里不再截图,读取后即可恢复正常
重启后的现象(最好是挂载有镜像文件可以进入救援模式)
硬盘无法引导
解决方案
进入救援模式(在品牌logo是按相应的键进入引导,这里使用vm的方法)
1.在logo界面按ESC
2.选择光盘引导
3.选择救援模式启动
.4.等待一段时间后进入如下页面
5.一路回车,到网络配置选择no,挂载文件系统选择跳过,之后开启shell。
6.查看磁盘发现,发现可以识别磁盘,但是无法识别分区
7.这里我将mbr备份到了另一台同局域网的主机上,这里通过ifconfig配置ip,之后使用scp将备份取回
ifconfig
ifconfig eth0 192.168.242.110
scp [email protected]:/root/mbr ./
8.通过dd恢复mbr记录,之后重启,如果担心尚未写入可以使用sync命令去同步
dd if=mbr of=/dev/sda bs=1 count=512
重启后可以正常引导,同时查看mbr发现已经恢复
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
法二:grub命令
grub
root (hd0,0) 这里的root指的是/boot分区
setup (hd0) 写入到硬盘
quit
grub命令的修复依赖于/boot/grub下的文件,若这些文件被破坏则无法使用grub命令去修复
重启(救援模式下)
无法引导,现象如下
1.进入救援模式
这里进入和之前破坏mbr基本相同,但是在下图所示的地方要选择continue
2.切换根目录
chroot /mnt/sysimage
3.运行grub-install
grub-install /dev/sda
4.执行sync之后exit,reboot
centos7
centos7使用的是grub2,取消了正常启动系统后,通过grub命令进入grub终端的方式,与6相比,7可以使用grub2-install命令进行修复,具体过程同6基本相近。
重启后状态
进入救援模式修复
grub2-install后执行sync 退出根目录切换状态reboot,正常启动
破坏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阶段卡死,光标不断闪烁。
centos 7也与破坏1阶段相同
删除boot目录下的所有文件
centos 6
删除boot目录下所有文件
rm -rf /boot
重启后现象
法一:
1.进入救援模式
2.切换根目录
chroot /mnt/sysimage
3.挂载光盘
mount /dev/sr0 /media
4.复制光盘目录下的vmlinuz到/boot
cp /media/isolinux/vmlinuz /boot/
5.进入/boot目录并且生成initramfs.img文件
cd /boot
mkinitrd initramfs.img `uname -r`
6.使用grub-install 生成grub目录
grub-install /dev/sda
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必须在文件系统前进行引导。
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
3. 切换根目录
chroot /mnt/sysimage
4.生成grub目录
grub-install /dev/sda
5.编辑grub.conf配置文件
vi /boot/grub/grub.conf
6.保存,sync 退出根切换之后重启
sync
exit
reboot
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
3. 切换根目录
chroot /mnt/sysimage
4.生成grub目录
grub2-install /dev/sda
5.生成配置文件,grub2增加了一个自动查找文件生成配置文件的选项grub2-mkconfig,同时配置文件的后缀也改为了cfg
cd /boot/grub2
grub2-mkconfig -o grub.cfg
6.保存,sync 退出根切换之后重启
sync
exit
reboot
法二:
1.进入救援模式
2.切换根目录
chroot /mnt/sysimage
3.挂载光盘
mkdir /media
mount /dev/sr0 /media
4.复制光盘目录下的vmlinuz到/boot
cp /media/isolinux/vmlinuz /boot/
5.进入/boot目录并且生成initramfs.img文件
cd /boot
mkinitrd initramfs.img `uname -r`
6.使用grub-install 生成grub目录
grub2-install /dev/sda
7.编辑grub.confg配置文件
这里配置文件同样可以使用grub2-mkconfig生成,但是却无法识别手动拷贝的vmlinuz和initramfs.img文件,因此要手动修改配置文件。
grub2配置文件的参数可以参考下面这篇文章:
https://blog.csdn.net/lazyclough/article/details/5790385
8.配置完成后,sync,exit退出切换根模式,执行重启
这里centos7来说推荐使用方法一,grub2-mkconfig可以识别对应文件并且生成配置文件。
以上是关于CentOS启动故障排错的主要内容,如果未能解决你的问题,请参考以下文章