必须先用wsl --mount挂载整块物理磁盘(如.physicaldrive3),再在wsl2中用sudo mount -t ext4 /dev/sdb1 /mnt/ext4disk挂载ext4分区,并执行sudo chown -r $user:$user修复权限,否则无法读写。

要在Windows 11的WSL2中直接读取ext4格式的物理移动硬盘,必须绕过Windows原生不支持ext4的限制,利用WSL2内嵌Linux内核的能力,将整块物理磁盘透传给WSL2,再在Linux侧挂载其ext4分区——这一步不能跳过,否则Windows会误判为未初始化磁盘并弹出初始化警告,【点确定即清空全部数据】。
确认移动硬盘的物理设备ID
插入移动硬盘后,以管理员身份打开PowerShell,运行:
GET-CimInstance -query "SELECT * from Win32_DiskDrive" | Format-Table DeviceID, Model, Size
找到容量匹配、Model含“USB”“Portable”“Elements”等关键词的条目,记下它的DeviceID,例如 \.PHYSICALDRIVE3。注意:不要选错编号,尤其是当电脑有多个NVMe或SATA盘时,DeviceID末尾数字可能不连续。
如果输出中没看到你的硬盘,拔插一次再执行;若仍无,检查USB线是否支持数据传输(部分充电线无法识别设备)。
在WSL2中挂载整块物理磁盘
继续在管理员PowerShell中执行挂载命令:
wsl --mount \.PHYSICALDRIVE3 --bare
该命令将整块磁盘以裸设备方式暴露给WSL2,不指定分区、不自动挂载文件系统。这是关键前提——WSL2只允许挂载整块物理磁盘,【不支持直接挂载单个EXT4分区如\.PHYSICALDRIVE3\Partition1】。
执行后无报错即成功。若提示“Wsl/Service/AttachDisk/MountDisk/HCS/0x8007000f”,说明该磁盘正被Windows占用(例如磁盘管理器打开了、资源管理器正在扫描、或有第三方软件锁定了设备),需关闭所有相关进程后再试。
进入WSL2识别并挂载EXT4分区
第一步:启动你的Linux发行版(如Ubuntu),运行:
sudo fdisk -l
查找新出现的大容量磁盘设备,通常为 /dev/sdb 或 /dev/sdc(不是 /dev/sda,那是WSL2虚拟硬盘)。确认其分区表类型为gpt或msdos,并存在一个Linux filesystem类型分区(Id=83或Type=Linux filesystem)。
第二步:创建挂载点并挂载EXT4分区:
sudo mkdir -p /mnt/ext4disk
sudo mount -t ext4 /dev/sdb1 /mnt/ext4disk
这里假设EXT4分区是第一分区(sdb1);若不确定,用 lsblk -f 查看各分区的FSTYPE字段,只选标为ext4的那一个。挂载后即可用 ls /mnt/ext4disk 查看内容。
第三步:修复常见权限问题(如文件显示为root-only):
sudo chown -R $USER:$USER /mnt/ext4disk
这步必须做,否则你在WSL2里无法新建、编辑或删除文件——因为EXT4分区保留了原始Linux UID/GID,而WSL2默认用户UID通常是1000,但分区里文件属主可能是1001或其他值,导致权限拒绝。











