安装完重启后,竟然没有引导!!!(难道是由于Windows 8在BIOS中使用了统一的 UEFI 接口??但是,Linux基金会早就宣布将会提供一种全新的 方式使用 UEFI Secure Boot选项安装Linux系统。她两可以和平共处啊)

 

本人对 UEFI 引导不太了解(UEFI boot 比 Legacy boot 要强大 ),只能另想办法了!!最终,决定采用 easyBCD 来引导 CentOS 7。

1、失败的尝试(收获巨大,得到了启动的方式)

第一次尝试中,以为只要简单的添加 grub2 的引导就行(CentOS 7采用了grub2引导)

修复centos启动 centos 修复引导_启动项


添加后,重启,虽然出现了引导项,但是进去之后出现了grub 提示符

修复centos启动 centos 修复引导_修复centos启动_02

1.1、尝试使用 grub命令,引导

注意:每个命令 与 后面参数之间都有一个空格,否则命令出错!!

a、先熟悉一下grub  的一些命令 grub>help

 

b、cat命令 查看文件内容

cat 指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知, 这时,我们就要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用 tab 键命令补齐的功能;操作如下:

grub> cat (       按tab 键会出来hd0或hd1之类的
grub> cat (hd0,   输入hd0,后 然后再按tab键;会出来分区之类的信息;如下:
Possible partitions are:

Partition num:
0,  Filesystem type ntfs, partition type
0x07

   Partition num:
2,  Filesystem type is xfs, partition type
0x83

   Partition num:
3,  Filesystem type unknown, partition type
0x83

   Partition num:
4,  Filesystem type ntfs, partition type
0x07

   Partition num:
5,  Filesystem type unknown, partition type
0x82
grub> cat (hd0,2)/etc/fstab 选择
/ 所在的分区(我是 2),回车,提示如下: /dev/hda3
swap         
swap     
defaults               
0     
0

/dev/hda4 
/             xfs     
defaults               
0     
1

 

查看/etc/fstab 中的内容,主要是为了查看Linux的 / 分区及 /boot 是否是独立的分区;如果没有/boot类似的行,证明/boot和 Linux的/处于同一个硬盘分区;(如果当初分区时,是自己指定的分区,可以忽略这一步

注意:在安装CentOS时,如果选择的分区方案是LVM,那么 这里查看时,文件系统类型将是 unknown ,导致无法使用(其实文件系统为LVMPV,可使用其他工具查看,是grub 不认识么??不应该啊!)

d、root指令来指定/boot所在的分区

grub> root (hd0,2)

Filesystem type is xfs, partition type 0x83

这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定;

e、kernel指令来指定linux的内核,及root所在的分区

grub> kernel /boot/       在这里按tab补齐,全列出 /boot 所有的文件,如下:

Possible files are: grub
initrd-3.10.0-123.e17.x84_64.img 
vmlinuz-3.10.0-123.el7.x86_64 等
kernel
/boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/sda3 ro quiet
vga=791
[Linux-bzImage, setup=0x1e00,
size=0x18e473]

注意:vga=791 非常重要,否则将出现如下错误

修复centos启动 centos 修复引导_CentOS_03

root=/dev/sda3   是 / 所在的分区

 

如果 boot是独立分区的话(安装CentOS时,自动创建分区,默认就是独立的!)

grub> kernel (hd0,2)/boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/hda3 ro quiet vga=791

f、用initrd命令来指定initrd文件

grub> initrd /boot/init          在这里tab 来补齐;将出现 可能的文件,提示如下:

Possible files are:
initramfs-3.10.0-123.el7.x86_64.img  
initramfs-3.10.0-123.el7.x86_64kdump.img  
grub> initrd
/boot/initramfs-3.10.0-123.el7.x86_64.img  
选择后,回车,提示如下:

   
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]

 

如果 /boot 是独立的一个分区,应该是如下样子的语法;比如下面的;

grub> initrd
/init               
在这里tab 来补齐;

grub> initrd /boot/initramfs-3.10.0-123.el7.x86_64.img

   [Linux-initrd @ 0x2e1000,
0x10e685 bytes]

 


注意:在 CentOS 7 中,initrd文件名不再是 initrd-3.10.0-123.e17.x86_64.img 而成了 initramfs-3.10.0-123.el7.x86_64.img


  

g、boot引导系统

grub> boot 回车,系统重启,则可以进入CentOS 7 了

 

注意:引导进入CentOS 7 后,还有部分配置,才可以正常使用 CentOS 7 !

2、完善启动项,成功引导

进入win8.1 ,打开 easyBCD ,如下,操作:

修复centos启动 centos 修复引导_修复centos启动_04

 

删除,其他不用的启动项,并修改名字

修复centos启动 centos 修复引导_修复centos启动_05

至此,引导修复已完成!!