重新安装GRUB引导系统

最近用U盘安装了一台centos6.6的服务器,系统装完完成一系列初始化工作后重启系统发现BIOS找不到可引导的设备,然后插上安装U盘重启电脑就可以正常开机引导了。卧槽,原来我没有注意将系统引导装在了U盘上,整个系统文件装到了硬盘上。duang!就这样掉坑里了,下面开始爬坑,将系统的引导程序GRUB安装到硬盘上。
1、用U盘引导,进入单用户模式,我就是在系统启动倒计时屏幕出现时按下“上键或者下键”,出现的菜单中按下“e”键,然后在出现的菜单中选择带“kernel”关键字的项,然后按下“e”键编辑该项。在该项的最后输入空格和1两个字符后按确认键返回菜单,最后按下“b”键,系统就会重新启动进入单用户模式了。
grub01

2、输入grub命令进入到grub交互模式 首先用root命令告诉grub你系统安装在第几块盘的第几个分区,命令格式是

1
grub> root (hdx,y)

其中的x代表的是系统安装在第几块硬盘,从0开始计数。一般的系统都安装在sda第一块硬盘上,这时x的数值是0。安装系统的分区一般是sda1,这时y的数字是0,如果是ada2,那么y的数字是1。这样依次类推确定x,y的值。 grub知道了系统的安装的位置后,使用setup命令将grub写到硬盘的MBR上,命令格式是

1
grub> setup(hdx)

x的值就不重复说明了,这样就将grub写到了电脑硬盘的MBR上了,就不用再插U盘引导了。
grub02
输入quit命令退出grub交互模式,reboot系统。

3、此时不用U盘就可以引导系统了,我的情况可能有点特殊,发现死活就是加载不了系统,不断反复的重启引导。后来观察引导界面发现系统的grub配置文件有错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd1,1)
# kernel /vmlinuz-version ro root=/dev/sdb3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd1,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)
root (hd1,1)
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e925996a-ba87-4944-9726-5ef6a3633ca4 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.el6.x86_64.img

安装系统的时候,U盘也占了一个硬盘设备号,当时的系统盘是第二块。不用U盘引导后,此时的系统盘是第一块,重新插上U盘进入将grub配置文件/etc/grub.conf中对应的hd1改成hd0问题就完美解决了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd1,1)
# kernel /vmlinuz-version ro root=/dev/sdb3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e925996a-ba87-4944-9726-5ef6a3633ca4 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.el6.x86_64.img
----------------本文结束 感谢阅读----------------