1.前置条件
开始之前,请务必确认以下几点:
- 磁盘必须独立:Linux 分区必须位于一块独立的物理磁盘上。如果 Linux 与 Windows 安装在同一块 SSD/HDD 的不同分区中,
wsl --mount 命令将无法挂载该磁盘(系统会阻止挂载包含 Windows 启动分区的磁盘)。这也是双系统部署的一条最佳实践——将两个系统分别安装在不同的物理驱动器上,能规避大量潜在的兼容性与数据风险。 - WSL2 已就绪:确保 Windows 已安装并启用 WSL2,且默认发行版可以正常启动。
- 管理员权限:部分操作需要在管理员权限的终端中执行。
2.操作步骤
步骤一:识别目标物理磁盘
首先,我们需要确定 Linux 分区所在的物理磁盘编号。按下 Win + X 打开高级用户菜单,选择终端(管理员),执行以下 PowerShell 命令:
Get-CimInstance -ClassName Win32_DiskDrive | Select-Object DeviceID, Model, Size
该命令调用 WMI(Windows Management Instrumentation)接口,列出系统中所有物理磁盘,输出包含磁盘的型号、容量以及形如 \\.\PHYSICALDRIVE0 的 DeviceID。根据磁盘的型号和容量信息,找到存放 Linux 分区的那块硬盘,并准确记录其 DeviceID(例如 \\.\PHYSICALDRIVE1)。
步骤二:将磁盘附加到 WSL2
在保持管理员权限的 PowerShell 窗口中,执行以下命令:
wsl --mount \\.\PHYSICALDRIVE0 --bare
注意:将 PHYSICALDRIVE0 替换为你在上一步中记录的实际磁盘编号。
--bare 参数的作用是将整块物理磁盘以裸设备(raw device)形式附加到 WSL2 环境中,但不会自动挂载其中的任何分区。这一步相当于把硬盘的控制权"移交"给了 Linux 子系统,后续的分区识别与挂载操作均在 WSL2 内部完成。
步骤三:查看分区信息
打开一个普通的 Windows 终端窗口(无需管理员权限),输入 wsl 进入 Linux 环境,然后执行:
lsblk -f
该命令会列出当前 WSL2 可见的所有块设备(block devices),包括你刚刚附加的物理磁盘。你需要关注类似 sda、sdb 这样的设备名,以及它们的分区(如 sda1、sda2)。输出中还会显示每个分区的文件系统类型(如 ext4、btrfs、xfs)和卷标(LABEL),帮助你准确识别哪个分区包含了需要访问的 Linux 文件。
根据实际需求,你可以选择挂载所有分区,也可以仅挂载包含目标数据的那一个分区。
步骤四:挂载目标分区
具体的挂载命令取决于你的 Linux 发行版所使用的文件系统类型。
场景 A:ext4 文件系统
ext4 是 Ubuntu、Debian、Linux Mint 等主流发行版的默认文件系统,也是目前 Linux 桌面领域最通用的日志文件系统。依次执行以下命令:
sudo mkdir -p /mnt/wsl/mylinux
sudo mount -t ext4 /dev/sda1 /mnt/wsl/mylinux
第一条命令在 WSL2 中递归创建挂载点目录,第二条命令将指定的分区(如 /dev/sda1,请根据 lsblk -f 的实际输出替换)以 ext4 格式挂载到该目录。
场景 B:Btrfs 文件系统
Btrfs 是 Garuda Linux、Fedora、openSUSE 等发行版的默认文件系统。由于 Btrfs 采用子卷(subvolume)机制,挂载时需要额外指定子卷名称:
sudo mkdir -p /mnt/wsl/mylinux
sudo mount -t btrfs -o subvol=@ /dev/sda1 /mnt/wsl/mylinux
在大多数基于 Btrfs 的发行版中,根目录对应的子卷名称为 @,用户主目录对应的子卷为 @home。不过,具体的子卷命名可能因发行版而异。如果你在原始 Linux 系统中可以正常启动,建议通过 btrfs subvolume list / 命令提前确认子卷结构,以确保挂载路径正确。
如果你在分区识别或子卷挂载过程中遇到困难,可以借助 AI 助手辅助排查。它们在 Linux 文件系统层面的知识储备通常相当全面,能够快速定位 lsblk 输出中的关键信息。
步骤五:通过文件资源管理器访问文件
完成挂载后,便可以在 Windows 端直接访问这些文件了。打开文件资源管理器,在地址栏输入以下路径并回车:
\\wsl$
这是一个特殊的 Windows 网络命名空间(Plan 9 服务器协议),用于暴露 WSL2 实例的 Linux 文件系统。你会看到所有已安装的 Linux 发行版列表(例如 Ubuntu、Debian)。
进入你用于执行挂载操作的那个发行版文件夹,浏览其完整的文件系统结构。依次打开 mnt → wsl → mylinux(即你之前创建的挂载点目录),里面就是你从物理磁盘挂载过来的 Linux 分区内容。
从这里开始,可以像操作普通 Windows 文件夹一样:
- 用 Windows 程序打开文档(如用 VS Code 编辑配置文件);
- 反向将 Windows 文件拖拽到 Linux 分区中。
3.持久化与自动化
需要特别指出的是:上述挂载在 Windows 系统重启后不会自动保留。每次开机后,你都需要重新执行"附加磁盘"和"挂载分区"的操作。
如果需要频繁访问这块 Linux 分区,手动重复这些步骤显然不够优雅。针对这一痛点,可以通过以下方式优化:
(1)PowerShell 脚本 + 任务计划程序:编写一个 PowerShell 脚本自动执行 wsl --mount,并配置为登录时自动运行。
(2)WSL 启动脚本:在 WSL 的 /etc/wsl.conf 中配置启动命令,实现进入 WSL 时自动挂载分区。