GPT 的硬盘分区表,使用 EFI 启动 Windows 10 和 Centos 8 双系统
问题描述
Centos Linux 已经升级到 8 了,这些天玩起了双系统,尝新一下。各种环境配置如下:
笔记本:Thinkpad E430
固态硬盘:256G,使用 GUID 硬盘分区表,即 GPT
系统1:Windwos 10 64 位,百度搜索并下载 Ghost
系统2:Centos 8,官网 上下载,如 CentOS-8.1.1911-x86_64-dvd1.iso
U盘:2 个,一个是闪迪 32G(刻录 Centos 8 镜像),一个是金士顿 16G(安装 WinPE)
安装步骤如下:
- 制作 WinPE U 盘启动,用了大白菜启动盘制作工具
- 插入U盘,并进去 WinPE,使用 DiskGenius 格式化硬盘为 GUID,一共分了7个磁盘分区:ESP(存放 EFI 启动文件)、MSR、C盘(NTFS 格式)、D盘(NTFS 格式)、E盘(Ext4 格式)、F盘(Ext4 格式)、G盘(Swap 格式)
- 在 WinPE,安装 Windows 10 到C盘
- 进入 Windows,使用 DD for Windows,将 Centos 8 的 iso 镜像文件刻录到 U盘。
- 重启电脑,使用U盘启动,安装 Centos 8
至此,双系统安装完成,开机按 F12,启动界面的选项如下图:

选择 Windowns Boot Manager 启动项,没有效果,只能从 Centos Linux 进入。由于在后面安装 Centos 8 的时候,已经将 ESP 分区格式化了,现在 ESP 磁盘存放的 EFI 文件是 Centos 系统的。
解决方法
我试了网上几种方法,如在 Centos 下,修改 grub,增加 menuentry,指定 hd(0,1) (我的电脑应该是 hd(0,2)),但是每次进入到 Centos 的启动界面,都没有出现 Windows 10 的选项,不知道是否跟我的硬盘是 gpt 分区表有关。后来想了想,既然 EFI 现在只有 Linux,那再加上 Windows 10 的 EFI 试试。
- 进入 WinPE,打开 DiskGenius,备份当前 ESP 分区的 EFI,即 Centos 的 EFI,复制到指定文件夹。

EFI 目录下,有2个文件夹, BOOT 和 centos (第3步需要用到),目录结构如下:├── BOOT │ ├── BOOTX64.EFI │ └── fbx64.efi └── centos ├── BOOTX64.CSV ├── fonts ├── grub.cfg ├── grubenv ├── grubx64.efi ├── mmx64.efi ├── shimx64-centos.efi └── shimx64.efi - 在 WinPE 中,修复引导,将硬盘引导到 C 盘。此时 ESP 分区存放的是 Windows 10 的 EFI,重启后可以进入到 Windows 10 系统。
与第1步一样,备份当前 EFI。EFI 目录下,有2个文件夹,Boot 和 Microsoft(第3步要用到),目录结构如下:├── Boot │ └── bootx64.efi └── Microsoft └── Boot ├── BCD ├── BCD.LOG ├── BCD.LOG1 ├── BCD.LOG2 ├── bg-BG │ ├── bootmgfw.efi.mui │ └── bootmgr.efi.mui ├── bootmgfw.efi ├── bootmgr.efi ├── BOOTSTAT.DAT ├── boot.stl - 打开 DiskGenius,在 ESP 分区中浏览文件,删除 EFI 文件夹下的所有文件,将第1步已备份的 centos 文件夹和第2步已备份的 Microsoft,拷贝进入 EFI 文件夹,整个 ESP 分区的 目录如下:
└── EFI ├── centos └── Microsoft
重启电脑,按 F12,选择 Windowns Boot Manager 启动项进入 Windows 10,选择 Centos Linux 进入 Centos 8。