修复错误配置/etc/fstab文件导致系统无法正常启动
/etc/fstab这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。如果遇到一些类似于无法挂载你的windows分区,无法使用你的光驱,无法对某个分区进行写入操作什么的,那么基本上可以断定,你的fstab内容有问题了。也就是说,你可以通过修改它来搞定这些问题.
2.系统环境
(1)系统:centos 6.3 x86_64
(2)分区情况:

fstab文件:

1.查看分区的label
e2label /dev/sda1
2.修改分区的label
e2label /dev/sda1 /
3.模拟出错
3.1 为虚拟机扩容
在本地计算机上运行:开始-运行-cmd,输入"D:\Program Files (x86)\vmvare\vmware-vdiskmanager.exe" -x 5GB “D:\vmware\centos 6.3_x86-64\CentOS 6.3 64-bit.vmdk"

参数”-x”指定扩容后整个空间大小(包含现在正在使用的),”D:\vmware\centos 6.3_x86-64\CentOS 6.3 64-bit.vmdk"” 指定需要
扩容的虚拟机磁盘文件。
3.2 再次查看扩容后的硬盘情况

可以看到,硬盘容量已经增加了。
3.3 在/dev/sda上创建新的主分区sda4
[root@localhost ~]# fdisk /dev/sda #指定硬盘
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n #添加新分区
Command action
e extended
p primary partition (1-4)
p #创建主分区
Selected partition 4
First cylinder (2611-3263, default 2611): 按Enter #盘符开始,这里我们默认
Using default value 2611
Last cylinder, +cylinders or +size{K,M,G} (2611-3263, default 3263): 按Enter #盘符结束,这里我们默认
Using default value 3263
Command (m for help): p #查看
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005f043
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2354 18598912 83 Linux
/dev/sda3 2354 2611 2064384 82 Linux swap / Solaris
/dev/sda4 2611 3263 5238527+ 83 Linux
Command (m for help): w #保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
3.4 格式化新分区
[root@localhost ~]# mkfs -t ext3 /dev/sda4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1309631 blocks
65481 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
3.5将Label设置为other
[root@localhost ~]# e2label /dev/sda4 others

3.6 挂载 /dev/sda4到 /others
[root@localhost ~]# mkdir /others
[root@localhost ~]# mount /dev/sda4 /others

3.7 修改fstab文件
(添加蓝色那一行)
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Apr 25 09:01:27 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=89eb5a53-3c5c-4a5c-931d-ec8c5407ed68 / ext4 defaults 1 1
UUID=4cdac1ad-5ec3-4517-bd55-01441723c5fa /boot ext4 defaults 1 2
UUID=d208836e-e33c-420f-baef-bf19e32d60cc swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=/others /others ext3 defaults 1 2
请注意:这里用到是LABEL而不是设备名(/dev/sda4),但是这里把卷标写错,应该是others,前面没有 /。
并且没有运行mount -a命令来验证配置是否正确。
接着就直接重启系统了(init 6)
[root@localhost ~]# init 6
3.8 出现问题

系统发现fstab中的LABEL=/others卷标不存在!!!
4.故障修复
4.1进入运行级别1
输入root用户密码,进入运行级别1

此时试图修改/etc/fstab文件
[root@localhost ~]# vi /etc/fstab

此时发现文件系统是只读的
重新mount /

再次修改fstab文件
[root@localhost ~]# vi /etc/fstab

