导致这种原因发生的问题在于硬盘分区所给的Label name与/etc/fstab这个文件中对应的“LABEL”项不匹配所导致的。
在此先献上解决办法供大家参考,后面还会提到一个地方自己无法理解,希望拿出来和大家探讨!
好了,废话不多说,解决办法有两个:(前提是开机都必须选择进入到单用户模式)
方法一:
1、 在此处输入root用户密码;
2、 通过blkid找出LABEL=”/date”的设备/dev/sdb1;
(由此两幅图我们已经看到fsck.ext3:Unable to resolve ‘LABLE=/data’与/dev/sdb1的LABEL=”/date”因为写错一个字母所导致系统开机在通过/etc/fstab文件进行自动挂载时,因为找不到Label name=/data的磁盘导致的无法正常开机,因为我们磁盘sdb1是叫/date嘛!)
#blkid ——出入如下图所示
3、通过e2label将/dev/sdb1的Label name改成/data即可解决;
#e2label /dev/sdb1 /data
4、最后就是重启了;
#init 6
方法二:
1、 与方法一的第一步一样,输入root密码;
2、 重新挂载/目录,因为现在我们只有r读的权限,而没有w写的权限
#mount –o remount,rw / ——此处是重新挂载/,并给予rw读写的权限
3、 与方法一的第二步一样,通过blkid查看发现/dev/sdb1的Label name=/date
#blkid ——出入如下图所示
4、对/etc/fstab进行修改,将对应的LABEL=”/data”改成LABEL=”/date”
#vim /etc/fstab
然后就是保存退出了;
5、最后就是重启啦
#init 6
有兴趣听我继续扯下去的可以接着往下看啦!
我们知道,在linux下面挂载硬盘分区到某个目录下有两种办法:
我拿硬盘的sdb1来做说明(此处指的是SATA接口的硬盘,IDE接口的硬盘应该是hdb1啦),我要将其挂载到/date下。
方法一:#mount /dev/sdb1 /date ——直接指明设备挂载到/date目录下
方法二:#e2label /dev/sdb1 /date ——对sdb1给予/date的标签命名
#mount /date /date ——再通过标签名对硬盘挂载
由此我们知道,linux挂载硬盘可以使用设备来挂载,也可以通过label name来对磁盘进行挂载。而/etc/fstab下的这个文件是在告诉系统每次开机对硬盘自动挂载到相应的目录下。
(#mount -a ——挂载所以未挂载的磁盘到相应的目录这条指令也是通过读取/etc/fstab文件进行挂载的。)
当我们在/etc/fstab下面将LABEL这一项写错时,就会导致Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机,至于解决办法前面已经提到了。
但是这有个很奇怪的地方,就是当/etc/fstab下面的挂载点写错时,确不存在无法正常开机的现象。
正如上面所提到的当/etc/fstab的LABEL=/data,而/dev/sdb1的Label name=/date时无法正常开机;
而当/etc/fstab的LABEL=/date,与/dev/sdb1的Label name=/date相符合,而在/etc/fstab文件中LABEL=/date相应的挂载点写的是/data,但/目录并不存在一个挂载点为/data的情况下,却能正常的开机启动,不同的是/dev/sdb1(也就是/date)在开机后没被挂载上来而已。
正如,当我们要将一个U盘挂载到/mnt/u目录下面,我们需要做如下步骤:
#mkdir /mnt/u ——需要先为u盘创建一个目录做挂载点
#mount /dev/sdc /mnt/u ——此处假设u盘为sdc设备
当/mnt下面不存在u这个目录的时候是会报错而无法挂载。
系统在开机读取/etc/fstab这个文件进行自动挂载时,因为找不到LABEL=/data(因为/dev/sdb1的Label name=/date)而无法正常开机,那为什么系统开机在读取/etc/fstab这个文件进行自动挂载时,不会因为找不到LABEL=/date所对应的挂载点/data(如果/目录下存在的一个是/date目录)而不能正常开机呢?