伪代码,最初是为Windows 7 iso文件开发的,但在线程中应用于Windows 8如何在 Linux 中创建可启动的 Windows 8 iso 映像?但它不适用于 Windows 10 iso
# https://rwmj.wordpress.com/2010/11/04/customizing-a-windows-7-install-iso/
# https://unix.stackexchange.com/a/312477/16920
$ dd if=../en_windows_10_x64_dvd.iso \
of=boot.img bs=2048 count=8 skip=734
$ mkisofs -o ../new-win.iso -b boot.img -no-emul-boot -c BOOT.CAT \
-iso-level 2 -udf \
-J -l -D -N -joliet-long -relaxed-filenames .
在 Windows 10 映像上运行时输出失败
dd if=/home/masi/Downloads/en_windows_10_multiple_editions_version_1511_x64_dvd.iso of=/home/masi/Downloads/boot.img bs=2048 count=8 skip=734
8+0 records in
8+0 records out
16384 bytes (16 kB) copied, 0.000392973 s, 41.7 MB/s
所使用的 iso 文件的以下某些字段已更改dd
bs=2048
count=8
skip=734
如何研究哪些字段值可用于 Windows 10 iso?
操作系统:Debian 8.5 64 位
硬件:华硕 Zenbook UX303UA
Linux 内核:向后移植 4.6
相关主题:如何在 Linux 中创建可启动的 Windows 7 iso 映像?,自定义 Windows 7 安装 ISO
动机:我需要 Windows 10 才能使用 Canon P-150 双面扫描仪,但当我启动 Windows 时,出现错误0xC0000428因为 Windows 更新再次破坏了那里的东西,而且我很少使用 Windows;我没有多余的 Windows 来制作可启动媒体
答案1
我在Windows机器上尝试了微软描述的Win7解决方案:
https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool
并获得了
0x80080005错误
因此,前往 Debian Stretch 9 尝试使用 e5.onthehub.com 学院/学校 ISO 构建 Windows 10 可启动 USB。
使用dd
绝对不适用于 Windows 10。这只适用于 Linux 操作系统。使用:
dd if=my-linux-os.iso of=/dev/sdX bs=4M
注意:切勿尝试写入/dev/sdX1
位置X={a,b,c or d}
,并始终检查您没有覆盖硬盘,这通常是/dev/sda
或/dev/sdb
!
对于 Windows 10,您可以使用 WoeUSB,但不能使用 apt/yum 存储库。这些已经过时了,至少对于 Debian 9 来说是这样。所以改用:
git clone https://github.com/slacka/WoeUSB.git
然后按照末尾的说明进行操作:
https://github.com/slacka/WoeUSB
您必须首先安装所有先决条件,例如 gparted 等。
我还发现在该过程结束时我必须使用 sudo 运行 woeusb。所以你只需使用:
sudo woeusb --device local/of/my/windows-10-image.iso /dev/sdX
嘿,很快它就工作得非常出色。就我而言,我的硬盘/dev/sda
和 USB 驱动器都是/dev/sdb
这样,所以我将 ISO 写入到/dev/sdb
(再次小心,您不想意外覆盖您的操作系统)。然后,我将其安装在带有 2TB 硬盘的军用级 MSI 主板上,BIOS 中没有快速启动选项,并且它可以正常工作。我首先打开了所有 UEFI 选项,使其进入正确的状态。
我在安装时也遇到了问题,当使用 Gmail 电子邮件帐户登录以及第二次重新启动计算机时(在安装过程中)连接互联网电缆时,系统永远挂起。如果您遇到此问题,请断开互联网,重新启动计算机,建立通用帐户,登录,然后使用网线重新启动
答案2
即使使用旧版/CSM 启动,这对我也有效(Ubuntu 16.04、Windows 10 版本 1511 32 位;您也可以使用 genisoimage 而不是 mkisofs,mkisofs 只是一个符号链接):
mkisofs \
-no-emul-boot \
-b boot/etfsboot.com \
-boot-load-seg 0x07C0 \
-boot-load-size 8 \
-iso-level 2 \
-udf \
-joliet \
-D \
-N \
-relaxed-filenames \
-o win10-1511-32bit-mod1.iso \
files/
(一长行,在 bash 中,末尾带有反斜杠以继续行)
其中files/
是包含 Windows 10 ISO 提取内容的子目录。
关键点似乎来自etfsboot.com
Windows boot/
10 ISO 的子目录。
我可以使用传统/CSM 启动刻录的光盘,没有任何问题。
我只尝试过win10 1511版本。如果您尝试其他版本,请发表评论。
答案3
如果要启动基于 UEFI 的计算机,只需安装 Windows ISO(注意它是 UDF 格式的 ISO)并将所有文件复制到 USB 驱动器。只要驱动器是 FAT32 格式,UEFI 计算机就会识别它,并提供从该驱动器启动的选项。
另一方面,对于基于 BIOS 的计算机,最佳选择是手动配置 syslinux 以链式加载 Windows 启动。我在 Windows 8 上尝试过此操作,但尚未在 10 上尝试过。/dev/sdf
是您的 USB 驱动器。
- 将 USB 格式化为 FAT32
- 确保 USB 只有一个分区,并且它是启动活动的(GParted 将帮助解决这一问题)
- 将 ISO 中的所有文件复制到 USB 驱动器
- 在 Linux 系统上安装 syslinux
- 运行
syslinux -i /dev/sdf1
(U盘第一个分区,可以查看lsblk
) - 跑步
dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdf bs=4M
- 挂载 USB 驱动器并创建目录
boot/syslinux
- 将所有
*.c32
文件复制/usr/lib/syslinux/bios
到boot/syslinux
USB 上的目录 在 上创建一个
syslinux.cfg
文本文件boot/syslinux
,其中包含文本LABEL win10 MENU LABEL Boot Windows 10 install COM32 /boot/syslinux/chain.c32 APPEND label=win7fs ntldr=/bootmgr
编辑:我不确定 Debian 将 syslinux 文件放在哪里;你可以找到它们find / -name "mbr.bin" 2> /dev/null
答案4
我为这个案例找到的唯一可靠的解决方案。在 Windows 中创建可启动 Windows。