引导修复
- 用CentOS iso文件制作启动u盘进入到安装CentOS的界面,然后选择
rescue a CentOS system
。 - 根据提示选择选项进入rdshell命令行界面,输入:
chroot /mnt/sysimage
将系统挂载至/mnt/sysimage
,执行fdisk -l
查看系统安装在哪个磁盘上(故障系统安装为/dev/sda),接着为sda安装grub,执行以下命令:/sbin/grub-install --root-directory=/ /dev/sda
。执行cfdisk
查看磁盘分区细节,并记录。 - 执行
ls /boot/grub
,确认grub目录生成成功,reboot重新启动系统。 重启后系统进入grub引导界面,在提示符后面分别执行以下命令(tab键能补全,若报error,表明分区指定不对,需重新开始):
1
2
3
4
5
6
7
8
9
10
11grub> root (hd0, 6)
#指定根目录为第一块磁盘的第7个逻辑分区,即/dev/sda7
grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7
#加载内核
grub> initrd /boot/initramfs-2.6.32-431.el.x86_64.img
#临时根文件系统
grub> boot
#启动若出现
Welcome to CentOS
提示,则系统启动成功。- 进入系统后,在
/boot/grub/
目录下添加grub.conf文件,内容如下(参考正常系统的grub.conf文件):1
2
3
4
5
6
7
8default=0
timeout=5
splashimage=(hd0,6)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,6)
kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7 rhgb quiet
initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
存在问题记录
命令执行过程error
- 系统分区指定不对,重新指定并执行上述命令。
系统启动失败
- 错误描述,提示
mount:/dev/sda7 already mounted or /sysroot busy
。记录此处建议的错误处理方式。 处理方法,重启系统,在grub引导界面重新输入命令,根据上述提示在加载内核做相应修改:
1
2
3
4
5
6
7
8
9
10
11grub> root (hd0, 6)
#指定根目录为第一块磁盘的第7个逻辑分区,即/dev/sda7
grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7 rdshell
#加载内核,设置进入rdshell终端
grub> initrd /boot/initramfs-2.6.32-431.el.x86_64.img
#临时根文件系统
grub> boot
#启动,进入rdshell进入rdshell后查看文件
cat /etc/mtab
,显示/dev/sda7
并未挂载(若已挂载,则umount),此时查看cat /dev/disk/by-uuid
下面的分区标志,记录/dev/sda7
的uuid(一般是第一个由小写字母、数字和横杠组成的字符串),并重启系统。在grub引导界面重新执行引导过程的命令,修改加载内核的命令如下:
1
grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=xxxx-xxx-xxx-xx #之前记录的uuid值
进入系统后,修改grub.conf文件相应内容为
root=UUID=xxxx-xxx-xxx-xx
。