如何在Ubuntu上创建一个可启动的Windows USB闪存驱动器?

我想要制作一个可启动的Windows USB盘,但是我现在没有Windows机器来完成这个任务。我该如何在Ubuntu下实现这个目标呢?

36Psicofrenia "UNetbootin允许您创建可引导的Ubuntu、Fedora和其他Linux发行版的Live USB驱动器,而无需刻录光盘。" 我已经尝试过使用它,并发现UNetbootin确实不能用于创建Windows可引导的USB闪存驱动器。 - Zignd
你有没有尝试过按照Windows 8的教程来制作USB启动盘,并使用Wine来运行其中一个指定的软件? - Psicofrenia
这个家伙似乎持有不同的观点... --> 从Linux创建一个可启动的Windows 7 USB驱动器(在Ubuntu上测试通过) - Meintjes
2@MrSeed我尝试了这个教程,并且下载了旧版本的UNetbootin,但问题是旧版本依赖于一个在Ubuntu 13.04上不可用的库,因为它太旧了。顺便说一下,最新版本的库可用,但安装后应用程序仍然无法正常工作。 - Zignd
请查看http://askubuntu.com/questions/381953/how-to-install-winusb - Mitch
相关问题:如何创建仅支持UEFI的可启动USB实时媒体?,如果Windows 7和8的安装媒体具有efi文件夹和.efi二进制文件,这个方法也适用。 - LiveWireBT
最近我在这个回答上发布了一篇帖子,希望能对你有所帮助。 - VRR
如果您喜欢使用命令行,请阅读serverfault上的答案 - erik
@Psicofrenia,我自己也尝试过这个方法(用酒+Windows的USB创建工具),但是我没能让它起作用。老实说,我没有深入探索这个可能性,也许它可以运行,但并不直观和简单。酒似乎不喜欢与外部设备一起工作,老实说。 - Gui Imamura
  1. mkusb的新改进版本正在进行测试,可以通过不稳定的PPA获取。它还可以在运行UEFI模式的已安装系统中安装BIOS模式;2. 还描述了一种相当简单的“自己动手”方法,并且具有创建Windows安装驱动器的相同功能。请参阅答案末尾的“编辑”,https://askubuntu.com/questions/289559/how-can-i-create-a-windows-bootable-usb-stick-using-ubuntu/837380#837380以及直接链接,https://help.ubuntu.com/community/Installation/iso2usb
- sudodus
让它运行吧。我的花了大约20分钟。最后我终于得到了一个类似于“安装成功”的提示。 - IgorAlves
18个回答

WinUSB已经过时、陈旧且过时。它可能会在较新的系统上引起问题。您应该使用WineUSB或其他软件来替代WinUSB。
然而,为了历史目的,这个答案将保留原样。
通过WinUSB软件,在Ubuntu上创建一个可启动的Windows USB(Vista及以上版本)。
Ubuntu 12.04至15.04
在终端上运行以下命令以从PPA安装WinUSB。
sudo add-apt-repository ppa:colingille/freshlight
sudo apt-get update
sudo apt-get install winusb

WinUSB screenshot

Ubuntu EFI警告:

在EFI加载的Ubuntu上安装WinUSB将卸载grub-efi软件包以安装grub-pc软件包。如果您在重新启动之前不手动重新安装grub-efi软件包,系统将无法启动。

要进行手动重新安装,请执行以下操作:

sudo update-grub
sudo grub-install /dev/sda
sudo update-grub
sudo reboot

