您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

linux系统无法启动的解决办法

添加时间:2017-10-12 6:17:55  添加: 思海网络 

导致linux无法启动的原因有很多,常见的原因有如下几种:
 文件系统配置不当,比如/etc/inittab文件、/etc/fstab文件等配置错误或丢失,导致系统错误,无法启动。
 非法关机,导致root文件系统破坏,也就是linux根分区破坏,系统无法正常启动
 Linux内核崩溃,从而无法启动
 系统引导程序出现问题,比如grub丢失或者损坏,导致系统无法引导启动。
 硬件故障,比如主板、电源、硬盘等出现问题,导致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,如图1所示:

图1设置linux进入修复模式
 

接着系统自动开始引导,进入图2所示画面:

图2 选择语言
 

这里是选择模式使用的语言,可以按照自己需要设定,我们这里选择“English“,然后按tab键,选中“ok”,回车进入下一步。
 下面进入的是键盘选择界面,如图3所示,这里选择默认的“us”即可。
 

 图3 选择键盘类型
 

下面进入网络配置界面,如图4所示:

图4 是否启用网络
 

这里是选择是否启用网络,由于系统已经无法启动,我们已经在linux系统上进行操作了,启用网络与否都无所谓。这里选择不启用。
下面到了最关键的步骤了,如图5所示,修复模式会自动将系统的所有分区挂载到/mnt/sysimage目录下,选择“Continue”,则修复环境进入到read-write状态下,可以对分区进行读写操作,选择“Read-Only”,修复环境进入到只读模式,由于我们要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。

图5 选择修复模式的启动方式
 

下面是一个友情提示界面,如图6所示,由于fstab文件丢失,修复模式找不到任何可挂载的分区,从这里可知,修复模式在这里也读取/etc/fstab文件,回车,进入下一步。


图6 无法挂载系统任何分区
 

下面就进入了修复环境下,可以进行操作了。如图7所示

图7 修复模式命令行
 

上面详细演示了如何进入linux的修复模式,其实很多情况下,linux无法启动时,都可以通过这个方式登录系统进行修复和更改操作。
下面是恢复/etc/fstab文件的详细过程:
首先查看一下系统分区情况,如下所示:
sh-3.1# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux
/dev/sda2              26        1300    10241437+  83  Linux
/dev/sda3            1301        1682     3068415   83  Linux
/dev/sda4            1683        5221    28427017+   5  Extended
/dev/sda5            1683        1873     1534176   83  Linux
/dev/sda6            1874        2064     1534176   83  Linux
/dev/sda7            2065        2255     1534176   83  Linux
/dev/sda8            2256        2382     1020096   83  Linux
/dev/sda9            2383        2484      819283+  82  Linux swap / Solaris
/dev/sda10           2485        5221    21984921   83  Linux
因为分区并没有损坏,通过fdisk命令可以查看到系统分区的完整信息,但是每个分区对应的label name信息我们还不知道,下面通过e2label命令查看每个分区对应的label name:
sh-3.1# e2label /dev/sda1
/boot
sh-3.1# e2label /dev/sda2
/usr
sh-3.1# e2label /dev/sda3
/
sh-3.1# e2label /dev/sda5
/var
sh-3.1# e2label /dev/sda6
/tmp
sh-3.1# e2label /dev/sda7
/home
sh-3.1# e2label /dev/sda8
/opt
sh-3.1# e2label /dev/sda10
/webdata
这样,就得到了所有分区的挂载点信息,接下来就可以构造一个fstab文件了。
小技巧:可以参考其它系统中fstab文件的格式,结合本系统的分区和挂载点信息,构造出自己的fstab文件来。
由于fstab文件是存放在系统根目录下的,因此需要挂载原来系统的根分区,从上面可知根分区对应的设备名为/dev/sda3,接着在修复模式创建的临时根分区下创建一个挂载点,然后挂载原来系统的根分区。操作过程如下所示:
sh-3.1# pwd
/
sh-3.1# mkdir temp
sh-3.1# mount /dev/sda3  /temp
sh-3.1# df   
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev                    515644         0    515644   0% /dev
/tmp/loop0               79872     79872         0 100% /mnt/runtime
/dev/sda3              2972268    259916   2558932  10% /temp
这样以来,原有根分区的文件全部挂载到了/temp目录下,接着就可以创建我们需要的fatab文件了。
sh-3.1# vi /temp/etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
LABEL=/cicro            /cicro                  ext3    defaults        1 2
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/opt              /opt                    ext3    defaults        1 2
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
LABEL=/tmp              /tmp                    ext3    defaults        1 2
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
LABEL=SWAP-sda9         swap                    swap    defaults        0 0
配置完毕,保存退出,然后重启系统。
sh-3.1#reboot