修改完成,重启系统(init 6)。
系统可以正常启动,问题解决了。
5.总结
以上问题的出现是由于错误配置了/etc/fstab文件,在系统重启时,无法识别卷标(/others),从而导致无法正常启动。如果在修改/etc/fstab文件后,运行mount -a命令验证一下配置是否正确,则可以避免此类问题。
问题的修复方法不仅适用于以上所描述的问题,同样可以处理由于错误修改配置导致系统无法启动的其他问题。
问题的解决过程中,重新mount /是比较关键的一步(mount -n -o remount,rw /)。如果没有此步操作,则文件系统处于只读状态,导致不能修改配置文件并保存,修复存在的问题。
修复错误配置/etc/fstab文件导致系统无法正常启动的更多相关文章
- [svc]mount命令及解决因/etc/fstab错误导致系统不能启动故障
mount命令-手动挂载设备 格式: mount [options] [-t fstype] [-o option] 设备 挂载点 mount -n -o remount,rw / - Mount t ...
- linux误删文件导致系统无法启动
因虚拟机RedHat误删了/etc/inittab文件导致系统无法启动启动系统提示enter runlevel尝试输入0-5都不好使.因为实验环境直接忽略了错误,重新搭建了虚拟机. 如果想尝试修复,可 ...
- centos更换损坏硬盘uuid改变导致系统不能正常启动处理
1.因为挂载磁盘uuid错误导致,而系统在启动的时候,会读取fstab文件.来加载预设的硬盘到指定的分区目录,但读取到需要挂载的UUID的磁盘不存在,中断文件的读取,然后提示文件系统错误,不能解析UU ...
- 错误修改/etc/fstab,导致系统无法开机
enter password or type control-D to continue 系统提示你输入root密码,而输入以后系统的所有文件是只读的,你无法修改 看下你的/etc/fstab这个目录 ...
- Linux 系统 fstab错误导致系统无法启动的修复
fstab错误的修复 vim /etc/fstab/dev/sda6 /mnt xfs defaults 0 0重启后系统无法启动,等待一段时间后输入root的密码可进入单用户模式,修改fstab后可 ...
- 验证fstab文件修改是否正确
/etc/fstab文件是系统启动时要挂载点文件系统. 如果fstab文件配置错误,会导致系统无法正常启动. 最近我就是因为大意,在配置fstab重启服务器后,出现系统无法识别挂载点/opt/back ...
- ubuntu修改系统环境变量文件导致起不来
修改/etc/environment文件导致系统起不来. 长按shift,进入恢复界面,然后以root方式登录命令行界面 然后vi修改/etc/environment文件 提示:Unable to o ...
- 关于丢失或者损坏/etc/fstab文件后的一些探讨
1.模仿,假设不小心删除了/etc/fstab文件:大家都知道,Linux系统启动的时候会读取该文件来挂载分区,如果缺失该文件,系统一般不能正常启动. 2.采用reboot命令或者alt+ctrl+d ...
- VMware Centos中创建克隆虚拟机导致网卡设备无法启动的问题
一.前言 在创建克隆虚拟机的时候,如果样板虚拟机没有事先配置好,则会导致网卡设备无法启动的问题(报错如下). Bringing up interface eth0: Device eth0 does ...
随机推荐
- FastReport.Net使用:[18]形状(Shape)控件用法
FastReport中,如果要画一张漂亮的报表,经常会画些形状控件来美化?那么如何用好形状(Shape)控件呢? 形状的5种类型 在工具栏的图形控件下拉菜单中有5种类型(矩形.圆角矩形.椭圆形.三角形 ...
- ubuntu16.04.2安装完后重启报错[sda] Assuming drive cache: write through
原因:检测主机的物理连接线,发生问题时"已连接"未勾选,重启的时候找不到iso文件 解决办法:勾选"已连接",重启机器成功
- SDOI 2017 Round1 解题报告
Day 1 T1 数字表格 题目大意 · 求\(\prod\limits_{i=1}^n\prod\limits_{j=1}^mFibonacci(\gcd(i,j))\),\(T\leq1000\) ...
- noip2012疫情控制 题解
题目大意 给出一棵n个节点的树,根是1,要在除根节点以外的点建立检查点,使得从每条根到叶子的路径上都至少存在一个检查点.检查点由军队来建立.初始军队的位置是给定的,移动军队走一条边需要花费这条边的权值 ...
- [BZOJ4340][BJOI2015]隐身术(后缀数组)
考虑到K很小,于是可以暴搜每次用的是哪种操作,跳过AB相等的字符可以用SA求LCP加速. 主要流程就是,枚举B的每个后缀,对每个后缀统计合法前缀个数.DFS搜索每次决策,用SA跳过相同字符,当A或B匹 ...
- 【Kruskal+贪心思想】BZOJ3624-[Apio2008]免费道路
国庆万岁!!!!! [题目大意] 给定一张无向图,有两种边的类型为0和1.求一个最小生成树使得边0有k条. [思路] 跑两次Kruskal. 第一次的时候优先选择边1,然后判断有哪些边0还不能连通,那 ...
- App图标生成器的实现,附源码
背景 网上各种生成app图标的网站和工具,感觉还是用自己写的心里畅快点,所以花了1个小时自己写了个.按照网上给的图标尺寸规范把所有尺寸的都生成了. 建了一个讨论群,533838427.很明显是针对独立 ...
- 【BZOJ】3697: 采药人的路径
3697: 采药人的路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1718 Solved: 602[Submit][Status][Discu ...
- asp.net连接LDAP数据,并从LDAP中取出相关数据(1)
ASP.NET连接LDAP数据库的有关信息 一.封装在DAL层中的获取用户信息的函数 /// <summary> /// 按照用户Id查找用户信息 /// </summary> ...
- 【PHP内存泄漏案例】PHP对象递归引用造成内存泄漏
[案例一] 作者:老王 如果PHP对象存在递归引用,就会出现内存泄漏.这个Bug在PHP里已经存在很久很久了,先让我们来重现这个Bug,代码如下: <?php class Foo { funct ...