1像这样的命令sudo add-apt-repository "deb http://ppa.launchpad.net/colingille/freshlight/ubuntu saucy main"在14.04上会更好吗?apt-add-repository不仅适用于PPA... - Wilf
add-apt-repositoryapt-add-repository是相同的。 - Avinash Raj
安装了WinUSB,它显示成功创建了USB。然而,它无法启动。 - anvarik
这个应用程序太棒了,但是它只支持32位系统,不支持64位系统吗? - Riccardo Magrini
6@empedokles 1. 如果你想制作一个Windows XP的USB,那就忘了吧。它不支持WinUSB。2. 要修复512错误,请阅读这个链接 - Cornelius
使用第二行命令后,我得到了以下输出:"rajan@rajan-OEM:~$ sudo sh -c "sed -i 's/trusty/saucy/g' /etc/apt/sources.list.d/colingille-freshlight-trusty.list" [sudo] password for rajan: sed: 无法读取 /etc/apt/sources.list.d/colingille-freshlight-trusty.list:没有那个文件或目录" - rajan
1在添加了 PPA 后,首先检查特定文件的存在。 - Avinash Raj
尝试在14.04上使用这种方法安装winusb会告诉我它将删除grub-efi-amd64和grub-efi-amd64-signed,并且将安装grub-gfxpayload-lists grub-pc grub-pc-bin winusb。这样做可以吗? - Luis Lobo Borobia
1@LuisLoboBorobia 这样做是不行的!这很可能会导致您的系统无法启动。 - Cornelius
1如果您在尝试写入图像时遇到错误,那么可能是因为USB闪存驱动器需要有一个标签。 - Calin
制作可启动的USB需要多长时间?我的电脑已经运行了15分钟了!只是显示格式化!我已经格式化了U盘,那它在做什么呢?为什么要花费这么长时间? - Apurva
@Aravinda 为什么你想要改变答案?为什么你想要将“Trusty”改成“Utopic”? - A.B.
@VinnieCaprarola 我实际上是想制作一个可启动的Windows 10 TP U盘,但微软表示只能在Windows系统下完成,所以我不得不依赖Windows操作系统来制作可供Windows 10 TP启动的U盘。 - Apurva
@Cornelius我尝试了很多次,但无法将Ubuntu制作为用于W10TP的可启动盘,我知道可以将U盘制作为W7、8或8.1的可启动盘。如果你知道如何为W10TP制作可启动盘,我也想知道。 - Apurva
@Cornelius 可引导的 EFI。 - Apurva
1被踩了:它从我的机器中删除了引导程序(什么...?),并且无法创建可启动的 USB 驱动器。我认为这个软件是病毒或恶意软件,请不要安装它。 - Gilberto Torrezan
1@GilbertoTorrezan 那为什么这个病毒软件的回答获得了130多个赞?为什么创建一个可启动的Windows USB驱动器会删除您系统的引导程序? - Avinash Raj
1@AvinashRaj 是的,我盲目安装了那个软件,因为它有130多个赞,结果导致我的机器无法启动。这可能是几年前的一个有效答案,但现在只是一个定时炸弹。 - Gilberto Torrezan
1你需要提供你想要将操作系统安装到的USB驱动器的位置。我认为你给出了错误的路径。 - Avinash Raj
每次我试图使用WinUSB在我的U盘上安装Windows 8时,都会出现512错误,请问你能给予建议吗?我尝试过使用FAT32、NTFS格式化U盘,并设置引导标志,但仍然无法解决问题。 - Raphaël VO
2@ThoVo 请阅读这个答案:http://askubuntu.com/a/539803/269282 - Cornelius
在EFI加载的Ubuntu上安装WinUSB将卸载grub-efi软件包以解决冲突并安装grub-pc软件包。这可能发生在@gilbertotorrezan身上。请参考@luisloboborobia的评论。 - Cornelius
适用于我Ubuntu 14.04的工作 - JayKandari
我无法在“目标设备”部分看到我的USB驱动器。我尝试将其格式化为FAT32和ntfs。在任何一种格式下,它都没有显示出来。还有其他人遇到这个问题吗? - Core_Dumped
@anvarik写道:“安装了WinUSB,它说成功创建了USB。不过无法引导。”我遇到了同样的问题,但是在使用gParted为新创建的USB设备添加了引导标志后,问题解决了!所以我猜WinUSB可能跳过了那个步骤... - max
在网页上没有提到Windows 10。有人能在Windows 10上使用吗? - a06e
不适用于Ubuntu 15.10吗? - Bogdan M.
16.04版本的WinUSB怎么样? - Yuvaraj V
请查看编辑修订以安装WinUSB在较新的版本上。 - Avinash Raj
@shivaraj 或许这个问题和答案可以帮到您:http://askubuntu.com/q/795229/57576 - andrew.46
2无法在15.10、16.04和16.10版本中运行。 - rancho
1这个winUSB东西说: "这个PPA不支持xenial" 无法添加PPA:"这个PPA不支持xenial"。 - RicardoE
1没有发布文件,它说的,在Ubuntu 17.10上无法工作。 - Aurimas
9这篇文章已经过时了,WinUsb已经停止更新,但是有一个被良好维护的WoeUsb。同时请查看这些回答(需要更多赞):https://askubuntu.com/a/928874/256359 https://askubuntu.com/a/489556/256359 - davcri
在18.04版本的Bionic发行版上无法正常工作。 - Ferrmolina
最后一节中的命令是错误的,因为它们不会重新安装 grub-efi,而是将 grub-pc 的实例安装到 MBR。请改用 sudo apt-get install grub-efi - mook765
@mook765 真希望我早点看到这个……现在Ubuntu无法启动了 - unixandria
@mook765 别管那个了,什么都启动不了。 - unixandria
无法找到软件包winusb - Shahid Karimi

任何版本的Ubuntu

甚至其他Linux发行版,只要安装了GParted和GRUB。

使用以下命令在Ubuntu上安装GParted、GRUB、7z和NTFS:

sudo apt-get install gparted grub-pc-bin p7zip-full ntfs-3g

对于BIOS:MBR分区方案
  1. 使用GParted,将USB驱动器的分区表重写为msdos,将其格式化为NTFS,然后"管理标志"并添加boot标志。

  2. 在GParted中,右键点击USB分区并选择信息。将UUID复制到某个地方,因为您将需要它。

  3. 挂载Windows ISO或DVD,并将其所有文件复制到USB驱动器。

  4. 进入USB驱动器,如果名为boot的文件夹中有大写字符,请通过重命名将它们全部改为小写。

  5. 在USB驱动器上安装GRUB。

    在下面的命令中,用设备(例如/dev/sdb,而不是/dev/sdb1)替换/dev/sdX,用您挂载USB驱动器的文件夹(可能类似于/media/<username>/<UUID>)替换<USB_mount_folder>

    sudo grub-install --target=i386-pc --boot-directory="/<USB_mount_folder>/boot" /dev/sdX
    
  6. 在USB驱动器文件夹boot/grub/中创建一个名为grub.cfg的GRUB配置文件。

    将以下内容写入文件中,将<UUID_from_step_2>替换为您在步骤2中复制的UUID。

    echo "If you see this, you have successfully booted from USB :)"
    insmod ntfs
    insmod search_fs_uuid
    search --no-floppy --fs-uuid <UUID_from_step_2> --set root
    ntldr /bootmgr
    boot
    
  7. 卸载USB驱动器。

  8. 现在,重新启动计算机,并从USB驱动器启动。

