当我们系统出错【由人为或者手残等操作引起】,无法开机,或者加载失败时,经常会是因为如下的一些可能:
我们来一一讲解。
一:硬盘引导出错:
首先我们先来看下当硬盘引导出错时是怎样的一个样子:
当然你一定会想要知道是什么原因导致的这个错误,以及该如何去解决。
MBR(Master Boot Record主引导记录),记录了/boot目录所在分区位置,磁盘的0磁道1扇区的前446字节。
当该记录被更改时,就会出现磁盘引导出错。
比如说我们可以执行下面的指令,让系统出错:
dd if=/dev/zero of=/dev/vda bs=446 count=1
之后就会进入上图所示的那个情况,系统找不到引导进入下一步。
如何解决呢?这里需要有系统镜像文件。我们已经将镜像挂载到了光驱里。u盘也可以。
这里我们就要进入镜像中的救援模式,去处理这个问题了。
1.进入救援模式:
2.接下来我们就成功进入救援模式了,需要使用grub2-install命令重建bootloader
3.上面两次exit退出后,因为我们还是镜像启动,所以不会进入真正系统的启动界面。所以要切换回磁盘启动。
4.做完上面工作系统就可以正常启动了。
二:引导文件丢失:
GRUB 2是GNU GRUB(GRand Unified
Bootloader)的最新版本。bootloader(引导程序)是计算机开机后(bios自检之后)第一个运行的软件程序,它负责加载操作系统内核并把控制权交给操作系统内核。之后,操作系统内核初始化操作系统的其他部分。
在grub 2引导启动时,会读取配置文件/boot/grub2/grub.cfg
当执行下面指令时,就会导致引导文件丢失,重起会进入下图所示界面。
rm -fr /boot/grub2/grub.cfg
解决:
但是只是这样更改的话,只针对本次开机有效,还需要我们在正常启动后,再输入:
grub2-mkconfig > /boot/grub2/grub.cfg
重新生成grub.cfg.文件
#当系统没有从新启动时,直接之下下面代码:
grub2-mkconfig > /boot/grub2/grub.cfg
三:内核文件丢失:
内核是驱动系统正常运行的工具,当内核文件丢失时,系统就会无法正常运行:
如何解决:
1.进入挽救模式:
2.在挽救模式中,给系统添加内核文件
之后输入以下指令:###后为注释,不输入
chroot /mnt/sysimage ###改变根目录位置
mkdir /rhel7
mount /dev/sr0 /rhel7 ###挂载/sr0
cd /rhel7/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt ###将内核安装包复制出来
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id ###从安装包中提取出内核文件
cd boot
cp vmlinuz-3.10.0-123.el7.x86_64 /boot ###将内核文件放回/boot启动目录中
exit
exit
两次exit退出后,系统就可以正常启动了。
四:系统初始化镜像文件丢失:
reboot之后:
如何解决:
同样,我们需要进入救援模式,去重新添加一个镜像初始化文件。
在救援模式,执行以下代码:【如何进入救援模式参考上文】
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
两次exit后,切换回磁盘启动,就可以正常开机了。
#当系统没有重启时,直接执行代码即可
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
五:/boot分区被删掉:
进入到挽救模式,执行下列代码,两次exit退出后,返回i磁盘启动。
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda
mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
grub2-mkconifg > /boot/grub2/grub.cfg
六:当开机启动级别被篡改:
通常是执行下列代码时,会导致开机启动级别被篡改。
看似正常的启动,却会发现陷入循环,会一直在该界面停留,无法进入用户选择界面。
如何解决:
linux16 /vmlinuz-xxxxxx ro xxxxxxxxxxxxxx 改变为:
linux16 /vmlinuz-xxxxxx ro xxxxxxxxxxxxxx 5
开机后我们需要重新设定启动级别:
systemctl set-default graphical.target
以上就是常见的一些系统出错无法开机的排错内容
大大的小小阳