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。