对于UEFI:GPT分区方案 *

* 较旧的Windows版本/版本可能无法得到适当支持或根本不受支持。我建议阅读Microsoft UEFI固件页面。

使用GParted工具,将USB驱动器的分区表重写为GPT格式。 创建一个新的主分区,并将其格式化为FAT32格式。 挂载您的Windows ISO文件或DVD,并将其所有文件复制到USB驱动器中。 在USB驱动器的efi/boot/文件夹中查找。如果有一个名为bootx64.efi(bootia32.efi)的文件,则已经完成。USB是可启动的。跳到第7步。 否则,使用存档管理器(必须安装7z)打开sources/install.wim文件,并浏览到./1/Windows/Boot/EFI/。从这里提取bootmgfw.efi文件到某个位置,将其重命名为bootx64.efi(或者对于支持的32位操作系统,重命名为bootia32.efi),并将其放在USB的efi/boot/文件夹中。 如果您正在制作Windows 7 USB,将efi/microsoft/文件夹中的boot文件夹复制到efi文件夹中。 不要忘记卸载(安全移除)USB驱动器。 从BIOS中选择适当的EFI加载程序。

来源:我的博客文章可以在从Linux制作可启动的Windows USB中找到。

注意

当与兼容的目标操作系统正确使用时,这两种方法都可以让您获得一个可启动的USB驱动器。然而,这并不保证成功安装Windows。


在 grub.cfg 中必须更改什么才能从在U盘根分区上创建的文件夹中启动几个不同的Windows ISO? - EdiD
首先,@EdiD,这种方法并不是从Windows ISO启动,而是从ISO中提取的内容启动。如果你想实现你的目标,这个链接可能会有所帮助。 - Cornelius
我添加了一个评论问题,所以我完成了上述所有步骤,包括解压ISO文件,但是如果我想将几个不同的解压后的ISO文件放在不同的文件夹中怎么办? - EdiD
1+1 它起作用了。只是需要注意:在启动时,grub.cfg文件会输出回显,但之后会抛出“无效语法”错误。不管怎样,我目前正在使用USB安装Windows 7。GRUB版本:“grub-install(GRUB)2.02〜beta2-9ubuntu1.3”。 - Ifch0o1
@Ifch0o1 你有将UUID替换到grub.cfg文件中吗? - wim
1在MBR磁盘创建的第一步中,add the boot flag是什么意思? - Gui Imamura
2在GParted中右键点击分区,选择“管理标志”,然后勾选boot旁边的复选框。 - Cornelius
UEFI方法适用于最新的Thinkpad,并且效果非常好。对我来说,我配置了"Both"(即UEFI和Legacy)的UEFI启动方式。将UEFI设置为首选启动顺序。将USB启动配置为启动顺序中的第一项,然后让它运行。经过一天的尝试,花了7分钟来调整分区,我在圣诞节醒来后再次尝试,结果它确实起作用了。谢谢。 - James Andariese
按照这个教程操作,但是它把我带到了grub命令行界面。为了真正启动系统,我不得不执行以下步骤: > boot - Ivan Petrushev
8EFI方法是在Win10上执行此操作的方式。而且现在你可以安全地跳过第4至第6步。 - Ivan Anishchuk
2尝试了许多其他方法后,这是唯一对我有效的。谢谢。 - a06e
3我可以确认,在Windows 10中,使用UEFI/GPT方法可以省略第4至6步。 - josch
1这是最好的答案,因为它不依赖于像UNetbootin这样容易出问题的外部工具。 - Prahlad Yeri
1使用MBR方式时,需要确保USB存储设备上的第一个分区不会紧接着MBR开始,以便为grub2留出写入其引导代码的空间。第一个分区应该从63扇区或更高的位置开始。不确定是否总是自动处理此问题。 - David Tonhofer
1жӯӨеӨ–пјҢgrub2е‘Ҫд»ӨдёӯдҪҝз”Ёзҡ„ж–Ү件系з»ҹUUIDеҸҜд»ҘйҡҸж—¶йҖҡиҝҮblkid /dev/sdX1пјҲжҲ–иҖ…USBй—ӘеӯҳеҲҶеҢәзҡ„е…¶д»–и®ҫеӨҮпјүжқҘиҺ·еҸ–гҖӮ - David Tonhofer
最后,命令行迷当然会直接在命令行上使用 parted,而不需要图形界面。 - David Tonhofer
在Ubuntu 16.04上安装Windows 7时可正常运行。谢谢! - x__x
2如果你遇到任何错误,请查看他的博客文章(链接在他的答案底部)获取详细信息。某些错误情况的解决方案可能会很有帮助。 - Luke
可以确认在Windows 10上运行正常,支持GPT和MBR。 - wjandrea
你可以解释一下 USB_mount_folder 是什么意思吗? - Jonathan Picazo
1@JonathanMicaelPicazo <USB_mount_folder> 指的是 USB 驱动器挂载的文件夹。例如,在我的系统中,它是 /media/wja/Fit32 - wjandrea
使用MBR方法来安装Windows PE 10。 - Postadelmaga
有没有办法在不卸载引导系统的情况下安装grub-pc-bin? - teknopaul
将所有文件从挂载的Windows ISO或DVD复制到USB驱动器 - 这是什么意思?人们应该如何知道,并且他们应该做什么? - Pointy
尝试了Win10,UEFI方法从来没有成功过,不过现在正在安装MSDOS。无论如何,你只需要试一试,毕竟这是Windows,撞墙直到它破裂为止。 - elboulangero
2@pointy 显然你需要先挂载Windows ISO,然后只需复制粘贴。有什么不明白的?我已经编辑了帖子,试图让它更清晰明了。 - wjandrea
2UEFI方法对我不起作用:“cp: error writing './sources/install.wim': File too large” 所提议的文件系统似乎不适合。 - Andreas
@Andreas,你需要使用NTFS文件系统。这会使事情变得复杂。请参考https://www.onetransistor.eu/2015/09/uefi-ntfs-bootable-windows-usb-linux.html。 - Cornelius
谢谢回复,我很感激。然而,在尝试了三种都失败的方法之后,我得出了同样的结论;在Ubuntu中,这个简单的任务变得太复杂了。我将节省时间和精力,挖出一台Windows机器并在那里完成它。 - Andreas
这个答案不起作用,但是这个答案https://askubuntu.com/a/607988/613425起作用了,使用了这个答案中的gparted步骤,然后在那个答案中继续操作。 - Guerlando OCs
必须执行以下命令以安装 sudo apt-get install grub-pc-bin,用于传统 BIOS 步骤 5。 - borowis
我认为你应该在回答中包含这个回答目前不起作用的信息。我猜它在install.wim文件较小的时候可能有效,但现在确实不起作用了。FAT32不允许进行复制。这不是一个小细节。这意味着人们根本不应该尝试你的答案。 - Kvothe

