我自己在服务器上装了centos6.5系统,默认用的就是UEFI,没有注意可以只用GRUB,接着问题就出现了,我在服务器内安装了另外一块带grub启动系统的硬盘,
这个硬盘启动系统后,如果去掉此块硬盘,再重新启动,总是识别不出来centos6.5的UEFI,这个可以通过启动主板的UEFI,然后用UEFI的命令:
mountfs0
fs0:
cdEFI
cdredhat
grub.efi
文件夹名称可能不准,大概是这样就可以手动启动系统了,另外还可以通过插入系统盘,upgrade一下就可以了,不用每次手动,也不会丢失数据,但是总觉得
这样不是很好。所以我就有了将UEFI-GPT回退为MBR的想法。
谷歌总是很牛x,所以我得到的结果是用gdisk,我启动另一个系统,挂载上centos6.5的硬盘,然后按照google上的步骤:
1
Click"Applications."Pointto"Accessories,"thenclick"Terminal."InputthefollowingintoTerminal:sudofdisk-l
2
Press"Enter"toseethediskdevicesconnectedtothecomputer.Thedevicewiththeasterisknexttoitisthebootdevice.Writedownthefilename(forexample,/dev/sda)assignedtothedisk.
3
InputthefollowingintoTerminal:sudoapt-getinstallgdisk.Press"Enter"toinstallthepartitioningtooltoUbuntu.
4
Input"sudogdisk"intoTerminal,thenpress"Enter"torungdiskasasuperuser.Inputthenameassignedtothebootdevice,thenpress"Enter"again.
5
Press"r,"thenhit"Enter,"toswitchtotherecoveryandtransformationoptions.Press"g,"thenpress"Enter,"toselecttheoptiontoconvertGPTtoMBRonLinux.
6
Press"w,"thenpress"Enter,"toconvertGPTtoMBRontheprimarypartitions.Press"y,"then"Enter,"tofinalizeandexit.
操作完成后,重启发现系统起不来,手动引导UEFI也不行了。
人类一思考,上帝就发笑,可是俺思考后发现还是能拯救的,
先提前说明,centos6.5安装的时候,是分了三个区的,sda1--UEFI所在区,是fat32,sda2--在fdisk-l下显示是NTFS(但实际上是ext4)的存储实际系统和数据的分区,
sda3--swap分区。
我进入U盘启动的系统后,把sda1分区挂载到mnt目录内,发现在efi->redhat目录内,存在一个文件grub.conf,相比经常把玩系统的人都知道这个是干嘛的。就是有了这个,我才有了希望。
下面就是拯救的具体步骤:
1、mount上sda1,然后拷贝出grub.conf留作后用,切忌!然后umount
2、使用fdisk将sda1修改为83-linux,sda2也修改为83-linux,并且把sda1设置为启动分区。
大致命令流程如下:fdisk/dev/sdat183t283a1
3、将sda1做成ext3,因为他是fat32
命令:mkfs.ext3/dev/sda1
4、mount上sda1和sda2,我这里sda1在/mnt,sda2在/sda2,给sda1安装grub,grub-install--root-directory=/mnt/dev/sda,这样grub就装好了
5、把备份的grub.conf拷贝到/mnt/boot/grub目录下,并且做一个软连接,menu.lst指向grub.conf,命令是:ln-sgrub.confmenu.lst
6、将/sda2/boot/目录下在grub.conf内用到的文件,一个是kernel会用到的,一个是initrd会用到的,拷贝到/mnt/boot目录下
7、修改/mnt/boot/grub/grub.conf,把root(hd0,1)这个改为root(hd0,0)
8、保存,sync,umount,卸载硬盘,重新启动就可以了。