导致linux无法启动的原因有很多,智能职涯bigdata-job总结常见的原因有如下几种:
1.文件系统配置不当,比如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。
2.非法关机,导致root文件系统破坏,也就是linux根分区破坏,系统无法正常启动
3.Linux内核崩溃,从而无法启动
4.系统引导程序出现问题,比如grub丢失或者损坏,导致系统无法引导启动。
5.硬件故障,比如主板、电源、硬盘等出现问题,导致linux无法启动。
从这些常见的故障可知,导致系统无法启动的主要有两个问题,硬件原因和 *** 作系统原因,对于硬件出现的问题,只需通过更换硬件设备,即可解决,而对于 *** 作系统出现的问题,虽然出现的问题可能千差万别,不过在多数情况下都可以用相对简单统一的一些方法来恢复系统,下面我们就针对上面提出的几个问题,结合Redhat Linux系统环境,给出一些常用的、普遍的解决问题的方法。
1./etc/fstab文件丢失,导致系统无法启动
/etc/fstab文件存放了系统中文件系统的相关信息,如果正确的配置了该文件,那么在linux启动时,系统会读取此文件,自动挂载linux的各个分区,如果此文件配置错误,或者丢失,就会导致系统无法启动,具体的故障现象是在检测mount partition时出现:
starting system logger
此后系统启动就停止了。
针对这个问题,我们的第一思路就是想办法恢复/etc/fstab这个文件的信息,只要恢复了此文件,系统就能自动挂载每个分区,正常启动。可能很多读者首先想到的是将系统切换到单用户模式下,然后手动挂载分区,最后结合系统信息,重建/etc/fstab文件。
但是这种方法是行不通的,因为fatab文件丢失导致linux无法挂载任何一个分区,即使linux还能切换到单用户下,那么此时的系统也只是一个read-only的文件系统,无法向磁盘写入任何信息。
我们介绍另外一个方法,就是利用linux rescue修复模式登录系统,进而获取分区和挂载点信息,重构/etc/fstab文件。
这里以rhel5为例,首先将系统第一章光盘放入光驱,设置BOIS从光驱启动,这样系统就从光驱引导,然后在boot后输入:linux rescue,接着系统自动开始引导,下面进入网络配置界面,这里是选择是否启用网络,由于系统已经无法启动,我们已经在linux系统上进行 *** 作了,启用网络与否都无所谓。这里选择不启用。下面到了最关键的步骤了,修复模式会自动将系统的所有分区挂载到/mnt/sysimage目录下,选择“Continue”,则修复环境进入到read-write状态下,可以对分区进行读写 *** 作,选择“Read-Only”,修复环境进入到只读模式,由于我们要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。下面是一个友情提示界面,由于fstab文件丢失,修复模式找不到任何可挂载的分区,从这里可知,修复模式在这里也读取/etc/fstab文件,回车,进入下一步。下面就进入了修复环境下,可以进行 *** 作了。上面详细演示了如何进入linux的修复模式,其实很多情况下,linux无法启动时,都可以通过这个方式登录系统进行修复和更改 *** 作。
对于使用Linux的人来说,迟早都可能在某一阶段遇到这个问题:你正在兴高采烈得探索你的系统,调整,优化以挖掘其最大的潜力,突然,omg,你发现,系统不能启动了!如果你之前已经习惯了使用Windows系统,我打赌,这是一个经常性的问题,而你最初闪出的念头就是格式化并重装系统。而对于Linux而言,重装系统绝对是最后的选择,只有在我们其它努力都作废之后,才需要考虑这一点。我个人认为,唯一能让人不得不重装系统的情况就是,不幸的你以root身份敲下了不幸的命令rm -rf /。恩,千万别模仿!虽然你可以通过“ctrl c”来终止这该死的自杀 *** 作。对于Linux,一旦出现无法启动系统情况的时候,也许你知道错误大概出在哪里,有比较明确的修复方向,比如调整屏幕分辨率,或者修改某个脚本,等等。但是,现在问题的关键,是需要能够启动或者访问Linux系统,这样才能修复它。下面就是一些应急措施的介绍。最先应该想到,也许也是最简单的办法,就是当boot loader—通常都是grub—开始执行时,通过它调整系统运行级别。在出现菜单项后,按下键盘上的“e”按键,这样,菜单项能显示一个或者多个启动命令,找到有关内核的这一行,将光标移到上面,高亮这一行,再按下“e”,grub就会将这行内容用一个简单的编辑器环境打开,让我们能够对其做出改变。那么,到底怎么改变呢?很简单,只需要告诉init程序,我们希望通过那个级别启动即可。在内核命令行的最后加上“init X”参数,其中X表示你所希望的运行级别,举个实际例子,如果你判断可能是因为显卡驱动或者分辨率导致的启动错误,就可以启动到命令行模式来修复它,那么,就应该把运行级别改为纯命令行模式,假设是4,改动后的内核命令行就应该是类似于这样的。/boot/vmlinuz-2.6.17-11-generic root=UUID=5cc79966-969d-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init 4这样,就等于告诉了init程序,我要以运行级别4启动,而不是默认的运行级别。如果这些招数都无法奏效了,怎么办?难道我们就坐以待毙了?no。这里还有一个偏门可以供你使用。我们知道,在默认情况下,内核启动时会执行init程序,但是你可以指定不同的程序让内核来执行,只需要在后面添加参数“init=/some/program”即可。“/some/program”通常表示诸如/bin/bash或者/bin/sh这种shell程序。注意这里的等于符号,它的作用是告诉内核,你别启动init程序了,而是启动我等号后面所指定的任意程序吧。大体命令行如下:/boot/vmlinuz-2.6.17-11-generic root=UUID=5cc79966-969d-4cd0-abb2-74a132efbd7c ro vga=794 quiet splash init=/bin/bash这样,你就可以直接启动到所指定的shell中,对发生的错误进行分析,修复等 *** 作。如果这样做都还是不行……好吧,我觉得你人品有问题!那么,还是拿出恢复cd,通常就是你的安装光盘,它允许你在启动时选择是否进入rescue修复模式。进入这个模式之后,他会自动找到你的硬盘安装的系统,并将它们挂载到一个临时目录下,这样,你就能进行修改配置文件或者其它修复 *** 作了。如果还是不行呢?恭喜你,回到Windows时代,还是老老实实重新安装吧。【摘要】当Linux系统出现故障无法正常启动系统时,Linux准备了单用户模式、救援模式等方式可以让我们有效的处理这类问题。本文简单分享一个利用救援模式解决Redhat系统无法启动的案例。
【正文】
一、 问题背景
1) 问题描述
一台部署了RHEL 7.2的物理服务器,突发死机故障,在尝试重启时,发现服务器无法正常进入 *** 作系统,直接进入emergency mode。本文主要分享 *** 作系统启动异常的问题排查过程。(服务器死机据后续日志分析,确定为内核的bug所致,本文不进行累述)
2) 故障现象
系统启动后,提示无法找到/dev/mapper/rhel-root,并直接进入emergency mode。
二、 排查思路
1) 收集系统启动异常的相关提示信息,获取到问题关键点:
Warning:/dev/rhel/root does not exist
初步定为配置文件问题或者逻辑卷root本身问题;
2) 尝试在应急模式下检查逻辑卷状态,发现当前情况并不稳定,常用命令无法使用、显示多为乱码;
3) 尝试进入单用户模式,发现情况和应急模式一样;
Redhat 7.2进入单用户模式:
1、开机启动至内核选择界面,选择第一项,按e进行编辑
2、定位到linux16这一行,找到ro,修改其为rw init=/sysroot/bin/sh
3、按ctrl+X启动至单用户模式
4) 利用系统安装光盘,进入Linux救援模式,进行排查。
Redhat 7.2救援模式启动方法:
1、把光盘加入光驱,然后启动,以光盘进行引导,选择救援模式(中间具体的步骤不再细说)
2、文件系统挂载到/mnt/sysimage目录下,这时切换到此目录下使用chroot /mnt/sysimage这条命令即可
5) 在救援模式下,首先查看服务器lv的情况,发现所有lv
status均为未激活状态。
查看lv
#Lvdisplay
修改lv
#vgchange -a y /dev/docker/root
6) 在尝试修改root的lv status时,发现root所在的vg名和启动时所指定的vg名不一致,基本确定问题点;
7) 修复
l 编辑文件/etc/default/grub
l 修改此文件中GRUB_CMDLINE_LINUX一行中rd.lvm.lv为合适的值
l 再执行以下命令重做grub :
n UEFI: grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
n 非UEFI:grub2-mkconfig -o /boot/grub2/grub.cfg
l 查看文件grub.cfg中是否修改为rd.lvm.lv=rhel/root
l 修改/etc/grub2.cfg中root=后接的lv路径改为实际的路径。
8) 系统启动后,通过history日志,确定为该系统业务部署时,使用了vgrename命令修改了vg名。
三、 总结
对于Linux的问题处理,需要对Linux的运行原理有所理解,这此前提下才能根据有限的提示信息判断问题方向、确定排查范围、找到解决方法。同时,提醒各位初学linux的同事么,在进行linux的一些 *** 作时,需要充分考虑这些 *** 作可能造成的影响,避免类似上述的问题发生。
转自 嘉为教育-rhce认证_rhce培训_linux培训_linux认证_linux考证
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)