使用WoeUSB(WinUSB分支)写入ISO文件

一些答案已经过时,因为WinUSB不再可用。但是有一个可用的分支叫做WoeUSB

Github链接: https://github.com/WoeUSB/WoeUSB

简而言之:

sudo woeusb --target-filesystem NTFS --device /path/to/your.iso /dev/sdX

安装

现在它不再卸载grub-efi!

☞ Ubuntu / Debian

sudo add-apt-repository universe # contains the p7zip-full dependency
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb

☞ 拱门
pacaur -S woeusb

☞ Fedora
dnf install -y WoeUSB

☞ OpenSUSE
zypper install WoeUSB

识别USB闪存驱动器(/dev/sdX路径)

图形界面方法

搜索一个名为disks的程序,或者如果你使用gnome桌面环境,可以通过执行gnome-disks来启动它。

命令行方法

有几个可用的命令来列出存储设备。你可以尝试其中之一:

sudo lsblk --scsi --paths 
sudo lshw -class disk -short

识别您的USB设备并查看其路径(例如/dev/sdX)。
写入ISO文件
安装完成后,使用以下命令将Windows ISO文件写入存储设备。在下面的命令中,请将/dev/sdX中的X替换为您的USB设备路径(请参考上述如何找到它)。
sudo woeusb --target-filesystem NTFS --device /path/to/your.iso /dev/sdX

如果安装映像文件大于4GB,就需要使用--target-filesystem NTFS标志,这适用于当前的Windows 10官方ISO文件。


3完美运行。在Arch Linux上使用pacaur -S woeusb-git命令。 - dvim
1WoeUSB非常完美!而且,与WinUSB不同的是,它不需要整个Webkit作为依赖(只编译Webkit在我的台式电脑上需要几个小时)。 - davcri
12在出现“错误:目标设备当前忙”的问题时,请使用“sudo umount /dev/sdb”(或相应的设备)。(“弹出”USB闪存是不起作用的,因为它不能完全消失,只需卸载分区即可。否则将出现错误:“探测初始化失败:未找到介质”) - Frank N
2还在 Fedora 28 上使用 Win10_1803_x64 iso 工作过。安装方法:dnf install -y WoeUSB - eddygeek
1@FrankNocke 我通过重新格式化USB驱动器解决了“未找到介质”的错误。 - Zook
在OpenSUSE上,只需使用zypper install WoeUSB命令即可安装WoeUSB(无需额外的软件源)。 - David Faure
19如果你看到一个错误提示 "源图像中的文件已超过FAT32文件系统的4GiB单个文件大小限制",你需要在命令行中添加 --tgt-fs ntfs - Adam Dingle
对我来说,sudo add-apt-repository universe 也是必要的。 - Basj
检查运行时参数:错误:目标媒体“/dev/sdb1”不是完整的存储设备!出现错误! - Jamil Noyda
@JamilNoyda /dev/sdb1只是你的/dev/sdb设备的一个分区。如果你真的只想写入分区,你必须使用--partition而不是--device - Eugene
如果有人在最新的Ubuntu 20.04上遇到问题:请点击这里查看解决方法:https://askubuntu.com/a/1243565/1087068 - Aftab Khan
使用woeusbgui对我来说非常顺利。我唯一遇到的问题是在列表中找不到我准备好的USB驱动器。调整应用程序窗口的大小解决了这个问题。默认情况下(在我的Kubuntu 16.04上),目标设备列表(参见关于WinUSB的答案)被简单地截断了。如果你在“目标设备:”下面看不到一个白色表单,请尝试最大化窗口或拖动它变大。 - m00am
获取最新的woeUSB(3.3.1,于2020年2月发布)在Ubuntu 20.04上。请访问https://github.com/slacka/WoeUSB/issues/311#issuecomment-628021588。由于软件应用程序中的版本3.3.0有问题,请使用最新版。 - bot19
3这似乎不再起作用了,但维护者创建了一个重写版本:https://github.com/WoeUSB/WoeUSB-ng,它还包括一个图形界面版本,非常方便。 - rubo77
@rubo77 "does not work"的确切意思是什么?woeusb-ng是一个独立的Python分支,它并不能替代CMD实用程序。 - Eugene
我尝试使用新的Windows ISO文件,但它卡住了30分钟,所以我停止了操作。在Windows系统中,我可以使用Rufus创建可启动的USB驱动器,使用同样的ISO文件。 - rubo77
1尝试运行sudo apt install woeusb会导致woeusb: 依赖于libwxgtk3.0-0v5(>= 3.0.4+dfsg),但无法安装的错误消息。我正在运行最新的Kubuntu 20.04 LTS版本。 - mathway
@mathway 我也遇到了这个问题。请从https://github.com/WoeUSB/WoeUSB下载并运行一个bash脚本(参见“Run from source”部分),然后安装所需的依赖项(请参阅wiki)。 - dizcza
在执行此操作之前,您可能需要安装以下软件:http://archive.ubuntu.com/ubuntu/pool/universe/w/wxwidgets3.0/libwxgtk3.0-0v5_3.0.4+dfsg-3_amd64.deb - Reza Bayat

