搜索“windows创建的VHD如何格式化到EXT4”,“如何创建VHD”等问题,总会看到需要 Hyper-V 等一系列要求,经过楼主的一番实验以后,发现并不需要,接下来正文开始。

环境要求: wsl win11

步骤一:创建 vhdx 虚拟磁盘

打开磁盘管理器,按照下图操作,创建VHD硬盘

创建完成后长这个样子

步骤二:进入wsl完成ext4格式化

1. 获取硬盘ID

虚拟硬盘创建完成后,默认不需要额外操作(默认是自动附加的),就可以在powershell中查看,命令和效果如下

Get-CimInstance -Query "SELECT * from Win32_DiskDrive"

通过 Caption 和 Size 对应可以看到硬盘的ID为 \\.\PHYSICALDRIVE2

2. 以 bare 模式加载

使用wsl命令将硬盘加载到wsl即可,命令和效果如下(注意使用 --bare 参数)

wsl --mount \\.\PHYSICALDRIVE2 --bare

这一步可以放心操作,加载物理硬盘会显示分享冲突,如下图所示

如果遇到下面的问题,那么是wsl运行的命令行窗口没有管理员权限

如何识别加载的硬盘在哪里?可以参考下图

3. 格式化

接下来完成格式化,命令和效果如下图

sudo mkfs.ext4 /dev/sdc

4. 重新加载

最后unmount(bare模式)以后重新加载,可指定名字

wsl --unmount
wsl --mount \\.\PHYSICALDRIVE2 --name drv2

到了这步,ext4格式硬盘已经制作完成并可以在 wsl 中使用,也可以配置到wsl settings中了。

清理

如果不用了,unmount以后将虚拟磁盘分离即可

后记

事情的起因是因为看到 wsl settings 里面有一个交换文件位置的配置项,就想做一个虚拟硬盘配置来看看情况。于是开始调查怎么在windows上创建一个 ext4 格式的虚拟硬盘。

 调查过程中发现, wsl --manage --move 的硬盘,是 .vhdx 格式的,从命名猜测格式是linux常用的 ext4

看了许多篇同质化的文章后(包括创建虚拟磁盘和挂载虚拟磁盘到WSL),并且在检查 Hyper-V 设置的时候,才发现操作系统是家庭版不具备 Hyper-V,也不想折腾专业版的问题。就在一筹莫展的时候,发现了下文

Windows10下如何创建VHDX(VHD)格式的虚拟硬盘文件

文中并未使用Hyper-V就完成了虚拟磁盘的创建,于是一番操作后,我也成功在不需要Hyper-V的前提下,完成了VHDX硬盘的创建,接下来的问题就变成了如何将 VHDX 格式化为 ext4。

因为之前有倒腾 linux 磁盘挂载问题,翻看笔记后按照笔记操作,顺利完成了格式化,于是开心的配置到 wsl settings 中。

参考资料

- Windows10下如何创建VHDX(VHD)格式的虚拟硬盘文件: https://blog.csdn.net/cjtaitan/article/details/113068207

- 在 WSL 2 中装载 Linux 磁盘: https://learn.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