1. wsl2
在 WSL2 中挂载 Linux 磁盘(预览版) 04/08/2021
https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
如果要访问 Windows 不支持的 Linux 磁盘格式,可以使用 WSL2 挂载磁盘并访问其内容。
注意: 将磁盘附加到 WSL2 需要管理员访问权限。 WSL2 mount命令不支持挂载当前正在使用的磁盘(或属于该磁盘的分区)。wsl --mount即使只请求一个分区,也总是附加整个磁盘。无法挂载 Windows 安装盘。
注! 下文命令行开头标识有如下2种:
- > (大于号)开头的命令表示在Windows的PowerShell中.
- $ (美元符号)开头的命令表示Linux的Bash环境.
1.1 先决条件
您需要使用 Windows 10 Build 20211 或更高版本才能访问此功能。您可以加入Windows预览体验计划以获取最新的预览版本。
https://insider.windows.com/en-us/
1.2 挂载未分区的磁盘
在这种最简单的情况下,如果您的磁盘没有任何分区,则可以直接使用该wsl --mount命令挂载它。首先,您需要识别磁盘。
1.2.1 识别磁盘
要列出 Windows 中的可用磁盘,请在PowerShell中运行:
> wmic diskdrive list brief
磁盘路径在“DeviceID”列下可用。通常根据\\.\PHYSICALDRIVE*格式。
1.2.2 挂载磁盘
然后在 Powershell 中,您可以使用上面发现的磁盘路径挂载磁盘。
> wsl --mount
1.3 挂载分区磁盘
1.3.1 识别磁盘
要列出 Windows 中的可用磁盘,请在PowerShell中运行:
> wmic diskdrive list brief
磁盘路径在“DeviceID”列下可用。通常根据\\.\PHYSICALDRIVE*格式。
1.3.2 列出并选择要在 WSL 2 中挂载的分区
> wsl --mount --bare
这将使磁盘在 WSL 2 中可用。
连接后,可以通过在 WSL 2 中运行以下命令来列出分区(已经入Bash环境):
$ lsblk
这将显示可用的块设备及其分区。
在 Linux 中,块设备被标识为 /dev/
. 例如,/dev/sdb3 是磁盘的分区号 3 sdb。
1.3.3 识别文件系统类型
如果您不知道磁盘或分区的文件系统类型,可以在PowerShell使用以下命令:
> blkid
这将输出检测到的文件系统类型(在TYPE=""格式下)。
1.3.4 挂载选定的分区
确定要挂载的分区后,在每个分区上运行以下命令:
> wsl --mount --partition --type
注意: 如果您希望将整个磁盘安装为单个卷(即如果磁盘未分区),--partition则可以省略。如果省略,则默认文件系统类型为“ext4”。
1.4 访问磁盘内容
安装后,可以在配置值指向的路径下访问磁盘:automount.root. 默认值为/mnt/wsl。
在 Windows 中,可以通过导航到以下位置从文件资源管理器访问磁盘:(\\wsl$\\\\选择任何 Linux 发行版)。
1.5 卸载磁盘
如果要从 WSL 2 卸载和分离磁盘,请运行:
> wsl --unmount
1.6 在 WSL 中挂载 VHD
您还可以使用wsl --mount. 为此,您首先需要使用 Windows 中的Mount-VHD命令将 VHD 挂载到 Windows中。请务必以管理员权限运行此命令。下面是我们使用此命令的示例,并输出磁盘路径。请务必替换
为您的实际 VHD 路径。
> Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path -PassThru | Get-Disk).Number)"
您可以使用上面的输出来获取此 VHD 的磁盘路径,然后按照上一节中的说明将其挂载到 WSL。
您还可以使用此技术挂载其他 WSL 发行版的虚拟硬盘并与之交互,因为每个 WSL 2 发行版都通过名为:ext4.vhdx. 默认情况下,WSL 2 发行版的 VHD 存储在以下路径中:C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName],请谨慎访问这些系统文件,这是一个高级用户工作流程。确保wsl --shutdown在与此磁盘交互之前运行以确保该磁盘未在使用中。
1.7 命令行参考
挂载特定的文件系统, 默认情况下,WSL2 将尝试将设备挂载为 ext4。要指定另一个文件系统,请运行:
> wsl --mount -t
例如,要将磁盘挂载为 fat,请运行:
> wsl --mount -t vfat
要列出 WSL2 中的可用文件系统,请运行:cat /proc/filesystems
当磁盘已通过 WSL2(Linux 文件系统)挂载后,无法再通过 Windows 文件系统上的 ext4 驱动程序挂载。
1.8 挂载特定分区
默认情况下,WSL 2 会尝试挂载整个磁盘。要挂载特定分区,请运行:
这仅在磁盘是 MBR(主引导记录)或 GPT(GUID 分区表)时才有效。阅读有关分区样式 - MBR 和 GPT 的信息。
https://docs.microsoft.com/en-us/windows-server/storage/disk-management/initialize-new-disks#about-partition-styles---gpt-and-mbr
1.9 指定挂载选项
要指定挂载选项,请运行:
> wsl --mount -o
> wsl --mount -o "data=ordered"
注意: 目前仅支持文件系统特定选项。ro, rw, noatime, ...不支持诸如此类的通用选项。
1.a 连接磁盘而不安装它
如果上述任何选项都不支持磁盘方案,您可以通过运行将磁盘附加到 WSL 2 而无需安装它:
> wsl --mount --bare
这将使块设备在 WSL 2 中可用,因此可以从那里手动安装。使用lsblk列出内部WSL 2可用块设备。
1.b 分离磁盘
要从 WSL 2 分离磁盘,请运行:
> wsl --unmount [DiskPath]
如果Diskpath省略,则卸载并分离所有附加的磁盘。
注意: 如果一个磁盘卸载失败,可以通过运行 强制退出 WSL 2 wsl --shutdown,这将分离磁盘。
1.c 限制
目前,只能将整个磁盘附加到 WSL 2,这意味着不可能只附加一个分区。具体来说,这意味着无法wsl --mount用于读取引导设备上的分区,因为该设备无法与 Windows 分离。
目前不支持 USB 闪存驱动器和 SD 卡,并且无法连接到 WSL 2。但支持 USB 磁盘。
只有内核本身支持的文件系统才能通过wsl --mount. 这意味着无法通过调用 来使用已安装的文件系统驱动程序(例如 ntfs-3g)wsl --mount。
2. linux-reader(只读)
https://www.diskinternals.com/linux-reader/
从 Windows 访问 Ext、UFS、HFS、ReiserFS 或 APFS 文件系统上的文件和文件夹
Linux Reader? 是一种流行的免费软件产品,它仍然是非商业免费软件。从 4.0 版开始,Linux Reader Pro? 提供了额外的功能。
使用 Linux Reader Pro?,您可以从更多文件系统读取文件、通过 SSH 连接进行远程访问、创建虚拟驱动器、通过 FTP 导出文件等等。
- Linux Reader? 的所有重要功能仍然免费:没有烦人的广告、没有试用模式、没有限制。
- Linux Reader? 和 Linux Reader Pro? 都为您提供对源驱动器的安全只读访问。
- Linux Reader? 和 Linux Reader Pro? 绕过文件安全策略,因此您可以访问 Linux 磁盘上的任何文件。
- Linux Reader? 和 Linux Reader Pro? 的系统要求:Windows 7、8 或 10。
3. 商业软件
3.1 paragon
https://www.paragon-software.com/zh/home/
3.2 UFS Explorer
https://uk.wikipedia.org/wiki/UFS_Explorer
https://www.sysdevlabs.com/line-ufs.php
http://www.ufsexplorer.com/
4. ext2read
https://www.appinn.com/ext2explore/
Ext2explore 是一款可以在 Windows 下浏览 ext2/3/4 分区的软件,小巧好用。
https://sourceforge.net/projects/ext2read/files/
https://github.com/mregmi/ext2read
5. Ext2Fsd
正如其名称, 仅适用于Ext2.
https://zh.wikipedia.org/wiki/Ext2Fsd
https://en.wikipedia.org/wiki/Ext2Fsd
https://github.com/matt-wu/Ext3Fsd
稳定版本0.6.9(2017年11月2日,?3年前)
Ext2Fsd(Ext2 File System Driver 的缩写)是一个免费的可 安装文件系统驱动程序,用C 语言编写,用于Microsoft Windows操作系统系列。它有助于对ext2、ext3和ext4 文件系统的读写访问。
错误
德国电脑杂志PC-WELT曾报道2009年程序崩溃频繁,程序无法顺利访问ext3分区。这常常导致蓝屏。这种类型的崩溃可能导致数据丢失,例如,如果主存储器中还没有永久存储的数据。该程序只能访问 ext2 分区而不会出错。
2012 年,Computerwoche警告说,访问 ext3 分区“并非无害”。可能会发生数据丢失。
严重错误
2017 年 11 月 2 日,发布了 0.69 版的警告:
不要在最新的 Ubuntu 或 Debian 系统上使用 Ext2Fsd 0.68 或更早版本。Ext2Fsd 0.68 无法在启用 64 位模式的情况下处理 EXT4,然后它可能会损坏您的数据。非常抱歉这个灾难问题,我正在努力改进。
虽然尚不清楚 v0.69 是否纠正了这一缺陷,但用户报告即使使用 0.69 版本,Windows 10 也会提示他们格式化 ext4 驱动器。已知的解决方案是将所述 ext4 驱动器转换为 32 位版本。
6. 文件系统对比
https://zh.wikipedia.org/wiki/文件系统的对比
https://en.wikipedia.org/wiki/Comparison_of_file_systems