Windows10+CentOS7双系统(UEFI+GPT)

Windows10+CentOS7双系统(UEFI+GPT)

前言

眼馋双系统有一段时间了,然而之前安装失败格盘的惨痛教训历历在目。这几天闲着没事查阅了好多资料,怂了一个星期,终于决定再来一次尝试。总的来说安装过程还是挺顺利的,但是后期Windows引导的问题折腾了三天。。。 
技术不好,最终搞出个另类的双系统:默认启动Windows10,同时支持Windows Quick Boot;BIOS下切换到CentOS。

设备信息

PC: Thinkpad E431,Microsoft Windows10 Pro 64Bit (10240) 
CentOS版本:CentOS-7-x86_64-DVD-1511(这个版本的CentOS支持UEFI) 

前期准备

1. 分配CentOS安装盘符

直接使用Windows的磁盘管理,用磁盘压缩切一个空间出来就好了。我是切了50G出来。

2. 关闭Windows Quick

执行Win+R输入gpedit.msc,计算机配置->管理模块->关机,双击右边,选择已禁用关闭快速启动

3. 关闭Secure Boot

这个要在BIOS下执行。

安装CentOS

1. UltraISO制作CentOS启动盘。

2. 设置CentOS镜像位置

BISO选择U盘启动,接下来应该会看到黑色界面,如下: 
安装CentOS7 
将光标移到第一行,然后这里不是直接点Install CentOS7,要按Tab键(我的电脑是按e---满满的调试泪水啊)先配置CentOS镜像位置。 
按下Tab之后可以看到一下三行英文:

setparams "Install CentOS 7" Install
    limuze /image/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet  
    initrdefi /image/pxeboot/initrd.img
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

---可能是版本的问题,我的显示和上面的不一样



这个是用来选择镜像位置的,因为CentOS它不会自动定位到正确的位置。。。所以接下来要先修改上面的内容。 
① 把第二句改成:

   limuze /image/vmlinuz initrd=initrd.img linux dd quiet
  • 1
  • 1

② 接下来按Ctrr+x执行,就可以看到所有盘符和编号了。类似于下面这样: 
修改CentOS位置 
可以看到,CentOS镜像的位置(也就是我的U盘)是sdb4。记住这个sdb4,然后关掉这个界面重新再来一次。 
③ 重新来一次又来到了步骤2的那个图,还是按Tab键,这一次将第二行改成如下形式:

limuze /image/vmlinuz inst.stage2=hd:/dev/sdb4 quiet
  • 1
  • 1

接下来按Ctrr+x执行,CentOS就开始安装了。记得要勾选一个桌面(如gnome桌面)。

4. 设置CentOS磁盘分区

进来安装界面之后,选择前面切出来的那个盘。 
此处输入图片的描述 
CentOS安装过程中要设置磁盘分区,这个就涉及到Linux的磁盘分区。下面是我的设置情况:

/        :大小30G,设备类型`LAM`,文件系统`ext4`
/boot    :大小200M,设备类型`标准分区`,文件系统`ext4`
/boot/efi:大小128M,设备类型、文件系统默认值(这个efi分区是放CentOS的uefi文件的,貌似最后也就占10M左右的空间)
/swap    :大小8G,设备类型`LAM`,文件系统`ext4`(据说swap分区要为物理内存的两倍,不过觉得我8G内存给它8G已经算多了)
/home:  :剩下的空间都给它,设备类型`LAM`,文件系统`ext4`
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

--如果/boot分区总是在4096KiB时,看看分区的名是不是sda5如果是则再建一个/boot分区  把之前改名保留,就可以了



之后就开始漫长的安装了。。。。

修复引导

