如何从 Linux 创建可启动的 Windows 10 USB 驱动器?
请注意:
- WinUSB 不适用于 Windows 10。
- UNetbootin 也不起作用。
dd
方法也没有起到作用。
除此之外,我还尝试创建一个 GPT 分区表和一个 ef00 类型分区,并将其格式化为 fat32,然后将所有 ISO 内容复制到该分区。启动正常,但当我开始安装时,系统会显示媒体对话框提示。
更新
再试一次:
- 创建了 GPT
- 在 50 MB 的驱动器末尾创建了一个 FAT32
- 在剩余空间中创建 NTFS
- 将 UEFI:NTFS 放在 FAT32 上
- 将 ISO 内容复制到 NTFS
安装开始正常,但在进度开始时显示错误 0xc0000005(如果我没记错的话)。
答案1
你做的很好。使用 fat32 制作 gpt 表并将 iso 中的所有数据复制到该表上。但你还需要使用 parted 等在此分区上设置标志“msftdata”(而不是“boot”)。
答案2
Windows 10 2018 年 10 月在任何 Linux 发行版上发布 UEFI 可启动 USB 驱动器。
请注意,自 Windows 10 2018 年 10 月发布以来,安装文件sources/install.wim
大于最大FAT32
文件大小,因此我们将把 USB 驱动器格式化为NTFS
。Windows 安装程序也无法使用 EFI 分区(代码ef00
),因此我们将使用Microsoft basic data
分区类型(代码0700
)。
变体 A(适用于支持 NTFS 的 PC)
/dev/sdc
创建名称为( 的USB 驱动器的步骤用您的设备名称替换所有命令!):
- 将 USB 驱动器插入计算机并确保它已卸载。某些发行版喜欢自动安装 USB 驱动器,因此请确保卸载它们。可以使用 找到已安装的分区
mount -l | grep '/dev/sdc'
,然后使用 卸载sudo umount /dev/sdcX
(其中X
是分区号)。 - 使用 打开 USB 块设备
gdisk /dev/sdc
,将其配置为GPT
并创建Microsoft basic data
分区(代码0700
),然后写入更改并退出(下一步将破坏 USB 驱动器中的分区表!!!)。
sudo gdisk /dev/sdc
o
> This option deletes all partitions and creates a new protective MBR.
> Proceed? (Y/N): y
n
> Partition number ... > hit Enter
> First sector ... : > hit Enter
> Last sector ... : > hit Enter
> Current type is 'Linux filesystem'
> Hex code or GUID (L to show codes, Enter = 8300): 0700
p
> Should print something like:
> Disk /dev/sdc: 15646720 sectors, 7.5 GiB
> Model: DataTraveler 160
> Sector size (logical/physical): 512/512 bytes
> Disk identifier (GUID): ...
> Partition table holds up to 128 entries
> Main partition table begins at sector 2 and ends at sector 33
> First usable sector is 34, last usable sector is 15646686
> Partitions will be aligned on 2048-sector boundaries
> Total free space is 2014 sectors (1007.0 KiB)
> Number Start (sector) End (sector) Size Code Name
> 1 2048 15646686 7.5 GiB 0700 Microsoft basic data
w
> Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!
> Do you want to proceed? (Y/N): y
q
- 将新分区格式化为 NTFS(感谢@Alex 的
-Q
想法):
sudo mkfs.ntfs -Q /dev/sdc1
- 将新的 USB 分区挂载到主目录中的临时目录:
mkdir ~/tmp-win10-usb-drive
sudo mount /dev/sdc1 ~/tmp-win10-usb-drive
- 下载 Windows 安装 ISO,在您的主目录中创建新的临时目录并将其安装在那里:
mkdir ~/tmp-win10-iso-mnt
sudo mount Win10_1809Oct_English_x64.iso ~/tmp-win10-iso-mnt
- 将所有文件从已安装的 ISO 复制到 USB 驱动器(您可以使用它
rsync
来查看进度):
sudo cp -rT ~/tmp-win10-iso-mnt/ ~/tmp-win10-usb-drive/
- 卸载 Windows ISO 和 USB 驱动器并删除临时目录:
sudo umount ~/tmp-win10-iso-mnt/ ~/tmp-win10-usb-drive/
rmdir ~/tmp-win10-iso-mnt/ ~/tmp-win10-usb-drive/
- 将 USB 驱动器插入新计算机并从中启动。
变体 B(适用于不支持 NTFS 的 PC)
/dev/sdc
创建名称为( 的USB 驱动器的步骤用您的设备名称替换所有命令!):
- 将 USB 驱动器插入计算机并确保它已卸载。某些发行版喜欢自动安装 USB 驱动器,因此请确保卸载它们。可以使用 找到已安装的分区
mount -l | grep '/dev/sdc'
,然后使用 卸载sudo umount /dev/sdcX
(其中X
是分区号)。 - 使用以下方式打开 USB 块设备
gdisk /dev/sdc
- 将其配置为
GPT
- 创建第一个大小为 1GB 且类型为
Microsoft basic data
(代码0700
)的分区。 - 创建其余大小和类型
Microsoft basic data
(代码0700
)的第二个分区。 - 写入更改并退出(下一步将破坏 USB 驱动器中的分区表!!!)。
sudo gdisk /dev/sdc
> o
> This option deletes all partitions and creates a new protective MBR.
> Proceed? (Y/N): y
> n
> Partition Number: Enter
> First sector: Enter
> Last sector: 1G
> Type: 0700
> n
> Partition Number: Enter
> First sector: Enter
> Last sector: Enter
> Type: 0700
> p
# Should print something like:
> Disk /dev/sdc: 30031250 sectors, 14.3 GiB
> Model: Ultra USB 3.0
> Sector size (logical/physical): 512/512 bytes
> Disk identifier (GUID): C657C0AF-3FE2-4152-8BF1-CE3CCA9F3541
> Partition table holds up to 128 entries
> Main partition table begins at sector 2 and ends at sector 33
> First usable sector is 34, last usable sector is 30031216
> Partitions will be aligned on 2048-sector boundaries
> Total free space is 4061 sectors (2.0 MiB)
> Number Start (sector) End (sector) Size Code Name
> 1 2048 2048000 999.0 MiB 0700 Microsoft basic data
> 2 2050048 30031216 13.3 GiB 0700 Microsoft basic data
w
> Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!
> Do you want to proceed? (Y/N): y
q
- 将第一个分区格式化为 FAT32,将第二个分区格式化为 NTFS:
sudo mkfs.fat -F32 /dev/sdc1
sudo mkfs.ntfs -Q /dev/sdc2
- 将新的 USB 分区挂载到家中的临时目录:
mkdir ~/tmp-win10-fat-usb-drive
mkdir ~/tmp-win10-ntfs-usb-drive
sudo mount /dev/sdc1 ~/tmp-win10-fat-usb-drive
sudo mount /dev/sdc2 ~/tmp-win10-ntfs-usb-drive
- 下载 Windows 安装 ISO,在您的主目录中创建新的临时目录并将其安装在那里:
mkdir ~/tmp-win10-iso-mnt
sudo mount Win10_1809Oct_English_x64.iso ~/tmp-win10-iso-mnt
- 将以下文件从已安装的 ISO 复制到 FAT32 格式的 USB 驱动器(基本上复制除
sources/
包含之外的所有内容sources/boot.wim
):
sudo cp ~/tmp-win10-iso-mnt/* ~/tmp-win10-fat-usb-drive/
sudo cp -r ~/tmp-win10-iso-mnt/boot ~/tmp-win10-fat-usb-drive/
sudo cp -r ~/tmp-win10-iso-mnt/efi ~/tmp-win10-fat-usb-drive/
sudo cp -r ~/tmp-win10-iso-mnt/support ~/tmp-win10-fat-usb-drive/
sudo mkdir ~/tmp-win10-iso-mnt/sources ~/tmp-win10-fat-usb-drive/
sudo cp ~/tmp-win10-iso-mnt/sources/boot.wim ~/tmp-win10-fat-usb-drive/sources
- 将所有内容从已安装的 ISO 复制到 NTFS 格式的 USB 驱动器:
sudo cp -rT ~/tmp-win10-iso-mnt/ ~/tmp-win10-ntfs-usb-drive/
- 卸载 Windows ISO 和两个 USB 分区并删除临时目录:
sudo umount ~/tmp-win10-iso-mnt/ ~/tmp-win10-usb-fat-drive/ ~/tmp-win10-usb-ntfs-drive/
rmdir ~/tmp-win10-iso-mnt/ ~/tmp-win10-usb-drive/
- 将 USB 驱动器插入新计算机并从中启动。
答案3
我用过woeusb在 Ubuntu 上,使用以下方式(警告:这将覆盖您的整个分区表!):
sudo woeusb --tgt-fs NTFS --device Win10_1809Oct_Hungarian_x64.iso /dev/sdc
如果您遇到此错误信息:
擦除所有签名后仍可检测到分区,这表明驱动器可能因使用寿命结束而被锁定为只读模式。
执行以下操作:sudo fdisk /dev/sdc
,d
然后选择,最后w
。
(来源:https://github.com/slacka/WoeUSB/issues/219)此后,再次尝试运行上述命令。
无论如何,用这种方法woeusb创建了一个通用运输具有两个分区的分区表:
partition file system label size flags
----------------------------------------------------------------
/dev/sdc1 nfts Windows USB 57.00 GiB
/dev/sdc2 fat16 UEFI_NTFS 512.00 KiB lba
unallocated 4.00 MiB
最后,我所要做的就是把引导使用 gparted 标记 /dev/sdc2 分区(与 lba 一起)。
这样,我就可以成功以 UEFI 模式启动并从我的 USB 记忆棒安装 Windows 10。
答案4
EFI 分区必须是 Fat32。它符合 EFI 规范。如果将安装程序文件放在 NTFS 分区上,您的系统将永远无法启动。
您甚至不需要任何特殊软件。安装程序使用 GPT / FAT32,从 iso 中提取所有文件(我假设您使用媒体创建工具拥有最新的 iso,因为它包含 11 月更新),然后使用 gparted 设置“启动标志”。然后,它将以 EFI 模式启动到安装程序,假设您在计算机启动时从启动选项中选择 EFI USB。
平发器。