1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
---
title: Windows 10, Bootable USB on Linux
published: 2017-01-07
---
There are so many misleading, confusing and extremely complicated instructions
on how to create a bootable Windows USB stick on Linux that is not funny
anymore. This is mostly a "note to self" on how to do this.
Microsoft conveniently
[provides](https://www.microsoft.com/en-us/software-download/windows10ISO)
official Windows ISO files that you can use to perform fresh installations of
Windows on PCs of relatives that you need to clean up. You don't even need to
provide a "COA" key to download them, at least not for Windows >= 8.
So, once you have the ISO and a USB stick (or external hard disk) of at least
4GB it is very easy, if the machine supports (U)EFI which all machines do that
I got my hands on, even an old Samsung machine from 2009 supports it.
We assume the USB device is `/dev/sdb`, please make sure this is correct for
you.
Empty the first MB of the USB device to clean any crap that may be there:
$ sudo dd if=/dev/zero of=/dev/sdb count=1024 bs=1024
[sudo] password for fkooman:
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.174261 s, 6.0 MB/s
Create a new partition using `fdisk`, it is important to create a partition of
type `0x0c` and mark it as bootable:
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.28.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x4ddb579b.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-30998527, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-30998527, default 30998527):
Created a new partition 1 of type 'Linux' and of size 14.8 GiB.
Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 0c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.
Command (m for help): p
Disk /dev/sdb: 14.8 GiB, 15871246336 bytes, 30998528 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4ddb579b
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 30998527 30996480 14.8G c W95 FAT32 (LBA)
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Now, create a FAT32 file system on the USB device:
$ sudo mkdosfs -F32 /dev/sdb1
mkfs.fat 4.0 (2016-05-06)
Create some mount points:
$ sudo mkdir /mnt/usb
$ sudo mkdir /mnt/iso
Mount the USB device:
$ sudo mount /dev/sdb1 /mnt/usb
Next we _mount_ the ISO to access the files on it:
$ sudo mount -o loop Win10_1607_English_x64.iso /mnt/iso
Now, we copy the files from the ISO to the USB stick:
$ sudo cp -r /mnt/iso/* /mnt/usb/ && sync
The `sync` is to make sure all data is written to the USB stick.
Unmount the ISO and USB stick:
$ sudo umount /mnt/iso
$ sudo umount /mnt/usb
That's all!
|