我正在使用 Windows-10,其中安装了 Windows 的 Linux 子系统(更确切地说是 Ubuntu)。
我已将 USB 驱动器映射到 D: 驱动器上,并且 Windows 认为这是一个通用磁盘:
Windows commandline prompt>wmic logicaldisk list (relevant excerpt)
Access Availability BlockSize Caption Compressed ConfigManagerErrorCode ConfigManagerUserConfig Description DeviceID DriveType ErrorCleared ErrorDescription ErrorMethodology FileSystem FreeSpace InstallDate LastErrorCode MaximumComponentLength MediaType Name NumberOfBlocks PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProviderName Purpose QuotasDisabled QuotasIncomplete QuotasRebuilding Size Status StatusInfo SupportsDiskQuotas SupportsFileBasedCompression VolumeName VolumeSerialNumber
0 C: FALSE Local Fixed Disk C: 3 NTFS 144074813440 255 12 C: 1023013810176 FALSE TRUE OSDisk B622B231
0 D: FALSE Local Fixed Disk D: 3 NTFS 996483739648 255 12 D: 1000168484864 FALSE TRUE Elements 6CD465F5
在我的 Windows PC 上,我有两个额外的目录:
C:\Users\...\AppData\...\CanonicalGroupLimited.UbuntuonWindows_...\...\rootfs\mnt\c
C:\Users\...\AppData\...\CanonicalGroupLimited.UbuntuonWindows_...\...\rootfs\mnt\d
在我的 Linux 子系统上,/etc/mtab
完成如下:
Linux Prompt>tail -n 2 /etc/mtab
C:\134 /mnt/c drvfs rw,noatime,uid=1000,gid=1000,case=off 0 0
D:\134 /mnt/d drvfs rw,noatime,uid=1000,gid=1000,case=off 0 0
然而,的结果df -hk
并没有显示任何/mnt/d
:
Linux Prompt>df -hk
df: /mnt/d: Invalid argument
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 999036924 858339700 140697224 86% /
...
C:\ 999036924 858339700 140697224 86% /mnt/c
在互联网上,我找到了这个命令,但它并没有给出解决方案:
Linux prompt>mount -t drvfs D: /mnt/d
结果mount
相当奇怪:
Linux prompt> sudo mount
rootfs on / type wslfs (rw,noatime)
...
C:\ on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,case=off)
D:\ on /mnt/d type drvfs (rw,noatime,uid=1000,gid=1000,case=off)
然而,/mnt/d
不起作用:目录存在,但无法使用。
有人知道该怎么办吗?
提前致谢
答案1
首先,假装你在下面找到的任何东西%AppData%
都不存在。这很危险,使用它可能会导致 WSL 损坏(微软链接)。我知道你可能只是在 Windows 中搜索时偶然发现了它。走开吧……慢慢来。:-)
简短回答可能的解决方案:
尝试创建一个新的挂载位置:
sudo mkdir /media/d
sudo mount -t drvfs D: /media/d
或者可能:
wsl --shutdown
- 重新连接 USB 驱动器
- 启动 WSL 实例
更多详情:
以下是我思考正在发生。WSL 在启动时读取 Windows 连接的驱动器,并/init
在启动实例时在每个实例中自动挂载此驱动器列表(通过)。
如果驱动器在 WSL 启动后断开连接,则子系统对此一无所知。断开并重新连接驱动器(或另一个驱动器)会导致与您看到的情况类似的情况——A /mnt/d
(或其他驱动器号)不起作用。
如上所述,一个新的安装位置(/media
很好,因为它通常是安装可移动驱动器的位置)或wsl --shutdown
重新启动可以解决我的问题。