Unix 如何在WSL上使用dd?
如何使用Unix 如何在WSL上使用dd?,unix,dump,windows-subsystem-for-linux,Unix,Dump,Windows Subsystem For Linux,如何使用dd命令在WSL中转储可移动磁盘的内容 当我跑步时 dd if=/mnt/d of=sdDump bs=512 count=1 我得到错误dd:error reading'/mnt/d':是一个目录 我按照以下步骤装载磁盘: sudo mkdir /mnt/d sudo mount -t drvfs D: /mnt/d 这样做允许我通过ls查看磁盘上的文件,但运行dd会产生上述错误。这是使用中的类别错误dd不适用于目录,它适用于文件。这些文件可以是(比如Linux上的/dev/sda
dd
命令在WSL中转储可移动磁盘的内容
当我跑步时
dd if=/mnt/d of=sdDump bs=512 count=1
我得到错误dd:error reading'/mnt/d':是一个目录
我按照以下步骤装载磁盘:
sudo mkdir /mnt/d
sudo mount -t drvfs D: /mnt/d
这样做允许我通过
ls
查看磁盘上的文件,但运行dd
会产生上述错误。这是使用中的类别错误dd
不适用于目录,它适用于文件。这些文件可以是(比如Linux上的/dev/sda
或/dev/uradom
),也可以是常规文件(比如echo foo>>myfile.txt
)。您试图传递的是已装入文件系统中的目录
不幸的是,WSL似乎不支持访问块设备文件(即,它没有
/dev
)。您可以在他们的问题跟踪器上跟踪功能请求,查看他们何时添加支持。mount命令的典型用法是指定您要装载的内容(设备,在*nix上,设备实际上只是一种特殊类型的文件)以及您要装载它的位置(目录)。dd
命令需要某种类型的文件。在您的示例中,D:
是设备,因此这是您需要传递给dd
的参数:
dd if=D: of=sdDump bs=512 count=1
免责声明:我没有WSL经验,但我已经使用
mount
和dd
几十年了。正如@asad saeeduddin所说,WSL没有块级访问,但这并不意味着你不能在Windows上使用dd
我发现dd是与Git for Windows一起安装的工具集的一部分。安装后,您可以在C:\Program Files\Git\usr\bin\dd.exe中找到它
相当于/dev/sda的Windows是\.\PHYSICALDRIVE0,您可以使用此命令找到本地计算机设备的正确ID(还返回扇区大小):
对于“if”参数,请使用传递给mount命令的设备,而不是挂载到的目录名。@pcjr Hi,您能详细说明一下吗?“使用设备”是什么意思?使用块设备。由于WSL不支持它们,我建议使用或。请注意,您需要以管理员身份打开终端,然后运行
dd if=/dev/sdb of=sdDump bs=512 count=1 status=progress
。不幸的是,我认为dd if=D:
不起作用;WSL不支持访问块设备文件。对此有任何更新吗?也许WSL2可以在具有真正linux内核的内部程序上使用?
Get-WmiObject Win32_diskdrive | select Caption,DeviceID,BytesPerSector,InterfaceType,Size