# 使用BCD命令重建正确的EFI分区和BCD文件 本文是“[[:Windows:OS:Migrate_ordinary_os_to_vhdx_window_to_go_on_usb_driver|将一般Windows操作系统迁移到VHDX中并切换为WindowsToGo启动]]”的后续。某天我自己又按那个套路搞了一台机器,开始时挺好的,随后我考虑这是一台笔记本,就在启动后的系统中,给这个装在VHDX中的C盘加了个bitlocker,然后就杯具了,启动的时候本应该要求输密码,但实际上直接报找不到windows文件。 尝试一番后,忘记了在哪里看到了关键信息:开不开bitlocker,BCD的文件是有差异的,但是这是一个轻微差异,像bootice这种工具是检测不到的。所以如果直接复制别的EFI分区来用,不开bitlocker还好,开启则会因为EFI分区中的文件实际上是面向非加密分区创建的而出现这种无法启动的错误。 解决方法就是到PE里面,拿官方给的`bcdboot`命令重建BCD文件——或者干脆重写整个EFI分区。最佳方案是一开始就不要使用“[[:Windows:OS:Migrate_ordinary_os_to_vhdx_window_to_go_on_usb_driver|将一般Windows操作系统迁移到VHDX中并切换为WindowsToGo启动]]”一文中复制其他地方的EFI分区这一步,是拿下文的命令做。如果已经搞的启动不起来了,则也可如下执行。 0. 确保PE中bitlocker模块和bcdboot命令未被精简,能解锁分区,能调用bcdboot命令; 1. 启动到PE,挂载装着系统的VHD,如果有bitlocker则解锁一下,盘符记为`V`,不必非要挂载成`C`; 2. 确保在正确的硬盘上有一个EFI分区,清空(如果有其他系统的启动文件则只删除Microsoft文件夹); 3. 确保EFI分区有盘符,记为`E`; 4. 开一个`cmd`,依次执行如下命令: ``` V:\ cd V:\windows\system32 bcdboot V:\windows /s E: /f UEFI ``` 之后重启尝试是否可以启动了。全程不需要关注VHDX文件存放在哪里,`bcdboot`命令会自动检测。 应该不会有人在使用这种方案是仍然用`MBR`启动吧,如果有,参考[[https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/boot-to-vhd--native-boot--add-a-virtual-hard-disk-to-the-boot-menu|此处]]。 尝试过程中还发现,我之前多有青睐的`微PE`居然没有bitlocker相关组件,一番寻找后发现[[https://www.upe.net|优启通]]还挺不错的。下载安装包,运行可以不安装而生成ISO文件,然后扔到[[https://www.ventoy.net|Ventoy]]里面就好了。