首页 > 代码库 > Win8.1 + CentOS7 双系统 U盘安装--引导修复

Win8.1 + CentOS7 双系统 U盘安装--引导修复

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

 

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

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

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



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

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 type0x07
   Partition num:2,  Filesystem type is xfs, partition type0x83
   Partition num:3,  Filesystem type unknown, partition type0x83
   Partition num:4,  Filesystem type ntfs, partition type0x07
   Partition num:5,  Filesystem type unknown, partition type0x82
grub> cat (hd0,2)/etc/fstab 选择/ 所在的分区(我是 2),回车,提示如下: 

/dev/hda3swap         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 type0x83

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

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

grub> kernel/boot/      在这里按tab补齐,全列出 /boot 所有的文件,如下:
Possible files are: grubinitrd-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 quietvga=791      回车,提示如下:

[Linux-bzImage, setup=0x1e00,size=0x18e473]

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

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

 

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

grub> kernel(hd0,2)/boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/hda3 roquiet 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 了

 

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

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

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

 

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


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