3

Pseudocode but originally developed for Windows 7 iso file but applied for Windows 8 in the thread How to create bootable Windows 8 iso image in Linux? but it does not work with 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 .

Unsuccessful output when run on Windows 10 image

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 

Some of the following fields have changed for the iso file used in dd

  • bs=2048
  • count=8
  • skip=734

How can you study which field values you can use for Windows 10 iso?

OS: Debian 8.5 64 bit
Hardware: Asus Zenbook UX303UA
Linux kernel: 4.6 of backports
Related threads: How to create bootable Windows 7 iso image in Linux?, Customizing a Windows 7 install ISO
Motivation: I need Windows 10 to use Canon P-150 duplex scanner, but when I started my Windows, I got Error 0xC0000428 because Windows update has again broken things there and I use Windows otherwise so rarely; and I have no spare Windows left to make bootable media

1

If you are going to boot a UEFI-based computer, just mount the Windows ISO (take care that it is a UDF formatted ISO) and copy all files to the USB drive. As long as the drive is in FAT32 format, a UEFI computer will recognize it and it will offer the option to boot from it.

On the other hand, for a BIOS-based machine, the best option is to manually configure syslinux to chainload the Windows boot. I tried this on Windows 8, but not yet on 10. /dev/sdf is your USB drive.

  • Format the USB to FAT32
  • Make sure the USB has only one partition, and it is boot active (GParted will help with this)
  • Copy all files from the ISO to the USB drive
  • Install syslinux on your Linux system
  • Run syslinux -i /dev/sdf1 (the first partition on the USB drive, you can check on lsblk)
  • Run dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdf bs=4M
  • Mount the USB drive and create the directory boot/syslinux
  • Copy all *.c32 files from /usr/lib/syslinux/bios to the boot/syslinux directory on the USB
  • Create a syslinux.cfg text file on boot/syslinux, with the text

    LABEL win10
    MENU LABEL Boot Windows 10 install
    COM32 /boot/syslinux/chain.c32
    APPEND label=win7fs ntldr=/bootmgr
    

Edit: I'm not sure where Debian puts the syslinux files; you can find them with find / -name "mbr.bin" 2> /dev/null

  • As I wrote already, I don't know where exactly syslinux files are on Debian. You can find the file with find / -name "mbr.bin" 2> /dev/null – user645644 Sep 28 '16 at 11:16
  • 1
    Any of those are ok. Debian puts the *.c32 files at /usr/lib/syslinux/modules/bios/ – user645644 Sep 28 '16 at 21:00
  • 1
    To copy all the *.c32 files to the syslinux directory on your drive. Theoretically you only need chain.c32... but I like to have all on the images; they can be useful. – user645644 Sep 29 '16 at 12:12
  • How to make sure it is UDF formatted ISO? – Léo Léopold Hertz 준영 Oct 3 '16 at 20:09
  • 1
    This may have worked in the past but not anymore, Windows images (.wim files) in recent Windows 10 builds exceed the file size limit of FAT32. – MoonSweep Apr 23 at 22:36
0

The only reliable solution which I found for the case. Create bootable Windows in Windows.

  • Fine if you don't obtain the 0x80080005 error which I did. Microsoft help completely useless for resolving the issue so I've presented my Linux Debian solution below. – Eamonn Kenny Aug 9 '18 at 9:13
1

This worked for me even with legacy/CSM boot (Ubuntu 16.04, Windows 10 Version 1511 32bit; you can use genisoimage instead of mkisofs as well, mkisofs is just a symlink):

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/

(one long line, in bash with backslashes at the end for line continuation)

where files/ is the subdirectory which contains the extracted contents of the Windows 10 ISO.

The key point seems to be the etfsboot.com from the boot/ subdirectory of the Windows 10 ISO.

I can boot the burned disc with legacy/CSM without any problems.

I did only try out with the 1511 version of win10. If you try with other versions, please leave a comment.

  • No, genisoimage is a defective and dead variant of mkisofs. In case you only have a symlink, it is recommended to fetch a recent original that includes all the bug fixes and enhancements from the last 14 years. – schily Jul 9 '18 at 11:50
  • @schily In Ubuntu 16.04, mkisofs is just a symlink to genisoimage. I've just tried to describe the situation at the system I've used for this as best as I could. But thank you for the information! So now we know that building the image even works with the 14 year old and buggy genisoimage used in Ubuntu 16.04. BTW, invoking genisoimage -version on Ubuntu 16.04 results in genisoimage 1.1.11 (Linux) – bluefire81 Jul 10 '18 at 18:57
  • 14 years ago, there have been many small bugs in the resulting filesystem image. Whether you notice them depends on what you do. Important: genisoimage has absoutely no UTF-8 support. This may be important unless you only use filenames with 7 bit ASCII. If you compare genisoimage with xorriso, genisoimage may be a win since it implements rudimentary UDF support. The new mkisofs on the other side supports user/group, permissions, symlinks, device files hardlinks and even chinese characters in filenames and better timestamps. Decide whether you are OK with a draft or like a mature program. – schily Jul 10 '18 at 21:28
4

I tried the Win7 solution described by Microsoft on a Windows machine:

https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool

and obtained the 0x80080005 error so went to Debian Stretch 9 to try to build the Windows 10 bootable USB using a e5.onthehub.com college/school ISO.

dd absolutely doesn't work for Windows 10. This only works for linux OSes. Use:

dd if=my-linux-os.iso of=/dev/sdX bs=4M

Note: never try write to sdX1 where X={a,b,c or d} and always check you are not overwriting your harddisk which is usually sda or sdb.

For windows 10 you can use WoeUSB but not from the apt/yum repos. These ones are obsolete, at least for Debian 9. So instead use:

git clone https://github.com/slacka/WoeUSB.git

Then follow the instructions at the end of:

https://github.com/slacka/WoeUSB

You must have all the prerequisites such as gparted and so forth installed first.

I also found at the end of the process that I must run woeusb with sudo. So you just use:

sudo woeusb --device local/of/my/windows-10-image.iso /dev/sdX

and hey presto it just works brilliantly. In my case my harddisk was sda and my USB drive was sdb so I wrote the ISO to /dev/sdb (again be careful, you don't want to overwrite your OS by accident). I then installed it on a military class MSI motherboard with 2Tb Harddisk attached with no fast boot options inside the BIOS and it just works. I turned on absolutely every UEFI option first to get it into the right state.

I also had problems at install time, with the system hanging forever when using a Gmail email account for login and when the internet cable was connected at the second restart of the machine (during the install process). If you have this issue, disconnect internet, restart machine, let generic account be built, login, restart with internet cable

  • Awesome. It helped me – linuxoid69 Apr 17 at 17:51
  • This truly works, it should be the accepted answer. – MoonSweep Apr 23 at 22:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.