CentOS安装完毕时候会重启电脑,这个时候你会看到系统选项有一个Windows10和 CentOS,选择Windows10,“卧槽!我的Win10居然没事,网上那群骗子,害我虚惊一场,重启看看CentOS先”。选择CentOS,然后就看到下面的东东: 
Windows未启动 
“特么我这个是Linux啊,你提示Windows未启动是什么意思?” 
然后就开始了我的折腾之旅。。。。。 
(这里省略上万字的心酸历程) 
下面是解决方案

1. 网友建议

网上说的在Windows下使用easybcd添加CentOS的引导,反正我试了很多遍就是没成功。事实上easybcd只能添加CentOS的mbr引导,这个可以在easybcd看出,然而我是通过UEFI来装的,应该就不行。

2. 几番折腾,新办法

① 前面CentOS分区的时候实际上/boot/efi是一个ESP分区(UEFI 系统分区)。里面放的是CentOS的EFI引导文件。

$ ls -R EFI/
EFI/:
BOOT/  centos/

EFI/BOOT:
BOOTX64.EFI*  fallback.efi*

EFI/centos:
BOOT.CSV  gcdx64.efi*  grub.cfg.bak  grubx64.efi*     shim.efi*
fonts/    grub.cfg     grubenv       MokManager.efi*  shim-centos.efi*

EFI/centos/fonts:
unicode.pf2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

其中最重要的文件是grubx64.efi,开机时,BIOS先通过ESP分区找到相应的efi程序,然后加载启动系统,这里的grubx64.efi就是用来加载CentOS的。 
② 以此类推,Windows下肯定也有类似的文件。的确,在装Windows10的时候,会自动分配一个隐藏的ESP分区,盘符别名为SYSTEM_DRV:

BOOT/
EFI/
  • 1
  • 2
  • 1
  • 2

其中EFI/Microsoft/Boot目录里面放的就是加载Windows系统的efi文件。即EFI/Microsoft/Boot/bootmgr.efi。 
由上可知,整个硬盘共有两个ESP分区,常理上讲好像有点不科学,具体我也不知道可不可以。我觉得可能是不可以的,测试了下,发现BIOS每次都是从SYSTEM_DRV里面搜索efi程序,而CentOS的efi又不在SYSTEM_DRV目录下,这应该就是CentOS无法启动的原因。 
③ 所以接下来我就把CentOS的ESP分区里面的EFI/centos整个文件夹都拷贝到SYSTEM_DRV盘下的/EFI目录下。重启电脑发现还是不行,原因很简单 
a.如果想要出现两个系统的选择项,那就要使用Win10引导CentOS或者有个程序来专门引导两个系统,前者我查了很多资料还是没弄出来,好像是要修改Windows的BCD文件,有点麻烦。至于后者,有个叫rEFind的程序(rEFind下载)可以达到目的,不过弄出来界面太丑了,我放弃了。 
b.如果想要使用BIOS引导,就要把EFI/centos里面的路径写到一些特殊的文件,这个要用到一个叫BOOTICE的工具BOOTICE下载

3. BOOTICE使用教程

① 打开BOOTICE,选择UEFI,点修改启动序列 
BOOTICE 
修改启动序列 
② 选择左边的添加,先随便选一个本地磁盘的efi文件,然后把左边的启动文件改为

\EFI\centos\grubx64.efi
  • 1
  • 1

启动分区选择和Windows系统一样的项。 
最后把它移动到第二个,保存。 
③ 使用PE把\EFI\centos从CentOS的ESP目录移动到Windows的ESP目录下。这一步是为了让上面设置启动文件:\EFI\centos\grubx64.efi生效。 
不得不说,PE真是个好工具。

成功

通过上述步骤之后,重启电脑,电脑应该还是自动进入Win10,因为BOOTICE工具是把CentOS添加到BIOS的启动序列中= = 
重启,进入BIOS(Thinkpad是F12),可以看到BIOS启动列表有Windows10CentOSUSB HDD等等,这个USB HDD就是U盘,点CentOS,就可以进入CentOS的引导了,然后启动CentOS。到这里就成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章