WoeUSB是一个用于创建可引导的USB闪存驱动器的工具,用于安装Windows操作系统。它支持原生UEFI引导,适用于Windows 7及更高版本的镜像文件。WoeUSB是WinUSB项目的更新分支。
一些第三方安装程序包含大于4GB的Windows安装镜像(/sources/install.wim),这使得FAT32文件系统无法作为目标文件系统。WoeUSB 3.0.0及更高版本已添加了对NTFS文件系统的支持。
WoeUSB(GUI+CLI)安装方法:

Ubuntu 18.04及更高版本

  1. 访问WoeUSB GitHub页面,查找一个以woeusb-x.x.x.bash形式命名的文件(例如:woeusb-5.2.2.bash)。

  2. 下载woeusb-x.x.x.bash文件(例如:wget https://github.com/WoeUSB/WoeUSB/releases/download/v5.2.2/woeusb-5.2.2.bash,但最新版本可能与5.2.2不同)。

  3. 右键单击下载的woeusb-x.x.x.bash文件,选择“属性”,在“权限”选项卡下,在“允许作为程序执行文件”之前的复选框中打勾。

  4. 打开终端,并使用cd命令切换到包含woeusb-x.x.x.bash文件的目录。

  5. 安装wimtools。

    sudo apt install wimtools
    
  6. 插入USB闪存驱动器。如果有任何文件在USB闪存驱动器上,请将它们备份到其他设备上。打开磁盘应用程序并记录下稍后在第7步中要使用的设备。设备应该具有形式/dev/sdX,其中X是字母表中的一个字母,在第7步中,您必须将X替换为在磁盘中找到的正确字母。

  7. 运行woeusb-x.x.x.bash脚本。

    sudo ./woeusb-x.x.x.bash --target-filesystem NTFS --device Windows10.iso /dev/sdX # 适用于Windows 10

    或者

    sudo ./woeusb-x.x.x.bash --target-filesystem NTFS --device Windows11.iso /dev/sdX # 适用于Windows 11

    其他版本的Windows命令与上述两个命令的形式类似。

带有Windows安装程序的USB驱动器可以在UEFI模式或BIOS模式下启动。

  • UEFI模式(也可以启用安全启动)

  • BIOS模式(可能被称为CSM或Legacy模式)

Ubuntu 14.04-18.04

sudo add-apt-repository ppa:nilarimogard/webupd8 
sudo apt update  
sudo apt install woeusb

这将安装WoeUSB图形界面和WoeUSB命令行工具。WoeUSB支持UEFI和BIOS,适用于FAT32/NTFS/ExFAT USB闪存驱动器。
要在所有当前支持的Ubuntu版本中安装WoeUSB命令行工具快照包,请打开终端并输入:
sudo snap install --edge woe-usb  
sudo snap connect woe-usb:removable-media

要启动woe-usb snap软件包的命令行工具,请运行以下命令:
/snap/bin/woe-usb.woeusb

如果你遇到了“permission denied”错误,请在Ubuntu软件中的“woe-usb”屏幕上点击“Permissions”按钮,并按照下面的截图将权限选项从OFF切换到ON。

woe-usb Permissions

WoeUSB图形界面比WoeUSB命令行工具更易于使用。 单击“从磁盘映像(iso)”左侧的单选按钮,浏览到Windows .iso文件的位置,在“目标设备”下选择USB闪存驱动器,在打开Disks应用程序并检查Disks中的设备名称是否与WoeUSB中的目标设备匹配(它应该是类似于/dev/sdX的字母X),然后点击“安装”按钮将创建一个可引导的Windows安装介质放入USB闪存驱动器中。

enter image description here

从Ubuntu制作的Windows USB驱动重复失败
WoeUSB问题


1我不得不去买一个质量更好的USB闪存盘才能让它工作。虽然我想这并不是WinUSB特有的问题。 - Seth
$ sudo add-apt-repository ppa:nilarimogard/webupd8 无法添加 PPA:'ppa:~nilarimogard/ubuntu/webupd8'。 错误:'〜nilarimogard' 用户或团队不存在。 - Christophe Ferreboeuf
它在我的电脑上可以运行。你应该会看到一条消息,上面写着:“更多信息:https://launchpad.net/~nilarimogard/+archive/ubuntu/webupd8 按[回车]键继续或按ctrl-c取消添加”。当你看到这条消息后,请按下回车键继续。也许你有网络连接问题。 - karel
这确实没有提供太多关于如何做到 OP 所询问的事情的解释。按照这个答案中的步骤执行后,是否会有一个可启动的 USB? - Pointy
@ChangosMuertos dd对我没起作用,USB不知何故无法启动...它很容易使用,所以我怀疑我弄错了。 - Ashley
在Ubuntu 18.04上出现了错误信息"wipefs: error: /dev/sdg: probing initialization failed: No medium found",无法正常工作。 - Lothar
@Lothar 你能打开磁盘应用程序,检查一下/dev/sdg是否是Windows安装USB闪存驱动器的正确设备名称吗? - karel
如果有人使用mintstick,会发生什么情况? - Royi
我从未使用过它,对它一无所知。 - karel
@karel 这一部分的意思是我需要修复制作磁盘的机器吗?在EFI加载的Ubuntu上安装WinUSB将卸载grub-efi软件包以安装grub-pc软件包,因此在重新启动之前,请运行以下命令来修复grub - Chris
只有 grub-pc 软件包适用于 BIOS 引导,所以如果我处于 UEFI 模式下,我需要重新安装 grub-efi。 - unixandria
@ChangosMuertos dd 导致无法启动的 USB 驱动器。 - unixandria
非常感谢,从Xubuntu 18.04成功地制作了一个Windows 7 USB。 - Indacochea Wachín
对我来说,在18.04上也需要执行sudo add-apt-repository universe命令。 - Basj
@karel,我无法在20.04 LTS上安装woeusb,但是通过mkusb 12.5.6和mkusb-plug提供的工具mkusb-tow可以使用。请参考这个关于mkusb的链接这个关于woeusb和解决方法的链接。-- 我注意到你建议使用snap。我没有尝试过,但我了解你已经测试过它可以正常工作。 - sudodus
我还没有20.04版本,直到第一个点发布之前。 - karel
+1 对你的回答。我仍然在我的主操作系统中避免使用快照,但我会在一个Ubuntu 20.04 LTS的测试系统中测试这个快照 :-) - sudodus
评论:“在已加载EFI的Ubuntu上安装WoeUSB将卸载grub-efi软件包以安装grub-pc软件包,因此在重新启动之前,请运行以下命令修复grub。”我认为这很糟糕。我通过从压缩的映像文件克隆引导加载程序来避免这个问题。 - sudodus
评论2:我在 Lubuntu 20.04 LTS 上测试了这个快照。它按照您提供的命令行进行安装(没有任何投诉),但对我来说无效。我尝试了与之前使用的命令行相匹配的命令,但在尝试挂载时出现了几个 "权限被拒绝" 的错误。我建议您扩展您的答案,包括使其正常工作所需的所有命令。 - 顺便说一下,我的命令是 sudo /snap/bin/woe-usb.woeusb --target-filesystem NTFS --device Windows10_InsiderPreview_Client_x64_sv-se_18363.iso /dev/sdb - sudodus
我已经在答案的末尾提供了解决“权限被拒绝”问题的链接。链接和截图都在这个答案中:https://askubuntu.com/a/1244405/。有一个权限窗口,其中有6个开关选项。尝试将“可移动存储设备上的读写文件”滑块从关闭状态切换到打开状态。 - karel
虽然有所改善,但仍然无法正常工作。或许在Lubuntu中缺少一些基本的东西。我将尝试在标准的Ubuntu上进行测试... - sudodus
你好,@karel,我今天再次尝试了在已安装且已更新至Ubuntu 20.04 LTS上使用snap,但是与Lubuntu中遇到的问题相同:关于挂载的投诉:“权限被拒绝”。请你自行尝试(也许你可以创建一个持久的实时系统进行测试),并为不知道如何管理snap的我们添加必要的调整。 - sudodus

