如何在WSL上使用dd?

Jet*_*lue 6 unix dump windows-subsystem-for-linux

如何使用dd命令在WSL中转储可移动磁盘的内容?

我跑步的时候

dd if=/mnt/d of=sdDump bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

我得到错误 dd: error reading '/mnt/d': Is a directory

我按照此处显示步骤安装磁盘:

sudo mkdir /mnt/d
sudo mount -t drvfs D: /mnt/d
Run Code Online (Sandbox Code Playgroud)

这样做可以使我通过看到磁盘上的文件ls,但是运行会dd产生上述错误。

Asa*_*din 12

这是使用中的类别错误。dd不适用于目录,适用于文件。这些文件可以是设备文件(如/dev/sda/dev/urandom在Linux上),也可以是常规文件(如echo foo >> myfile.txt)。您要传递的是已挂载文件系统中的目录。

不幸的是,WSL似乎不支持访问您的块设备文件(即,它没有/dev)。您可以在他们的问题跟踪器上关注功能请求,以了解他们何时添加支持。


小智 5

正如@asad-saeeduddin 所说,WSL 没有块级访问权限,但这并不意味着您不能在 Windows 上使用 dd!

我发现 dd 是与 Git for Windows 一起安装的工具集的一部分。安装后你可以在C:\Program Files\Git\usr\bin\dd.exe 中找到它

与 /dev/sda 等效的 Windows 是 \.\PHYSICALDRIVE0,您可以使用此命令找到本地机器设备的正确 ID(还返回扇区大小):

Get-WmiObject Win32_diskdrive | select Caption,DeviceID,BytesPerSector,InterfaceType,Size
Run Code Online (Sandbox Code Playgroud)