如何从 Linux 制作 Windows 7 USB 闪存安装介质?

Ian*_*ing 108 linux windows-7 usb

我有:

  • Windows 7 安装介质的ISO 映像
  • 4 GB USB 闪存驱动器
  • 没有 DVD 驱动器
  • 已安装 Linux

小智 182

好的,在尝试了这里提到的所有方法都失败后,我终于让它起作用了。基本上,缺少的步骤是将正确的引导扇区写入 USB 记忆棒,这可以从 Linux 使用ms-syslilo -M. 这适用于 Windows 7 零售版。

这是完整的纲要:

安装 ms-sys - 如果它不在您的存储库中,请在此处获取。或者,确保 lilo 已安装(但不要在本地机器上运行 liloconfig 步骤,例如,如果那里安装了 Grub!)

检查分配给您的 USB 媒体的设备 - 这里我们假设它是/dev/sdb。删除所有分区,创建一个占用所有空间的新分区,将类型设置为NTFS(7),并记住将其设置为可引导:

# cfdisk /dev/sdb     fdisk /dev/sdb (分区类型 7可引导标志)

创建一个 NTFS 文件系统:

# mkfs.ntfs -f /dev/sdb1

在 U 盘上写入 Windows 7 MBR(也适用于 Windows 8),这里有多个选项:

  1. # ms-sys -7 /dev/sdb
  2. 或(例如在较新的 Ubuntu 安装上)sudo lilo -M /dev/sdb mbr信息
  3. 或者(如果安装了 syslinux),你可以运行 sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb

挂载 ISO 和 USB 媒体:

# mount -o loop win7.iso /mnt/iso
# 挂载 /dev/sdb1 /mnt/usb

复制所有文件:

# cp -r /mnt/iso/* /mnt/usb/   ...或使用系统的标准 GUI 文件浏览器

调用sync以确保所有文件都已写入。

打开gparted,选择U盘,右击文件系统,然后点击“Manage Flags”。选中引导复选框,然后关闭。

......你就完成了。

毕竟,您可能想要备份您的 USB 媒体以供进一步安装并删除 ISO 文件...只需使用 dd: # dd if=/dev/sdb of=win7.img

请注意,这会复制整个设备!— 通常(远)比复制到它的文件大。所以我建议

# dd count=[(size of the ISO file in MB plus some extra MB for boot block) divided by default dd blocksize] if=/dev/sdb of=win7.img
Run Code Online (Sandbox Code Playgroud)

因此,例如使用 8 M 额外字节:

# dd count=$(((`stat -c '%s' win7.iso` + 8*1024*1024) / 512)) if=/dev/sdb of=win7.img status=progress
Run Code Online (Sandbox Code Playgroud)

与往常一样,在使用dd.

上面介绍的创建可启动 USB 的方法也适用于 Win10 安装程序 iso。我尝试运行 Ubuntu 16.04,将 Win10_1703_SingleLang_English_x64.iso(大小为 4,241,291,264 字节)复制到 8 GB USB 记忆棒上 - 仅在非 UEFI [非安全] 启动中。执行后 dd 报告:8300156+0 记录中的 8300156+0 记录已复制 4249679872 字节(4.2 GB,4.0 GiB),412.807 s,10.3 MB/s

下次您想将 Windows 7 安装程序放到 USB 上时,请反转 if/of。

  • 它适用于类型 7 (5认同)
  • 复制后调用`sync`以确保所有文件都被写入 (4认同)
  • 请注意:如果您的 ntfs 文件系统在您以 root 身份写入时出现奇怪的权限错误,请确保您已安装 ntfs-3g。 (3认同)
  • 直到我在“ms-sys -7 /dev/sdb”之前调用“ms-sys -n /dev/sdb1”(所有这些都在复制文件之后),才对我有用。请参阅 https://wycd.net/posts/2015-03-10-creating-a-bootable-windows-10-usb-drive-on-linux.html (3认同)

Tru*_*ity 13

如果您的 PC 支持 UEFI,并且通过扩展支持 GPT 磁盘,您可以使用 dd 完成此操作。

打开一个终端,你需要找到你的随身碟是什么设备。如果您安装了驱动器,您可以通过键入“mount”并查看它的条目来找到设备的名称。类似于以下内容:

/dev/sdb1 on /media/USBDISK type vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,/dev/sdb 的第一部分安装在 /media/USBDISK。打开 root shell 并卸载驱动器。

umount /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

转到您的 ISO 存储在 root shell 中的目录并键入以下内容:(将 windows7.iso 替换为调用的任何 ISO,并将 /dev/sdb 替换为您的 U 盘的设备 ID)。

dd if=windows7.iso of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

如果您的主板支持从 Pendrive 启动,它应该能够从它启动。这将在 Pendrive 上安装安装程序,而不是操作系统本身。

  • 对我不起作用。 (22认同)
  • 此解决方案缺少 MBR 安装步骤,并且通常不会起作用,除非它已经神奇地存在。@Gunthers 的解决方案已经完成。 (12认同)
  • 对我也不起作用,我的机器确实支持 USB 启动就好了。也许这种方法可以在可以启动 DVD 式 USB 存储的机器上工作,但大多数 BIOS 假定 USB 上的 HDD 式布局(意味着 512 字节 MBR,其中包含启动代码)。值得一提的是:Fedora CD/DVD 映像,与 W7 不同,实际上有这样的 MBR,上面有引导代码和分区表,使它们也适用于 HDD/USB 引导。 (11认同)
  • 这确实需要您的主板能够启动 USB-CDROM 而不仅仅是 USB-HDD (9认同)

小智 5

PCambell 的建议很好,但您还需要清除 MBR,Linux 等效项如下

我试过了,它奏效了(我不确定为什么 dd 方法失​​败,但似乎分区必须是 ntfs?):

  • 找出哪个 /dev/device 是您的 USB 闪存驱动器并卸载它
  • 清除MBR:dd if=/dev/zero of=/dev/device bs=446 count=1
  • 运行 fdisk /dev/device
  • 删除所有分区并创建 1 个主分区,使其可启动,然后保存更改
  • 运行 mkfs.ntfs /dev/device1(分区 1)
  • 将 windows install iso 的全部内容复制到您创建的分区上