如何在 Debian 中创建可启动的 Windows 10 映像?

如何在 Debian 中创建可启动的 Windows 10 映像?

伪代码,最初是为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.comWindows 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/biosboot/syslinuxUSB 上的目录
  • 在 上创建一个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。

相关内容