博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux初学者-系统启动故障篇
阅读量:5239 次
发布时间:2019-06-14

本文共 2690 字,大约阅读时间需要 8 分钟。

 

        在系统的操作中,有时会不小心误删或者操作失误使得系统启动不起来,下文将列举几种常见的系统启动失败的情况及解决的办法。

    1、删除或者覆盖mbr的446个字节

        mbr的446个字节指定了系统启动时/boot分区在磁盘中的为至,所以mbr这446个字节如果被删除或者被覆盖,就会导致系统找不到/boot分区而开不了机。

        例如下图,用"dd if=/dev/zero of=/dev/vda bs=446 count=1"覆盖掉前446个字节。重启系统发现无法启动。

 

        这种情况的解决方法是:

        a、需要一个带有系统镜像的光盘。并且从光盘中启动。

        b、启动后选择其中的"Troubleshooting"。

        c、选择"Rescue a Red Hat Enterprise Linux System"。

        d、输入"1",并按下回车键。

        e、输入"chroot /mnt/sysimages",进入真实的/boot。

         f、输入"grub2-install /dev/vda",等待安装完成,且提示"Noerror reported"。

       上述操作完成后,输入两次"exit"。切换回从硬盘启动。即可解决这个问题。

    2、删除启动的引导文件"grub.cfg"

        "/boot/grub.cfg"是系统启动的引导文件,如下图,如果删除这个文件,系统启动后将进入如下界面。

 

        这种问题在解决时需要知道自己的/分区和boot分区分别在哪个分区里,本机的/分区在vda3分区下,boot分区在vda1分区下。解决步骤如下:

        a、输入"set root='hd0,msdos1'"。按回车键。"msdos1"代表boot分区的位置。

        b、输入"linux16 /vmlinuz-3.10.0-327.e17.x86_64 ro root=/dev/vda3"。按回车键。"/dev/vda3"为/分区的位置。

        c、输入"initrd16 /initramfs-3.10.0-327.el7.x86_64.img"。按回车键。

        d、输入"boot"。按回车键。

        完成上述步骤后,系统就可以启动了,但是启动后还是没有删除的"grub.cfg"文件。下次一样无法正常启动,需要输入命令"grub2-mkconfig > /boot/grub2/grub.cfg"来恢复这个启动引导文件。

    3、删除启动硬件设备文件

        如果删除/boot下的启动硬件设备,如"vmlinuz-3.10.0-327.e17.x86_64",系统将无法启动,如下图所示。开启启动失败,并且提示缺少文件"vmlinuz-3.10.0-327.e17.x86_64"。

 

        此时的解决办法是将镜像中的软件包拆解,恢复这个文件,具体步骤为:

        a、通过光盘镜像启动。选择"Troubleshooting",选择"Rescue a Red Hat Enterprise Linux System",输入"1",按下回车键。

        b、输入"df"可以看到光盘"/dev/sr0"挂载在"/run/install/repo"下。

        c、输入"cd /mnt/sysimage//mnt",并且输入"rpm2cpio /run/install/repo/Packages/kernel-3.10.0-327.e17.x86_64.rpm | cpio -id",拆解"kernel-3.10.0-327.e17.x86_64.rpm"这个安装包。完成后可以看到有boot目录,且其中有之前删除的"vmlinuz-3.10.0-327.e17.x86_64"文件。

        d、输入"mv vmlinuz-3.10.0-327.e17.x86_64 /mnt/sysimages//boot"。

       将这个文件恢复后,输入"exit",且设置从硬盘启动。系统就可以正常启动了。

   4、删除系统初始化文件

        如果删除/boot目录下系统的初始化文件,如"initramfs-3.10.0-327.el7.x86_64.img",系统无法正常启动且提示少了该文件,如下图所示。

 

        此时的解决办法为:

        a、从光盘镜像启动。选择"Troubleshooting",选择"Rescue a Red Hat Enterprise Linux System",输入"1",按下回车键。

        b、输入"chroot /mnt/sysimages",进入真实"/boot"。

        c、输入"mkinitrd /boot/initramfs-$(uname -r) $(uname -r)"。其中"$(uname -r)"是内核版本号,输入后自动查找并且添加的。

        d、完成后输入两次"exit",重新从硬盘启动即可。

   5、忘记root用户密码

        如果忘记root用户密码,可以在系统启动时修改。具体步骤如下所示:

        a、系统启动选择界面按上下键使其停止,如下图所示。

        b、按"e",进入配置界面。

        c、找到其中的linux16后的内容,从最后面删除,直到删除到"ro"即可。如下图所示。完成后输入"rw rd.break"。按下"ctrl+x"继续,会出现一个shell。

        d、输入"chroot /sysroot",再输入"passwd"修改密码。

 

        e、输入"touch /.autorelabel"。

        完成后输入两次"exit"完成系统继续启动,完成修改root用户密码。

   6、删除/boot

        如果删除/boot,毫无疑问,系统是启动不起来的。

 

        此时需要按以下步骤恢复:

        a、从光盘镜像启动。选择"Troubleshooting",选择"Rescue a Red Hat Enterprise Linux System",输入"1",按下回车键。

        b、输入"chroot /mnt/sysimages",进入真实的"/boot"。

        c、输入"grub2-install /dev/vda"。

        d、输入"mount /dev/sr0 /opt",将光盘挂载在/opt下。

        e、"rpm -ivh /opt/Packages/kernel-3.10.0-327.e17.x86_64.rpm --force",强行重新安装内核安装包。

         f、"grub2-mkconfig > /boot/grub2/grub.cfg",恢复启动引导文件。

        完成以上步骤后,输入两次"exit"并且设置从硬盘启动,系统就可以正常启动了。

转载于:https://www.cnblogs.com/davidshen/p/8145981.html

你可能感兴趣的文章
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
jquery的contains方法
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>