1. 博客/

/etc/fstab及/boot分区文件恢复

·23 字·1 分钟
Linux

​ 以centos6为例,/boot目录下有最为关键的开机启动所必须的内核文件、根文件系统驱动文件已经引导加载程序(bootloader)grub。当我们清空此文件夹之后关机,机器就不能正常启动了,这种情况下,可以借助光盘启动进入救援模式解决。具体步骤如下:

开机进入救援模式
#

img1
img3

这里不像正常情况下,显示根文件系统挂载在/mnt/sysimage目录,而是提示找不到分区。这是因为我把/etc/fstab文件删除了,即使救援模式下,系统启动也不会搜索挂载根目录了,此时我们只能查看本主机各个分区情况,尝试找到根目录并手动挂载。

手动挂载根目录,恢复/etc/fstab文件
#

img5

进入shell模式下,根据分区情况可以看出,为了使系统容量具有拓展性,根系统基于逻辑卷的。但是通过lvdisplay命令可以看出,逻辑卷的状态是not available,这是因为LVM及software Raid设备是在运行系统初始化脚本/etc/rc.d/rc.sysinit时才被激活。很显然,在本例中bootLoader都已经被损坏,lvm无法被自动激活,使用命令#vgchange -ay 手动激活

img6
img7

激活lvm之后,通过逻辑卷名字看出根文件系统应该在dev/vg_www/lv_root逻辑卷设备上,挂载该设备到/mnt/tmp目录。参考下图ls结果可知,此设备确实是根文件系统,创建fstab文件并重启

重启,进入救援模式,修复/boot
#

1)如下图所示,救援模式下已显示找到根文件系统,并挂载在/mnt/sysimage目录。进入shell模式,在/boot目录下安装kernel和grub

img8
img9

2)grub.conf文件可以在上述shell下直接编辑修复也可以在进入开机菜单时使用grub交互程序输入

重启机器,系统直接进入grub交互界面,如下图所示

img10

分别输入kernel参数和伪根文件系统路径,并启动

img11

指定kernel和initrd的文件路径根为/boot所在的设备及分区;(hd0,0)代表着第一个硬盘中第一个分区

重启之后,可以正常登陆了
#

img12

登陆之后再去完善/etc/fstab文件及grub.conf文件,机器就恢复成功了。