我一直在阅读一些网页和帖子(这里和其他论坛),关于如何从 Linux 创建 Windows 7 安装 USB 媒体(用于安装 Windows 7)
我在 TechNet 上询问了这个问题,并得到了一个回复,其中包含有关如何操作的一般信息:
“我个人对 Linux 不是很熟悉,但基本上你需要做的就是......无论你以何种方式做,都是这样的:
格式化 USB 闪存驱动器(fat32 或 ntfs),创建一个足够大的分区来承载 Windows 安装(64 位大约 3GB,32 位大约 2.5GB),并将该分区标记为活动/可启动。由于这可以在 Windows 上完成,但也可以像 gparted 这样的工具一样,您应该能够在 Debian 中执行相同的操作。
创建该分区后,挂载您下载的 iso,并将从根目录开始的所有文件复制到 USB 闪存驱动器的根目录中。
这就是全部内容了。”
我在很多地方找到了另一种方法,它与 TechNet 上提到的方法几乎相同。但是,这种方法似乎缺少一个步骤和/或我不确定是否必要的步骤。
dd
并不总是有效。基本上,缺少的步骤是将正确的启动扇区写入 USB 驱动器,这可以通过 Linux 使用 完成ms-sys
。这适用于 的零售版Windows 7
。
以下是完整的概述,请参阅 serverfault 问题更多细节:
- 安装微软系统。
- 检查您的 USB 媒体被分配了什么设备(
fdisk -l
)这里我们假设它是/dev/sdb
。 删除所有分区,创建一个占用所有空间的新分区,将类型设置为 NTFS,并将其设置为可启动:
cfdisk /dev/sdb
创建 NTFS 文件系统:
mkfs.ntfs -f /dev/sdb1
安装 iso 和 usb 介质:
mount -o loop win7.iso /mnt/iso
mount /dev/sdb1 /mnt/usb
复制所有文件:
# cp -r /mnt/iso/* /mnt/usb/
将 Windows 7 MBR 写入 USB 驱动器:
# ms-sys -7 /dev/sdb
确保写入已被刷新(请耐心等待,这可能需要几分钟):
# sync
打开 gparted,选择 USB 驱动器,右键单击文件系统,然后单击“管理标志”。选中“启动”复选框,然后关闭
...您就完成了。
问题
如果不执行最后一步,USB 是否应该可以工作
# ms-sys -7 /dev/sdb
?还是要使 USB 可启动?是否仅将分区标记为可启动?使用 rsync 不是更好吗
cp -r
?所有这些步骤都必须按 进行吗
root
?如果不是,我是否需要将chmod
所有文件664
和chown
用于安装 USB 设备和 ISO 映像的所有目录复制到 ?我认为将数据复制为 更容易,root
并且不会影响数据。有没有人尝试过这种方法或者类似的方法,比如复制 iso
dd
?
答案1
该ms-sys
命令很重要。使用-7
选项创建与 Windows 7 兼容的启动扇区在您的闪存驱动器上。
你不能使用 dd,因为 ISO 使用如下 ISO 文件系统自定义函数或者ISO9660,而你的 USB 驱动器仅正确支持以下磁盘文件系统ext3、FAT32 或 NTFS
使用 rsync 而不是 cp -r 会更好吗?
不是。cp -r
运行得很好。只是要意识到 NTFS 处理权限的方式与 Linux 不同,因此使用 rsync 来保持一切完好无损并不重要。真正重要的是ISO 中的文件位于 USB 上然后引导扇区已正确格式化,使用ms-sys -7
如果需要,您可以以 root 身份执行所有步骤。真正需要 root 权限的只有 2 个步骤,即mkfs
和 2mount
的
如果您以 root 身份遇到权限问题,则可能需要使用ntfs-3g /dev/sdb1
某些 Linux 发行版安装您的 USB,因为某些 Linux 发行版仅为 NTFS 提供只读驱动程序。
答案2
我已经尝试使用 dd(dd if=/file/win7.iso of=/dev/sdb),但没有作用。
我让它发挥作用的步骤:
- 安装 ms-sys
- gparted 创建分区,并创建 NTFS 文件系统。
然后应用以下命令:
# mount -o loop win7.iso /mnt/iso
# mount /dev/sdb1 /mnt/usb
# cp -r /mnt/iso/* /mnt/usb/*
# ms-sys -7 /dev/sdb*