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

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

我有:

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

答案1

好的,在尝试了这里提到的所有方法但都失败后,我终于成功了。基本上,缺少的步骤是将正确的引导扇区写入 USB 驱动器,这可以在 Linux 中使用 或 来完成ms-syslilo -M这适用于 Windows 7 零售版。

以下是完整概述:

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

检查您的 USB 介质分配了什么设备 - 我们假设它是/dev/sdb。删除所有分区,创建一个占用所有空间的新分区,将类型设置为 NTFS (7),并记得将其设置为可启动:

# cfdisk /dev/sdb   或者   fdisk /dev/sdb (分割类型 7, 和可启动旗帜)

创建 NTFS 文件系统:

# mkfs.ntfs -f /dev/sdb1

编写 Windows 7膜生物反应器在 USB 记忆棒上(也适用于 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 介质:

# 安装 -o 循环 win7.iso /mnt/iso
# 挂载 /dev/sdb1 /mnt/usb

复制所有文件:

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

打电话sync确认所有文件都已写入。

打开 gparted,选择 USB 驱动器,右键单击文件系统,然后单击“管理标志”。选中启动复选框,然后关闭。

...您就完成了。

完成所有这些之后,您可能想要备份 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

因此例如有 8 M 额外字节:

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

与往常一样,使用时请仔细检查设备名称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 秒,10.3 MB/s

如果下次您想将 Windows 7 安装程序放到 USB 上,请反向操作。

答案2

如果您的 PC 支持 UEFI 和 GPT 磁盘,您可以使用 dd 来完成此操作。

打开终端,你需要找到你的 pendrive 是什么设备。如果你已经安装了驱动器,你可以通过输入“mount”并查看其条目来找到设备的名称。如下所示:

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

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

umount /dev/sdb1

在根 shell 中转到存储 ISO 的目录并输入以下内容:(将 windows7.iso 替换为 iso 的名称,将 /dev/sdb 替换为您的 USB 驱动器的设备 ID)。

dd if=windows7.iso of=/dev/sdb

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

答案3

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 安装 iso 的全部内容复制到您创建的分区上

答案4

代替

dd if=windows7.iso of=/dev/sdb

你可以这样写root

dd if=windows7.iso of=/dev/sdb1 

(在末尾添加 1 或者将 USB 驱动器放置在任何位置。)

相关内容