2、root文件系统破坏,导致系统无法启动
Linux下普遍采用的是ext3文件系统,ext3是一个具有日志记录功能的日志文件系统,可以进行简单的容错和恢复,但是在一个高负荷读写的ext3文件系统下,如果突然发生掉电,就很有可能发生文件系统内部结构不一致,导致文件系统破坏。
Linux在启动时,会自动去分析和检查系统分区,如果发现文件系统有简单的错误,会自动修复,如果文件系统破坏比较严重,系统无法完成修复时,系统就会自动进入单用户模式下或者出现一个交互界面,提示用户介入手动修复,现象类似下面所示:
checking root filesystem
/dev/sdb5 contains a file system with errors, check forced
/dev/sdb5:
Unattached inode 68338812
/dev/sdb5: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
(i.e., without -a or -p options)
FAILED
/contains a file system with errors check forced 
an eror occurred during the file system check 
****dropping you to a shell;the system will reboot 
****when you leave the shell 
Press enter for maintenance
(or type Control-D to continue):
give root password for maintenance
从这个错误可以看出,系统根分区文件系统出现了问题,系统在启动时无法自动修复,然后进入到了一个交互界面,提示用户进行系统修复。
这个问题发生的机率很高,引起这个问题的主要原因就是系统突然掉电,引起文件系统结构不一致。一般情况下解决此问题的办法是采用fsck命令,进行强制修复。
根据上面的错误提示,当按下“Control-D”组合键后系统自动重启,当输入root密码后进入系统修复模式,在修复模式下,可以执行fsck命令,具体操作过程如下:
[root@localhost /]#umount /dev/sdb5
[root@localhost /]#fsck .ext3 -y  /dev/sdb5 
e2fsck 1.39 (29-May-2006)
/ contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 6833812 ref count is 2, should be 1.  Fix<y>? yes
Unattached inode 6833812
Connect to /lost+found<y>? yes
Inode 6833812 ref count is 2, should be 1.  Fix<y>? yes
Pass 5: Checking group summary information
Block bitmap differences:  -(519--529) -9273
Fix<y>? yes
…… ……
/: ***** FILE SYSTEM WAS MODIFIED *****
/: 19/128520 files (15.8% non-contiguous), 46034/514048 blocks
 上面就是fsck修复受损文件系统的过程,fsck详细用法在本书第四章有详细的讲述,这里不在多讲。需要注意的是,在执行fsck的时候,一定要先卸载要修复的分区,然后再执行修复操作,切记!

三、其它故障的一般解决方案
如果是linux的引导程序出现问题,那么也可以通过光盘引导的方式进入linux修复模式,然后修改对应的引导程序或者重新安装引导程序。
如果linux内核崩溃或者丢失,同样可以先进入linux rescue下,然后加载root分区,最后重新编译内核。
如果出现了最坏的情况,文件系统破坏严重,同时内核也崩溃,那么此时重新安装系统反而比较容易,在这种情况下可以先将linux上有用的数据和文件备份转移到其它设备,然后对整个文件系统进行全新安装。
在这里我们不可能对每个出现的问题,都给出详细的解决方案,问题都是千差万别的,每个问题的处理都不尽相同,本书要传授给大家的是当linux系统出现问题后,解决问题的一般思路和通用策略,熟练掌握了这些技巧,处理任何linux问题都能游刃有余。

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站