如何在WSL2上使用Linux的dd命令刻录可启动的USB?

7
我是一个热衷于使用Linux的用户,但现在被迫在工作中使用Windows。我的电脑已经安装了WSL2和Ubuntu,我想使用WSL2中的dd命令来刻录可启动的USB设备,但我无法找到设备,因为lsblk命令无法显示连接到计算机上的外部块设备。虽然我知道可以使用Rufus之类的软件来完成此任务,但由于这是一台工作电脑,我不能在电脑上安装任何类似的软件。
在StackOverflow上只有另一个类似的问题,但它已经关闭且没有给出答案。不过,它给了我一个线索开始寻找物理设备名称。使用这个线索,我已经找到了答案,并想分享一下,因为我找不到任何其他的答案,不仅在StackOverflow上,而且在互联网上也找不到。
2个回答

3

PowerShell:

# I ran this command to get the DeviceID of my USB Thumbdrive (Mine came out to be
# \.\\PHYSICALDRIVE 5, but yours may vary)
Get-WmiObject Win32_diskdrive | Select Caption,DeviceID,InterfaceType,Size | Where-Object {$_.InterfaceType -eq "USB"}

Ubuntu 20.04 终端:

# After I got the physical drive number from powershell (as I would do using lsblk in Linux) I
# formatted the drive using mkfs to ensure it would work before trying to use dd.
sudo mkfs.vfat -I \\.\PHYSICALDRIVE5

# After a successful format, I was able to run dd as normal
sudo dd if=path/to/my/file.iso of=\\.\PHYSICALDRIVE5 status=progress

1
Get-Wmiobject is deprecated. use et-CimInstance Win32_DiskDrive - rowman
3
我认为WSL中的Linux并不会特别处理像\.\PHYSICALDRIVE5这样的路径。这可能只是在当前目录下创建一个名为.PHYSICALDRIVE5(在shell删除一些反斜杠后)的普通文件。也就是说,我怀疑这实际上并没有更新您的闪存驱动器。 - dc46and2
1
@rowman 你的评论中缺少了首字母'g',正确命令为Get-CimInstance Win32_DiskDrive - Benoît Dubreuil
@BenoîtDubreuil 谢谢,不过现在不能编辑了。 - rowman
我在WSL2 Ubuntu 20.04上收到“无法打开\.\PHYSICALDRIVE1: 没有这样的文件或目录”的错误。我可以挂载USB,但是我无法使用mkfs.vfat、fdisk或parted检测到它。它是FAT32格式的。 - ahmedsabriz
显示剩余4条评论

0

关于mkfs.vfat的问题,我的习惯是确保我使用的USB格式化为FAT32。我猜这不是必须的,但肯定是我总是采取的步骤。

谢谢@rowman,我不知道它已经被弃用了。从现在开始,我将使用Get-CimInstance Win32_DiskDrive。比使用Where-Object调用Get-WmiObject要容易得多。


1
如果接下来的步骤中你只是要覆盖文件系统,那么创建文件系统似乎毫无意义。 - Ordoshsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接