在 WSL2(适用于 Linux 的 Windows 子系统)中安装物理和网络驱动器
有多种方法可以在 Windows Subsystem for Linux (WSL2) 中安装和访问物理、虚拟或网络驱动器。默认情况下,WSL 环境将所有 Windows 逻辑驱动器挂载到/mnt/目录。此外,您可以使用 UNC 路径直接从 Windows 主机上运行的文件资源管理器访问 WSL 文件系统\wsl$(例如,\wsl$ubuntu)。
本指南介绍如何在 WSL 环境中安装不同的驱动器。
内容:

Windows Subsystem for Linux (WSL 2) 可以挂载 Windows 主机本身不支持的文件系统的物理驱动器或特定分区。这/proc/filesystems文件包含 WSL 中支持的文件系统的列表。
例如,您有一个带有 ext4 分区的物理磁盘,并且您希望从 WSL 访问它们。
在继续之前,请检查并更新您的 WSL 2 版本:
wsl --update
然后列出 Windows 中可用的磁盘设备:
wmic diskdrive list brief
在此示例中,两个物理磁盘连接到计算机。


您可以在 WSL 中安装整个硬盘驱动器:
wsl --mount \.PHYSICALDRIVE2
或者只是一个特定的分区:
wsl --mount \.PHYSICALDRIVE2 --partition 1


物理硬盘的分区将挂载在目录/mnt/wsl/PHYSICALDRIVE2p1中。
您可以使用 UNC 路径从 Windows 主机访问此分区上的文件:\wsl$ubuntumntwslPHYSICALDRIVE2p1。
检查 ext4 文件系统分区是否可在 WSL 中访问:
$ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
更多阅读:如何在 Windows 11 / 10 中将文件夹挂载为虚拟驱动器


要卸载分区,请运行:
wsl --umount \.PHYSICALDRIVE2 --partition 1
要在用户登录 Windows 时自动挂载物理磁盘分区,请使用 PowerShell 创建一个简单的计划程序任务:
$TaskName="WSL_Mount_DISK1_PART1"
$Trigger= New-ScheduledTaskTrigger -AtLogOn
$Action= New-ScheduledTaskAction -Execute "cmd" -Argument "/c wsl --mount \.PHYSICALDRIVE2 --partition 1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -RunLevel Highest –Force
WSL 2 目前不支持安装 USB 驱动器或 SD 卡。要将 USB 存储设备连接到 WSL,建议使用usbipd-win包(允许使用 USB over IP 协议直通外部 USB 设备)。
在 WSL 中安装 Windows 网络驱动器
在 WSL 中,您可以访问网络计算机或 NAS 设备上的共享文件夹。在 WSL 中挂载网络驱动器有两种方法:
- 您可以安装在 Windows 中映射并分配有驱动器号的网络驱动器。
- 可以在 WSL 中使用 CIFS/SMB 客户端通过 UNC 路径挂载共享网络文件夹。
例如,您已使用 GPO 或使用net use X: \192.168.100.12tools命令。要从 WSL 访问此网络驱动器:
- 创建挂载点:
$ sudo mkdir /mnt/x - 安装驱动器:
$ sudo mount -t drvfs X: /mnt/x - 现在您可以访问网络驱动器上的文件和文件夹。
要自动安装此网络驱动器,请将以下行添加到/etc/fstab:
X: /mnt/x drvfs defaults 0 0
然后挂载所有文件系统:
$ mount -a


共享网络文件夹也可以使用 CIFS 包直接从支持 SMB 的设备安装。
$ sudo apt install cifs-utils
$ sudo mount -t cifs -o user={user},pass={password},iocharset=utf8,vers=3.0 //192.168.100.12/tools /mnt/tools
此示例使用 SMB 3.0 协议连接到共享文件夹,而不是当前版本的 Windows 中默认禁用的 SMBv1。
在 WSL 中附加虚拟硬盘驱动器 (VHD/VHDX)
VHD/VHDX 虚拟硬盘也可以使用 WSL 挂载。如果计算机上安装了 Hyper-V PowerShell 模块,请使用以下命令创建新的虚拟磁盘文件:
New-VHD -Path $env:USERPROFILEwsl_shared_disk.vhdx -Dynamic -SizeBytes 20GB
然后在 WSL 中挂载 VHDX 文件:
wsl --mount --vhd $env:USERPROFILEwsl_shared_disk.vhdx --bare
现在您可以在虚拟磁盘上创建分区表和具有 ext4 文件系统的分区:
$ lsblk
$ sudo parted /dev/sdc print
$ sudo parted /dev/sdc mklabel msdos
$ sudo parted -a optimal /dev/sdc mkpart primary ext4 0% 100%
$ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT /dev/sdc
$ sudo mkfs.ext4 /dev/sdd1


然后你可以通过 UUID 将新分区挂载到目录中:
$ sudo blkid
$ sudo mount UUID=c04d0309-b93a-47f2-ae0d-79c95c80cd51 /home/sysops/vhdx
使用此方法,您将能够在 WSL 下挂载此计算机上安装的其他 Linux 环境的虚拟硬盘。 Linux WSL镜像文件系统存储在ext4.vhdx虚拟磁盘在C:Users[user]AppDataLocalPackages[distro]LocalState[distroPackageName]文件夹。如果系统驱动器上没有足够的可用空间,可以将包含 WSL 映像文件系统的 VHDX 文件移动到另一个驱动器。
