系统镜像文件丢失
系统丢失镜像文件,主机启动后黑屏。
图 7. 镜像丢失
挂载系统安装盘进入援救模式 , 检查 /boot 目录下发现没有镜像文件。
bash-4.1# chroot /mnt/sysimage
sh-4.1# ls /boot
config-2.6.32-71.el6.x86_64 symvers-2.6.32-71.el6.x86_64.gz
efi System.map-2.6.32-71.el6.x86_64
grub vmlinuz-2.6.32-71.el6.x86_64
lost+found
重新生成镜像文件 initramfs-2.6.32-71.el6.x86_64.img。
sh-4.1# cd /boot
sh-4.1# mkinit
sh-4.1# ls
config-2.6.32-71.el6.x86_64 lost+found
efi symvers-2.6.32-71.el6.x86_64.gz
grub System.map-2.6.32-71.el6.x86_64
initramfs-2.6.32-71.el6.x86_64.img vmlinuz-2.6.32-71.el6.x86_64
重启主机后 , 系统可正常引导。
系统 /boot 分区损坏
一般来说系统 /boot 分区损坏,我们会先尝试修复文件系统。如果文件系统损坏不能修复,那么我们可以参照前述的方法来依次新建 /boot 分区,重新安装内核和镜像,然后安装 GURB 再手工编辑引导菜单,以最终来恢复系统可正常引导。通常我们需要按照如下的步骤来恢复。
创建分区
碰到比较严重的情况就是 /boot 分区已经完全损坏,启动时会提示找不到引导设备。
图 8. 引导分区损坏
挂载安装盘后进入援救模式,查看分区情况,发现分区 /dev/sda1 不存在。
bash-4.1#
Disk /dev/sda: 43.0 GB, 42991616000 bytes
255 heads, 63 sectors/track, 5226 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: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda2 17 147 1048576 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 147 5227 40803328 83 Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0xcdd48395
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 83 Linux
新建一个分区并且设置它为启动分区。
bash-4.1# 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
Partition number (1-4): 1
First cylinder (1-5226, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-16, default 16):
Using default value 16
Command (m for help): a
Partition number (1-4): 1
Command (m for help): p
Disk /dev/sda: 43.0 GB, 42991616000 bytes
255 heads, 63 sectors/track, 5226 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: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 * 1 16 128488+ 83 Linux
/dev/sda2 17 147 1048576 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 147 5227 40803328 83 Linux
Command (m for help): w
The partition table has been altered!