Skip to content

Instantly share code, notes, and snippets.

@muink
Last active February 20, 2021 08:23
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save muink/5e7706facb2dc4e2a5ae77a07ab2ffd7 to your computer and use it in GitHub Desktop.
Save muink/5e7706facb2dc4e2a5ae77a07ab2ffd7 to your computer and use it in GitHub Desktop.
windows传统bios无损转uefi启动(重建uefi引导)

windows传统bios无损转uefi启动(重建uefi引导)

[toc]

引导区别

BIOS: 指定的磁盘0扇区mbr处引导代码 > 活动分区pbr处引导代码 > 活动分区中的引导文件 > 读取引导配置 > 引导指定系统
UEFI: 指定的磁盘的指定分区的\EFI\Boot\bootx64.efi应用(一般是ESP分区) > 读取引导配置 > 引导指定系统

前期准备

  • 在进行转换前首先确认几点是否达标
  • win7系统必须为64位
  • 安装完主要设备驱动(显卡, 硬盘, 芯片组)
  • BitLocker 已完全关闭
  • 系统非VHD启动(win7原版不支持uefi下从vhd启动,需修改注册表的BootDriverFlags)
  • 某些笔记本的厂商管理驱动软件可能会导致转换后启动失败
  • uefi固件为2.0或更高版本
  • uefi csm支持
  • 使用win7时需禁用安全启动
  • 若csm不支持, 必须确保显示卡专有驱动已安装且显卡支持gop启动
  • 这将阻止win7调用int10

*注意: 转换分区表将导致系统还原点丢失, 转换前推荐先关闭系统还原

工具准备

  1. 一个可使用的win7及以上版本的pe系统或操作系统
  2. DiskGenius/PartitionGuru或其他类似的磁盘分区工具
  3. BOOTICE或类似的可以修改BCD文件的工具(如果会手动纯打bcdedit命令也可以)
  4. 用win10创意者更新或更高版本的msdn镜像制作的启动盘

新工具*

win10创意者更新包含一个新工具mbr2gpt可以将系统所在的mbr磁盘无损转换为gpt磁盘, 可在win7/8/10上使用, 具体步骤如下 :

  1. 管理员身份启动cmd, 使用bcdedit /export C:\BCD.bak来备份目前本机BCD文件
  2. 打开diskmgmt.msc选中目标引导磁盘中最后一个分区, 压缩卷, 压缩量为17MB
    1. 也可以用其他磁盘分区工具调整分区大小, 为磁盘末尾留出16896Byte的空闲空间, 用作GUID分区表备份
  3. 引导进入win10创意者启动盘
  4. Shift+F10进入命令行
  5. 输入diskpart进入磁盘管理
    1. list disk列出所有磁盘
    2. select disk X选择指定磁盘 X
    3. detail disk显示这个磁盘的详细信息
    4. 通过这样的方法找到目标引导磁盘, 记住磁盘号X, 之后使用
    5. exit退出磁盘管理
  6. 输入mbr2gpt /validate /disk:X验证选定磁盘
  7. 显示Validation completed successfully表示验证通过可以继续
  8. 输入mbr2gpt /convert /disk:X转换选定磁盘并等待完成
  9. 进入主板BIOS/UEFI固件界面, 开启uefi 对于win7还需开启 csm 兼容模块
    1. 如果没有 csm 兼容模块, 请参考 #Without CSM 纯UEFI GOP启动
  10. 进入系统

*如若不行可以参考以下手动方法