当前的UNetbootin引导链与UEFI和预装了Windows 8的计算机不兼容。你可以使用dd代替,但在操作时要小心。
sudo dd if=/path/to/iso/windows.iso of=/dev/sdX bs=4M; sync
  • 用你想使用的驱动器(在我的情况下是sdg)替换sdX
  • 这需要你的主板能够从CDROM-USB启动。

如果你仍然想使用UNetbootin,你需要以下2(3)个东西:

  1. Unetbootin
  2. Gparted
  3. 安装上述所有内容、Windows ISO镜像和一个容量超过4GB的USB闪存驱动器的互联网访问。

所以,首先备份你的USB闪存驱动器的所有内容。完成后,安装gparted和unetbootin:

sudo apt-get install gparted unetbootin

现在在Dash中查找gparted或在终端中键入gparted。从右侧下拉列表中选择您的USB驱动器。在我的情况下,它是/dev/sdg,您的可能不同。使用Gparted删除所有分区并创建一个单独的大型FAT32分区。
完成后,拔出并插入您的USB驱动器,以便它被挂载(您也可以从同一GParted中挂载它),现在再次执行Unetbootin,您可以在Dash中查找或在终端中输入。选择要使用ISO,查找ISO路径。
选中复选框以查看所有设备,在此处必须选择与Gparted中选择的完全相同的设备,否则您的数据可能会丢失。选择继续。等待片刻,完成。重新启动计算机并选择从USB启动。

