使用 WSL2 解决在 Windows 中读写 Btrfs、Ext4 等 Linux 文件系统的 USB 存储设备

呐~
Windows 默认不支持 btrfs、ext4 等 Linux 文件系统格式
尝试 WinBtrfs、Extfs 等效果并不好~甚至WinBtrfs在我的Windows 11上并没有成功加载~
突发奇想尝试在 WSL 中挂载~

所需工具

  1. WSL 2
  2. usbipd-win
  3. 自编译内核
    内核文件: https://caiyun.139.com/m/i?1P5BSvhZ8vqN0
    提取码: 6L5y
    参考: https://zhuanlan.zhihu.com/p/661175117

下面是我的环境~

WSL2
Fedora 39
Windows 11

配置内核

文件放在这里~
C:\Users[你的用户名].wslconfig
把 bzImage 也放置在相同的文件夹内

[wsl2]
kernel=C:\\Users\\[你的用户名]\\bzImage

启动 usbipd

先查看USB设备
后面的步骤请在 PowerShell 管理员权限下运行~

usbipd list


我这里需要将 USB Attached SCSI (UAS) 大容量存储设备 挂载

usbipd bind -b 3-2
usbipd attach --wsl --busid 3-2

执行 usbipd attach 时需要将 wsl 启动,可以在新开的 PowerShell 中执行 wsl 命令来启动

如果usbipd attach 报错
像下面那样~

usbipd: error: Mounting 'C:\Program Files\usbipd-win\WSL' within WSL failed.

那你需要在 wsl 中编辑
如下~
文件: /etc/profile

sudo su -c '[ ! -d /var/run/usbipd-win ] && mkdir /var/run/usbipd-win'
sudo mount -t drvfs -o "ro,umask=222" "C:\Program Files\usbipd-win\WSL" "/var/run/usbipd-win"

然后重新启动 wsl
下面步骤是在 PowerShell 中执行 (不是 WSL 中)~

wsl --shutdown
wsl

之后继续执行 usbipd attach 就不会报错了

通过 lsusb 查看已连接的 usb 设备
如果跟上面图上类似,那么恭喜你成功啦~


通过 lsblk 命令能够看到自己的USB存储设备
我这里是 sdd
(如果没显示,那就是没用自编译的内核)

挂载

接下来就是正常挂载 USB 存储设备了
如果你跟我一样是 Fedora 的话,请安装 btrfs-progs ~

mkdir -p /mnt/usb0
sudo mount -t btrfs /dev/sdd1 /mnt/usb0

在 Windows 资源管理器中访问

读写测试没有任何问题~

好啦,就写到这里!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moieo.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值