如何在 Debian 上手动创建 Windows U 盘?

如何在 Debian 上手动创建 Windows U 盘?

我想手动创建一个 Windows 闪存盘来改进我的项目。我使用以下命令来创建:

sudo wipefs --all /dev/sdb
sudo parted --script /dev/sdb mklabel msdos
sudo parted mkpart primary ntfs 4MB 8000MB
sudo mkfs.ntfs --quick /dev/sdb1
sudo parted --script /dev/sdb set 1 boot on
sudo mount windows7.iso /mnt
sudo mount /dev/sdb1 /media
sudo cp -r /mnt/* /media
sudo umount /mnt
sudo umount /media

然后我从 BIOS 关闭了快速启动和安全启动选项,并尝试从闪存启动。但是没有成功。你能解释一下原因吗?我该如何创建它?注意:没有 woeusb。

答案1

缺失的部分取决于您打算使用哪种启动模式。

传统 BIOS 模式

BIOS 本身并不知道可引导分区 - 它只做一件事:从 MBR 加载引导扇区并运行它。寻找可引导分区是磁盘自己的引导扇区的工作。

为了使其工作,您应该使用以下命令将 Windows MBR 写入磁盘ms-sys

ms-sys --mbr7 /dev/sdb

(Syslinux MBR 也可以作为替代方案,因为它做同样的事情:读取分区表并跳转到第一个可启动分区。)

接下来,一旦 MBR 第一阶段引导加载程序找到了可引导分区,那个分区也需要有自己的引导扇区 (VBR),它将知道如何找到可引导文件 (特别是 BOOTMGR)。我不太确定 mkfs.ntfs 是否写入了正确的引导扇区,但 ms-sys 也可以做到:

ms-sys --ntfs /dev/sdb1

UEFI 模式

UEFI 不使用引导扇区,也不搜索“可引导”标志,因此设置它毫无意义。相反,固件会直接搜索包含可识别文件系统的分区。

大多数 UEFI 系统仅支持 FAT,无法识别 NTFS。有解决方法(例如 Rufus 附带的 UEFI:NTFS),但您仍然需要从 FAT32 分区开始 - 因此不妨将其用于所有操作。

mkfs.fat -F32 /dev/sdb1

如果您在 Windows 10 上执行此操作,则会遇到文件install.wim对于 FAT32 来说太大的问题。可以使用wimsplit生成部分 .swm 文件来解决此问题,但无论如何,这可能不会成为 Windows 7 的问题。

答案2

您所做的是在 USB 驱动器上创建一个 NTFS 分区,将 Windows 7 ISO 中的所有文件复制到该分区,然后尝试启动它。正如您所发现的,这不起作用。以下是几个原因:

  • 如果您使用的是 UEFI(大多数现代计算机都使用这种文件系统),固件将只能理解几种类型的文件系统。需要 FAT,通常也支持 ISO9660 或 UDF 以从光学介质启动。NTFS 要复杂得多,通常不受支持,因此将所有文件放在 NTFS 文件系统上并不能使其可启动。
  • 此外,UEFI 不支持 DOS (MBR) 分区表。您需要使用 GPT 分区表,并且可引导区域必须具有特定的分区类型(EFI 系统分区)才能引导。如果没有,它将无法引导。
  • 如果您使用的是 BIOS,那么引导加载程序通常需要知道数据在磁盘上的哪个位置才能正确启动它。这些偏移量将会改变,因此这也行不通。您需要运行某种引导加载程序才能使其可启动。

本文解释了如何做到这一点,这听起来好像你只需要使用 FAT 文件系统而不是 NTFS 文件系统,并且分区表需要是具有正确分区类型的 GPT。但是,它是针对 Windows 10 的,因此这可能适用于也可能不适用于 Windows 7 ISO。但是,由于 Windows 7 没有收到安全更新,因此没有理由安装它。

相关内容