你是不是漏掉了count=1或者其他在dd这一行的参数?这样你只会用ISO数据覆盖整个USB驱动器,导致甚至没有分区被映射。 - gcb
@gcb 其实,这就是它的本意。我最初说的是要备份你的东西。 - Braiam
我做了那个,结果得到了一个带有引导内容的UFI(?)分区,但没有其他东西。最后我找到了一台DVD驱动器,将镜像刻录到那里。我觉得你的想法在ISO已经适用于SD/HDD格式时是可行的,但当ISO处于iso9660格式时,就不起作用了。至少对我从安装光盘制作的镜像来说是这样。 - gcb
1@gcb 奇怪,是一个Windows 8吗? - Braiam
1好的,不对。那是Windows 7专业版。我会检查一下Win8,看看那张光盘是否有SD/HDD格式。 - gcb
2我更喜欢你的答案(dd变体)而不是被接受的答案,因为它不需要添加另一个存储库,甚至根本不需要安装任何软件(不需要使用unetbootin,只需使用dd)。 - doublehelix
8dd对我来说不起作用,电脑根本无法从U盘启动。如果你想在一个ntfs格式化的U盘上使用UNetbootin,你必须从命令行启动它:sudo unetbootin installtype=USB targetdrive=/dev/sdb1(sdb1是我的U盘的ntfs格式化分区,你的可能不同)。 - erik
7根据serverfault上的这个答案,dd方法经常失败,因为它要求你的主板能够引导USB-CDROM而不仅仅是USB-HDD - erik
通常情况下,我使用dd命令来处理Linux ISO文件都很顺利。然而,在处理Windows ISO文件时,至少根据我的经验,它几乎总是失败的。 - Hitechcomputergeek
UNetbootin已经解决了那些问题吗? - Royi
@Royi 不对 https://github.com/unetbootin/unetbootin/issues/99 - Braiam
现在你可以在dd命令中添加status=progress参数。 - Pablo Bianchi

在非UEFI机器上,我们可以使用GRUB2使USB闪存可启动。 然后,我们可以在GRUB2中使用'ntldr'命令从USB启动Windows。
  • 在USB驱动器的目标分区上启用引导标志。可以使用名为"GParted"的工具轻松完成此操作。它是一个用于驱动器分区的图形界面工具。
  • 如果安装镜像是ISO文件,请挂载并访问文件。
  • 将所有文件复制到USB驱动器的根目录。
  • 将GRUB安装到USB驱动器:

    sudo grub-install --boot-directory="/media/user/MyUSBDrive/boot" /dev/sdX
    
  • 通过将以下文件放置在USB驱动器的"/boot/grub/grub.cfg"位置来配置GRUB以引导Windows:

    set menu_color_normal=white/black
    set menu_color_highlight=black/light-gray
    menuentry 'Install Windows 8' {
     ntldr /bootmgr
    }
    
请在我的博客上查看完整答案 从Linux创建可启动的Windows USB

2无需安装。最简单的步骤。之前应该尝试过这个答案。 - Anurag
需要以超级用户身份运行 grub-install 命令。只是缺少信息。 - Anurag
4这就是终极答案! - Danial Behzadi
3这与答案“任何Ubuntu版本... MBR分区方案”相同,但缺少了--target=i386-pc选项用于grub-install命令,并且没有使用grub2的search命令来查找要引导的“root”。也许这不是必需的... - David Tonhofer
我认为还需要其他的安装方式,我没有i386-pc作为选项。 - teknopaul
我需要安装grub-pc-bin才能使其正常工作。 - teknopaul

一个简单的“自己动手”方法
在以下链接中描述了一个相当简单的“自己动手”方法。您可以创建适用于UEFI模式和BIOS模式的Windows安装驱动器。

这个“自己动手”方法适用于以下情况:

  • 如果你有一个包含文件install.wim且大小大于4 GiB的Windows iso文件,或者
  • 如果你不喜欢使用PPA,或者
  • 如果你想要“自己动手”并了解细节

mkusb版本12.5.6及更新版本

这个“自己动手”方法已经在mkusb-tow中实现,并可通过mkusb版本12.5.6(mkusb-dus)和mkusb-plug获得。

你可以通过以下命令从mkusb PPA获取/更新这个新版本的mkusb:

sudo add-apt-repository universe  # this line only for standard Ubuntu

sudo add-apt-repository ppa:mkusb/ppa
sudo apt-get update
sudo apt-get install mkusb mkusb-plug

sudo apt-get install usb-pack-efi  # only for persistent live drives

mkusb-nox 和 mkusb 版本 12(32 位系统的旧方法)

这个 'mkusb' 方法适合您:

  • 如果您正在运行一个 32 位操作系统,而其他方法在提取文件时存在截断问题
  • 如果您想为 Windows 7 或 8 创建引导驱动器
  • 如果您想为[较旧的] Windows 10 版本创建引导驱动器,其中 iso 文件中没有超过 4 GiB 的文件。
找到一个可以在Linux上创建启动驱动器(USB闪存,存储卡等)的工具并不容易,所以我将这个功能添加到了mkusb-nox中,并随后创建了带有此功能的mkusb版本12。它适用于所有当前版本的Ubuntu(以及Ubuntu的各种变体:Kubuntu,Lubuntu... Xubuntu),还适用于Debian 8-10。创建的启动驱动器可以在UEFI和BIOS模式下引导64位Windows系统。 dus with guidus alias mkusb version 12: 在此输入图像描述 在此输入图像描述