手动转换

  1. 管理员身份启动cmd, 使用bcdedit /export C:\BCD.bak来备份目前本机BCD文件
  2. 把电脑关机, 启动pe或另一个硬盘上的系统
  3. 打开DiskGenius
    1. 选择目标磁盘, 右击转换分区表为GUID格式
    2. bios启动模式下的100MB保留分区建议可以保留, 未来如果需要重新转换为mbr分区表, 使用BOOTICE些许调整BCD又可以再次使用
    3. 创建ESP分区
      1. 对于磁盘根目录下存在Boot EFI Windows 等文件夹的分区, 需将这些文件夹改名并使用 Ctrl+L 重载硬盘, 方可调整这些分区的大小和位置(调整完成后记得还原原来的名字)
      2. 调整其他分区大小和位置, 空出一个100MB的空闲空间
      3. 右键空闲空间, 建立新分区, 选择EFI system partition 大小为100MB
      4. 保存更改但不要格式化
      5. 打开cmd输入diskpart进入磁盘管理
        1. list disk列出所有磁盘
        2. select disk X选择先前转换的磁盘
        3. list partition列出此磁盘中的所有分区
        4. select partition X选择先前建立的100MB EFI系统分区
        5. format fs=fat32 label="EFI System" quick override将分区文件系统格式化为fat32
        6. exit退出磁盘管理
  4. 建立引导文件
    1. 引导进入win10创意者启动盘
    2. Shift+F10进入命令行
    3. 输入diskpart进入磁盘管理
      1. list volume列出所有卷
      2. select volume X选择先前建立的100MB EFI系统分区
      3. assign letter=P为EFI系统分区分配一个未占用的盘符例如P
      4. 找到win7系统所在的卷/分区, 并记住它被分配的盘符, 之后会用到 (这里假设系统盘符为E)
      5. exit退出磁盘管理
    4. 输入bcdboot E:\Windows /l zh-CN /s P: /f UEFI建立引导文件
      1. 还可以使用备份的bcd文件替换EFI系统分区\EFI\Microsoft\Boot\BCD 再使用BOOTICE和bcdedit命令调整引导来达到原先相同的功能配置
      2. 相关内容不进行深入, 可以自己研究
    5. 进入主板BIOS/UEFI固件界面, 开启uefi 对于win7还需开启 csm 兼容模块
      1. 如果没有 csm 兼容模块, 请参考 #Without CSM 纯UEFI GOP启动
    6. 进入系统

Without CSM 纯UEFI GOP启动

*显示屏由哪个显卡驱动就必须确保这个显卡的驱动已安装, 一旦卸载驱动将导致显示黑屏, 需要盲操重新安装驱动

  1. 用命令或使用BOOTICE工具为EFI分区和目标系统分区分别分配一个盘符
  2. 使用win7-efi-gop-boot-tool工具添加gop支持
    • 原理如下
    1. 修改目标系统的bcd文件打开novesa功能
    2. 修改目标系统的服务项, 禁用vgavgaSave(有时非必须禁用)
    3. 达到阻止int10调用的目的
  3. 进入系统

还原回BIOS启动

*适用于无法正常使用系统需要还原回BIOS启动方式的玩家

  1. 打开diskmgmt.msc查看目标系统引导分区所在磁盘, 确定分区总数, 超过4个将导致普通的磁盘分区工具无法将目标磁盘的guid分区表转换为mbr分区表
  2. 使用磁盘分区工具将磁盘转换为mbr格式
  3. 如果你还保留着转换前的100MB保留分区, 则只要执行6,7,8步骤, 再使用BOOTICE调整P:\Boot\BCD文件, 分配正确的Device
  4. 调整其他分区大小和位置, 空出一个100MB的空闲空间
  5. 将分区格式化为NTFS
  6. 将其标记为活动分区
  7. 为其分配一个盘符例如:P
  8. 使用bootsect /nt60 P: /mbr或使用BOOTICE工具为目标活动分区所在的硬盘创建nt6引导
  9. 为目标系统分区分配一个盘符例如:E
  10. 输入bcdboot E:\Windows /l zh-CN /s P:建立引导文件 1. 还可以使用备份的bcd文件替换P:\Boot\BCD 再使用BOOTICE和bcdedit命令调整引导来达到原先相同的功能配置 2. 相关内容不进行深入, 可以自己研究
  11. 进入主板BIOS/UEFI固件界面, 关闭uefi
  12. 进入系统

可参考资源:

UEFI Firmware
换ssd无损迁移windows系统(传统引导方式,非uefi)
uefi+GPT如何安装Win7?
Install Windows 7 at UEFI Graphics Output Protocol (GOP) hardware
用Win10自带的MBR2GPT无损转换GPT磁盘分区形式
Windows 7纯uefi启动的方法(懂行的进)
转:(译)UEFI 启动:实际工作原理
將 Windows 7 從 BIOS (MBR) 轉為 UEFI (GPT) 格式開機

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment