Windows笔记系统菜鸟

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)

最近接到一个奇怪的需求,客户非要直接把WIM转换为VHD。我谷歌了一下发现之前微软推出过类似的工具wim2vhd但是它依赖于ImageX,但由于年久失修,微软官方似乎放弃了这个工具(微软官方博客提到该wim2vhd工具仅用于Win7以及Win2008操作系统,并不像后支持)。我花了一些时间测试了一下发现wim2vhd工具其实可以用于Windows10。但是随后我又发现了更好的办法:联用Diskpart+Dism命令完全可以实现wim转vhd,并且不依赖于下载任何工具。为此我整理了我的实验,并写下了此教程以便任何人在有需要的时候可以参阅。

[本文由AndyX撰写,本文的命令以及用户界面以英文为主,仅供参考。]

[本文为AndyX.Net原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!]

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图

准备工作

从MSDN下载微软官方Windows2019 ISO 镜像:

Downloads Windows 2019 Server ISO- Visual Studio Subscriptions Portal

没有MSDN的童鞋也可以去Itellyou下载:

MSDN, 我告诉你 – 做一个安静的工具站

 

逐步演示

步骤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.

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图1

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图2

3. 挂载该VHD文件为一个虚拟磁盘:

attach vdisk

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图3

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

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图4

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文件以便载入该镜像:

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图5

2. 运行命令以便检查WIM的多个版本索引:

dism /Get-WimInfo /WimFile:F:\sources\install.wim

(推荐使用: Windows Server 2019 datacenter with desktop experience)

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图6

步骤3 – 将Windows 所有系统组件应用至VHD

1. 运行命令以便从WIM中导出Windows组件(从 Index4):

Dism /Apply-Image /ImageFile:F:\sources\install.wim /index:4 /ApplyDir:M:\

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图7

 

步骤4 – 建立Boot引导区

1. 应用Boot引导区.

1.1. 如果你使用BIOS+MBR方式引导系统, 请参照以下命令:

cd M:\windows\system32

bcdboot M:\windows /s S: /f BIOS

>Boot files successfully created.

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图8

 

1.2. 如果你使用GPT+UEFI方式引导系统, 请参照以下命令:

cd M:\windows\system32

bcdboot M:\windows /s S: /f UEFI

>Boot files successfully created.

 

2. 如果出现命令执行出错或者无法执行bcdboot命令,请尝试卸载VHD然后重新挂载.

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图9

 

步骤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

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图10

 

VHD 首次运行界面

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图11

微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd)插图12

 

参考文献

 

(全文完)

 

文章撰写:作者AndyX,来自AndyX.Net

文章遵循 CC 4.0 BY-SA 版权协议,若需转载本文,请标注来源与链接:原创内容AndyX.Net版权所有

本文链接:微软Azure云 LAB 101: 使用diskpart以及dism命令将wim转换为vhd (wim2vhd) – AndyX.Net