2Mkusb-nox是我找到的最佳解决方案,尤其是因为在这个页面上提到的Winusb已经过时,该程序不再受支持,并且在16.04版本中无法直接使用。继续保持良好的工作,Sudodus。 - C.S.Cameron
1对我来说没问题。 - Alberto Salvia Novella
感谢您的工作。从Ubuntu 16.04开始,我在进程结束时遇到一个错误:Bootloader: grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh不存在。请指定--target或--directory。 - Pointy
然而,这个USB闪存盘似乎是可以工作的(我正在将Windows 10安装在与制作该USB闪存盘的机器不同的一台机器上)。 - Pointy
@Pointy,你是在已安装的UEFI模式下运行mkusb吗?在这种情况下存在一个问题:除非删除“竞争”的软件包grub-efi,否则无法安装程序包grub-pc。可以通过在带有mkusb的[持久化]live Ubuntu或基于Ubuntu的系统中解决此问题。这样的系统可以在BIOS和UEFI模式下工作,并且可以与软件包grub-efi一起安装grub-pc。请参考此链接,https://help.ubuntu.com/community/mkusb/persistent#Compressed_image_file_with_a_persistent_live_system - sudodus
@sudodus 是的,我建立USB驱动器的系统是UEFI;我怀疑这可能是问题所在。然而,正如我所说,USB驱动器似乎工作正常;虽然我还没有确认它是否完成,但它肯定能够在目标笔记本电脑上启动并至少开始Windows安装。 - Pointy
@Pointy,如果问题是我想的那样,关键点是以BIOS模式启动。流程的其余部分不会受到影响。因此,我认为你的引导驱动器将能够在那台计算机上成功完成整个工作。但无论如何,请告诉我们最终结果 :-) - sudodus
  1. 通过[mkusb PPA] ppa:mkusb/ppa 可以安装最新改进版的mkusb,该版本可以通过答案中的第二个编辑选项进行安装。它还可以在运行于UEFI模式的已安装系统中安装BIOS模式;
  2. 还有一种相当简单的“自己动手”方法,具备创建Windows安装驱动器的同样功能。请参阅答案末尾的“编辑”部分。
- sudodus


1winusb for saucy现在可以在ppa:colingille/freshlight存储库中获取。 - Prasad RD
链接上次更新时间为2015年08月23日。 - C.S.Cameron

  1. 安装VirtualBox和在那里找到的VirtualBox扩展包。

  2. 下载你要安装的Windows镜像文件

  3. 创建一个Windows虚拟机,并使用你下载的Windows ISO文件进行设置。

  4. 插入你的USB驱动器,并在虚拟机中使用设备/USB菜单使其暴露给虚拟机。

  5. 在虚拟机中运行微软的Media Creation Tool(只有在Windows中访问它时,你才会被引导到正确的页面)。使用此工具创建可启动的Windows USB。

这种方法的优点是它仅依赖于微软的工具,可以为您进行配置。最新的Windows镜像包含一个超过FAT32大小限制的文件,这使得手动创建可引导的USB驱动器非常麻烦。我使用WoeUSB创建的驱动器在我的Dell XPS的UEFI中无法识别。

我做了这个,但是使用了Rufus(https://rufus.ie/)工具。我发现其他的解决方案非常繁琐,不直观。 - Lucas Aimaretto
好的解决方案值得一提。同时,使用Virtualbox也能让Ubuntu用户学到一些有用的知识。 - Wadih M.
除了使用VirtualBox,还可以在使用QEMU/KVM和virt-manager时进行操作,其他虚拟化工具也可能适用。 - IlmarsL

你可以使用WinUSB来在Ubuntu上安装WinUSB,请按照以下说明进行操作。
好的,如果你使用的是Ubuntu 13.10、13.04、12.10或者12.04版本,请在终端中运行以下命令:
sudo add-apt-repository ppa:colingille/freshlight
sudo apt-get update
sudo apt-get install winusb

如果您使用的是Ubuntu 14.04,则在终端中运行以下命令:

sudo add-apt-repository ppa:colingille/freshlight
sudo sh -c "sed -i 's/trusty/saucy/g' /etc/apt/sources.list.d/colingille-freshlight-trusty.list"
sudo apt-get update
sudo apt-get install winusb

WinUSB带有简单的图形用户界面和最少的选项,以下是如何使用WinUSB从Ubuntu制作可启动的Windows USB的方法。您可以使用任何Windows ISO,例如XP、Windows 7、Windows 8、Windows 8.1或其他版本。
  1. 插入闪存驱动器并获取您的Windows ISO(我使用的是Windows 10技术预览版),或者插入Windows光盘
  2. 启动WinUSB,其他什么都不需要解释。
  3. 选择源,可以是ISO文件或CD驱动器
  4. 选择目标(USB)设备。如果它没有出现,请点击刷新并确保已挂载。
  5. 点击“安装”并输入密码(需要挂载设备和直接写入驱动器)
这就是您创建可启动的Windows USB驱动器所需做的一切。
来源:在Ubuntu中安装和使用WinUSB的方法

1您所尝试访问的网络应用当前已停止运行,不接受任何请求。请尝试重新加载页面或稍后再次访问。 - C.S.Cameron