最近接到一个奇怪的需求,客户非要直接把WIM转换为VHD。我谷歌了一下发现之前微软推出过类似的工具wim2vhd但是它依赖于ImageX,但由于年久失修,微软官方似乎放弃了这个工具(微软官方博客提到该wim2vhd工具仅用于Win7以及Win2008操作系统,并不像后支持)。我花了一些时间测试了一下发现wim2vhd工具其实可以用于Windows10。但是随后我又发现了更好的办法:联用Diskpart+Dism命令完全可以实现wim转vhd,并且不依赖于下载任何工具。为此我整理了我的实验,并写下了此教程以便任何人在有需要的时候可以参阅。
[本文由AndyX撰写,本文的命令以及用户界面以英文为主,仅供参考。]
[本文为AndyX.Net原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!]
[如果您认为本文章帮助到了您,请在文章末尾“打赏”作者,感谢!]
展开索引
准备工作
从MSDN下载微软官方Windows2019 ISO 镜像:
Downloads Windows 2019 Server ISO- Visual Studio Subscriptions Portal
没有MSDN的童鞋也可以去Itellyou下载:
逐步演示
步骤1 – 创建固定尺寸的VHD
1. 打开cmd命令行,并敲入命令Diskpart:
diskpart
2. 创建一个全新空白的VHD文件。在本次实验中,我们创建一个32GB大小的固定尺寸的VHD(你也可以再次步骤中直接创建为固定尺寸的VHDX文件):
create vdisk file=C:\WIM2VHD\OS.vhd maximum=32768 type=fixed >100 percent completed >DiskPart successfully created the virtual disk file.
3. 挂载该VHD文件为一个虚拟磁盘:
attach vdisk
4. 初始化磁盘,分配盘符,进行格式化.
创建磁盘结构如下方案:
4.1. 如果你使用BIOS+MBR方式引导系统, 请参照以下命令:
diskpart select disk 0 clean rem == 1. System partition ====================== create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active rem == 2. Main partition ======================== create partition primary format quick fs=ntfs label="Main" assign letter="M" exit
4.2. 如果你使用GPT+UEFI方式引导系统, 请参照以下命令:
diskpart select disk 0 clean convert gpt rem == 1. System partition ========================= create partition efi size=100 format quick fs=fat32 label="System" assign letter="S" rem == 2. Microsoft Reserved (MSR) partition ======= create partition msr size=128 rem == 3. Main partition =========================== create partition primary format quick fs=ntfs label="Main" assign letter="M" exit
5. 再次确认退出 Diskpart命令:
exit
步骤2 – 检查ISO/Wim相关信息
1. 双击ISO文件以便载入该镜像:
2. 运行命令以便检查WIM的多个版本索引:
dism /Get-WimInfo /WimFile:F:\sources\install.wim
(推荐使用: Windows Server 2019 datacenter with desktop experience)
步骤3 – 将Windows 所有系统组件应用至VHD
1. 运行命令以便从WIM中导出Windows组件(从 Index4):
Dism /Apply-Image /ImageFile:F:\sources\install.wim /index:4 /ApplyDir:M:\
步骤4 – 建立Boot引导区
1. 应用Boot引导区.
1.1. 如果你使用BIOS+MBR方式引导系统, 请参照以下命令:
cd M:\windows\system32 bcdboot M:\windows /s S: /f BIOS >Boot files successfully created.
1.2. 如果你使用GPT+UEFI方式引导系统, 请参照以下命令:
cd M:\windows\system32 bcdboot M:\windows /s S: /f UEFI >Boot files successfully created.
2. 如果出现命令执行出错或者无法执行bcdboot命令,请尝试卸载VHD然后重新挂载.
步骤5 – 启用 EMS 以及更改BCD 配置以便符合Azure环境(本操作可选)
<如果您只需要将VHD应用于本地环境,可以不进行此步骤>
1. 运行命令以便启用EMS(串行命令控制台)功能:
bcdedit /store S:\boot\bcd /set "{bootmgr}" displaybootmenu yes bcdedit /store S:\boot\bcd /set "{bootmgr}" timeout 5 bcdedit /store S:\boot\bcd /set "{bootmgr}" bootems yes bcdedit /store S:\boot\bcd /ems "{current}" ON bcdedit /store S:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
2. 运行命令更改BCD 配置以便符合Azure环境:
bcdedit /store S:\boot\bcd /set "{bootmgr}" integrityservices enable bcdedit /store S:\boot\bcd /set "{default}" integrityservices enable bcdedit /store S:\boot\bcd /set "{default}" recoveryenabled Off bcdedit /store S:\boot\bcd /set "{default}" bootstatuspolicy IgnoreAllFailures
3. 再次检查看配置是否正确:
bcdedit /store s:\boot\bcd /enum
VHD 首次运行界面
参考文献
- New-VHD (Hyper-V) | Microsoft Docs
- Boot to a virtual hard disk: Add a VHDX or VHD to the boot menu | Microsoft Docs
(全文完)
文章撰写:作者AndyX,来自AndyX.Net。
文章遵循 CC 4.0 BY-SA 版权协议,若需转载本文,请标注来源与链接:原创内容AndyX.Net版权所有
本文链接:微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd) – AndyX.Net