GPT 的硬盘分区表,使用 EFI 启动 Windows 10 和 Centos 8 双系统

Windows 2020-05-05 阅读 269 评论 0

问题描述

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)

安装步骤如下:

  1. 制作 WinPE U 盘启动,用了大白菜启动盘制作工具
  2. 插入U盘,并进去 WinPE,使用 DiskGenius 格式化硬盘为 GUID,一共分了7个磁盘分区:ESP(存放 EFI 启动文件)、MSR、C盘(NTFS 格式)、D盘(NTFS 格式)、E盘(Ext4 格式)、F盘(Ext4 格式)、G盘(Swap 格式)
  3. 在 WinPE,安装 Windows 10 到C盘
  4. 进入 Windows,使用 DD for Windows,将 Centos 8 的 iso 镜像文件刻录到 U盘。
  5. 重启电脑,使用U盘启动,安装 Centos 8

至此,双系统安装完成,开机按 F12,启动界面的选项如下图:

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 试试。

  1. 进入 WinPE,打开 DiskGenius,备份当前 ESP 分区的 EFI,即 Centos 的 EFI,复制到指定文件夹。
    复制 EFI 到指定文件夹
    EFI 目录下,有2个文件夹, BOOTcentos (第3步需要用到),目录结构如下:
    ├── BOOT
    │   ├── BOOTX64.EFI
    │   └── fbx64.efi
    └── centos
        ├── BOOTX64.CSV
        ├── fonts
        ├── grub.cfg
        ├── grubenv
        ├── grubx64.efi
        ├── mmx64.efi
        ├── shimx64-centos.efi
        └── shimx64.efi​
  2. 在 WinPE 中,修复引导,将硬盘引导到 C 盘。此时 ESP 分区存放的是 Windows 10 的 EFI,重启后可以进入到 Windows 10 系统。
    与第1步一样,备份当前 EFI。EFI 目录下,有2个文件夹,BootMicrosoft(第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​
  3. 打开 DiskGenius,在 ESP 分区中浏览文件,删除 EFI 文件夹下的所有文件,将第1步已备份的 centos 文件夹和第2步已备份的 Microsoft,拷贝进入 EFI 文件夹,整个 ESP 分区的 目录如下:
    └── EFI
        ├── centos
        └── Microsoft​

重启电脑,按 F12,选择 Windowns Boot Manager 启动项进入 Windows 10,选择 Centos Linux 进入 Centos 8。

最后更新 2020-05-05