/etc/fstab 文件丢失----系统启动故障

in linux with 0 comment

2.2/etc/fstab 文件丢失导致系统无法启动

/etc/fstab中存放了系统的文件系统挂载的相关信息如果正确地配置了该文件,那么在linux启动时,系统会读取此文件,自动挂载Linux的各个分区,如果此文件哦诶只错误,或者丢失,就会导致系统无法启动。

具体的故障现象是在检测mount partition时出现:

starting system logger

此后系统启动就停止了。

解决思路:就是想办法恢复/etc/fstab这个文件的信息,只要恢复了此文件,系统就能自动挂载每个分区并正常启动。

有些人会想尝试进入到单用户模式下,然后手动挂载分区,最后结合系统信息,重建/etc/fstab文件。

但是实际这种方法是不可行的,因为fstab文件丢失导致Linux无法挂载任何一个分区,即使Linux还能切换到单用户模式下,此时文件系统也只是一个read-only的文件系统,无法向磁盘写入任何信息,那么重建/etc/fstab文件也无法实现。

正确的方法是利用Linux rescue 修复模式登录系统,进而获取分区和挂载点信息。重构/etc/fstab 文件。

步骤:

1.插入系统盘,设置BIOS从光驱启动,然后在boot后输入:linux rescue

boot:Linux rescue

2.一步步的选择OK,语言,键盘

3.是否启用网络界面,选择“No” ,不启用

4.最关键的一步,修复模式会自动将系统的所以分区挂载到/mnt/sysimage目录下,选择"Continue",则修复环境进去read-write状态下,可以对分区进行读写操作;选择“Read-Only”,修复环境进去只读模式。由于我们要重建fstab文件到/etc目录下,因此选择“Continue”进入可读写模式下。

接下来到了修复模式下:

sh-3.2#df

sh-3.2#fdisk -l       //查看分区信息是否完整

此处考虑分区没有损坏的情况下,仅仅是/etc/fstab文件丢失,通过以上命令可查看到系统分区的完整信息,每个分区对应的label name 信息还不知道,不过可以通过e2label命令查看。

sh-3.2#e2label /dev/sda1

/boot

sh-3.2#e2label /dev/sda3

/

根据以上信息,构建/etc/fstab文件,因为/etc/fstab是存放在根分区目录下的,所以首先挂载根分区

sh-3.2#mkdir /tmp

sh-3.2#mount /dev/sda3 /tmp

sh-3.2#mkdir   /tmp/etc/

sh-3.2#touch /tmp/etc/fstab

sh-3.2#vi /tmp/etc/fstab

LABEL=/         /           ext4                          defaults             1  1

LABEL=/boot      /boot        ext4               defaults              1   2 

tmpfs       /dev/shm      tmpfs                      defaults                0   0

sysfs         /sys                 sysfs                  defaults                0    0

devpts       /dev/pts                    devpts     gid=5,mode=620        0   0

proc                   /proc        proc                        defaults             0   0

LABEL=SWAP-sda2               swap        swap                defaults          0   0   

配置完成后,重启系统,看是否能正常启动!

 

Responses