我正在尝试从 wsl 2 上的 M2 插槽 ssd 安装 ext4 分区。我收到错误 Wsl/Service/AttachDisk/0x80070032
。磁盘列在下面的型号名称 CT500P2SSD8 下。我目前在 CT1000P3SSD8 上启动。有其他人遇到过这个问题吗?
wmic diskdrive list brief
Caption DeviceID Model Partitions Size
TOSHIBA MQ01ABD100V SCSI Disk Device \\.\PHYSICALDRIVE3 TOSHIBA MQ01ABD100V SCSI Disk Device 3 1000202273280
CT500P2SSD8 \\.\PHYSICALDRIVE1 CT500P2SSD8 6 500105249280
USB SanDisk 3.2Gen1 USB Device \\.\PHYSICALDRIVE2 USB SanDisk 3.2Gen1 USB Device 2 30762547200
CT1000P3SSD8 \\.\PHYSICALDRIVE0 CT1000P3SSD8 3 1000202273280
λ wsl --mount \\.\PHYSICALDRIVE1 --partition 3
The request is not supported.
Error code: Wsl/Service/AttachDisk/0x80070032
lsblk 在驱动器 CT500P2SSD8 上看起来像这样。它包含(按顺序)一个 Microsoft 保留分区、一个 Windows ntfs 驱动器、4 个 ext4 Linux 驱动器和 1 个 uefi fat 32 驱动器。
nvme1n1 465.8G
├─nvme1n1p1 16M
├─nvme1n1p2 ntfs 29.3G
├─nvme1n1p3 ext4 1.0 159.6G
├─nvme1n1p4 ext4 1.0 14.6G
├─nvme1n1p5 ext4 1.0 34.7G
├─nvme1n1p6 ext4 1.0 227.1G
└─nvme1n1p7 vfat FAT32 199M
nvme1n1p1 is a Microsoft reserved Partition
我能够很好地从 \\.\PHYSICALDRIVE3(通过 sata 2.5" 到 usb 3)挂载 ext4 分区。
我查找了错误 Wsl/Service/AttachDisk/0x80070032,但找不到任何具体内容。我找到的最好的是https://github.com/microsoft/WSL/issues/8280,建议启用 Hyper V 功能。我已启用 Hyper V、VM 和 WSL。问题仍然存在。
我怀疑是因为 usbipd。我按照以下方法从 winget 安装了它。此连接 USB 教程在 Windows 文档中。
usbipd wsl list
但输出并不包括磁盘。
wsl --version
WSL version: 1.0.3.0
Kernel version: 5.15.79.1
WSLg version: 1.0.47
MSRDC version: 1.2.3575
Direct3D version: 1.606.4
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.19045.2311
Microsoft 版本:Windows 10 版本 22H2 OS BUILD 19045.2311。(我也在 Windows 11 版本 22H2 上进行了验证)
背景信息:我尝试安装 ext4 分区,原因如下。过去 3 年,我主要在双启动配置中使用 linux。最近我需要使用更多仅限 Windows 的软件。我决定尝试 wsl2,看看我是否可以做得比双启动更好。我的目标是保留一个可启动的 linux 驱动器,我也将其用于 wsl2。我读到,使用双启动磁盘作为 wsl2 目标具有挑战性,甚至几乎不可能(参考和参考文献2)。但是,只要分区位于单独的驱动器上,就可以安装分区。如果我可以修改个人文件,我不介意额外的空间来复制我在精益 wsl linux 发行版中使用的核心应用程序。我有一个精心设计的 doom emacs 安装加上 org roam (emacs) 目录,我将文档保存在我的 linux 驱动器中。我最初的目标是在这些文档之上在 wsl (wslg) 中运行 emacs,在操作系统之间仅保留一个版本而无需同步。
我已经发布Reddit也一样。
答案1
根据微软文章 在 WSL 2 中挂载 Linux 磁盘,您需要挂载磁盘而不是分区。
第一步应该是:
wsl --mount \\.\PHYSICALDRIVE1 --bare
这将使磁盘在 WSL 2 中可用。
一旦磁盘被挂载,就可以通过在 WSL 2 中运行以下命令列出其分区:
lsblk
这将显示可用的块设备及其分区。然后,您可以使用 Linux 语法访问已安装的分区
/dev/<Device><Partition>
。