How to Create a (persitent) Bootable Windows 10 USB in Linux

Hello !
I only have Ubuntu PC and need some Windows app for school those apps have not any conversion from proprietary to Open Source and homeworks have to be done in those proprietary files formats

I don’t like to destabilise my OS and totally failed to virtualized Windows (with PlayOnLinux and Wine) so I need a persistent MS Windows on an external USB disk.

I’ve read the tutorial How to Create a Bootable Windows 10 USB in Linux but also that Ventoy cannot create persitent disks and that UNetbootin is recommanded to create a persitent disk…

How can I proceed to get an Bootable External Win10 USB disk using my Ubuntu 22.04LTS?

Specifications

→ Add the output of inxi -Fxmz command here!
$ inxi -Fxmz
La commande « inxi » n’a pas été trouvée, mais peut être installée avec :
sudo apt install inxi

$ sudo apt install inxi
[sudo] Mot de passe de hada :
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances… Fait
Lecture des informations d’état… Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
libxdo3 xdotool
Veuillez utiliser « sudo apt autoremove » pour les supprimer.
Les paquets supplémentaires suivants seront installés :
lm-sensors tree
Paquets suggérés :
libxml-dumper-perl fancontrol read-edid i2c-tools
Les NOUVEAUX paquets suivants seront installés :
inxi lm-sensors tree
0 mis à jour, 3 nouvellement installés, 0 à enlever et 15 non mis à jour.
Il est nécessaire de prendre 422 ko dans les archives.
Après cette opération, 1 824 ko d’espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 NO LINKS FOR NEW USERS/ubuntu jammy/universe amd64 tree amd64 2.0.2-1 [47,9 kB]
Réception de :2 NO LINKS FOR NEW USERS/ubuntu jammy/universe amd64 inxi all 3.3.13-1-1 [283 kB]
Réception de :3 NO LINKS FOR NEW USERS/ubuntu jammy/universe amd64 lm-sensors amd64 1:3.6.0-7ubuntu1 [91,0 kB]
422 ko réceptionnés en 0s (2 885 ko/s)
Sélection du paquet tree précédemment désélectionné.
(Lecture de la base de données… 207744 fichiers et répertoires déjà installés.
)
Préparation du dépaquetage de …/tree_2.0.2-1_amd64.deb …
Dépaquetage de tree (2.0.2-1) …
Sélection du paquet inxi précédemment désélectionné.
Préparation du dépaquetage de …/inxi_3.3.13-1-1_all.deb …
Dépaquetage de inxi (3.3.13-1-1) …
Sélection du paquet lm-sensors précédemment désélectionné.
Préparation du dépaquetage de …/lm-sensors_1%3a3.6.0-7ubuntu1_amd64.deb …
Dépaquetage de lm-sensors (1:3.6.0-7ubuntu1) …
Paramétrage de inxi (3.3.13-1-1) …
Paramétrage de tree (2.0.2-1) …
Paramétrage de lm-sensors (1:3.6.0-7ubuntu1) …
Created symlink /etc/systemd/system/multi-user.target.wants/lm-sensors.service →
/lib/systemd/system/lm-sensors.service.
Traitement des actions différées (« triggers ») pour man-db (2.10.2-1) …

$ inxi -Fxmz~
Error 22: Unsupported option: -~
Check -h for correct parameters.

$ inxi -Fxmz
System:
Kernel: 5.15.0-47-generic x86_64 bits: 64 compiler: gcc v: 11.2.0
Desktop: GNOME 42.4 Distro: Ubuntu 22.04.1 LTS (Jammy Jellyfish)
Machine:
Type: Laptop System: LENOVO product: 745969G v: ThinkPad X200
serial:
Mobo: LENOVO model: 745969G v: ThinkPad X200 serial:
BIOS: coreboot v: CBET4000 3774c98 date: 09/07/2016
Battery:
ID-1: BAT0 charge: 41.2 Wh (99.3%) condition: 41.5/48.8 Wh (85.1%)
volts: 12.4 min: 11.1 model: JingYi 08K8193 status: Not charging
Memory:
RAM: total: 7.51 GiB used: 3.57 GiB (47.6%)
RAM Report:
permissions: Unable to run dmidecode. Root privileges required.
CPU:
Info: dual core model: Intel Core2 Duo P8600 bits: 64 type: MCP
arch: Core Yorkfield rev: A cache: L1: 128 KiB L2: 3 MiB
Speed (MHz): avg: 2118 high: 2170 min/max: 800/2401 boost: enabled cores:
1: 2067 2: 2170 bogomips: 9601
Flags: ht lm nx pae sse sse2 sse3 sse4_1 ssse3 vmx
Graphics:
Device-1: Intel Mobile 4 Series Integrated Graphics vendor: Lenovo
driver: i915 v: kernel bus-ID: 00:02.0
Device-2: Lenovo Integrated Webcam type: USB driver: uvcvideo
bus-ID: 1-6:4
Display: wayland server: X.Org v: 1.22.1.1 with: Xwayland v: 22.1.1
compositor: gnome-shell driver: X: loaded: modesetting unloaded: fbdev,vesa
gpu: i915 resolution: 1280x800~60Hz
OpenGL: renderer: Mesa Mobile Intel GM45 Express (CTG) v: 2.1 Mesa 22.0.5
direct render: Yes
Audio:
Device-1: Intel 82801I HD Audio vendor: Lenovo ThinkPad T400
driver: snd_hda_intel v: kernel bus-ID: 00:1b.0
Sound Server-1: ALSA v: k5.15.0-47-generic running: yes
Sound Server-2: PulseAudio v: 15.99.1 running: yes
Sound Server-3: PipeWire v: 0.3.48 running: yes
Network:
Device-1: Intel 82567LM Gigabit Network vendor: Lenovo ThinkPad T400
driver: e1000e v: kernel port: 3000 bus-ID: 00:19.0
IF: enp0s25 state: up speed: 1000 Mbps duplex: full mac:
Device-2: Qualcomm Atheros AR9285 Wireless Network Adapter vendor: Askey
driver: ath9k v: kernel bus-ID: 02:00.0
IF: wlp2s0 state: down mac:
Bluetooth:
Device-1: Broadcom BCM2045B (BDC-2.1) [Bluetooth Controller] type: USB
driver: btusb v: 0.8 bus-ID: 4-2:8
Report: hciconfig ID: hci0 rfk-id: 7 state: up address:
bt-v: 1.2 lmp-v: 2.1
Drives:
Local Storage: total: 931.51 GiB used: 39.43 GiB (4.2%)
ID-1: /dev/sda vendor: Seagate model: ST1000LM048-2E7172 size: 931.51 GiB
Partition:
ID-1: / size: 191.38 GiB used: 23.02 GiB (12.0%) fs: ext4 dev: /dev/sda5
Swap:
Alert: No swap data was found.
Sensors:
System Temperatures: cpu: 51.0 C mobo: 48.0 C
Fan Speeds (RPM): cpu: 3701
Info:
Processes: 223 Uptime: 3h 45m Init: systemd runlevel: 5 Compilers:
gcc: 11.2.0 Packages: 2131 Shell: Bash v: 5.1.16 inxi: 3.3.13

$

→ Add the output of for f in $(find . -maxdepth 1 -type f -name 'dmesg*.log'); do echo "${f}"; printf '%s\n\n' "$(<"${f}")"; done command here!

$ for f in $(find . -maxdepth 1 -type f -name ‘dmesg*.log’); do echo “${f}”; printf ‘%s\n\n’ “$(<”${f}“)”; done
./dmesg_20220914142928.log

$

First, install dependencies:

→ apt update
→ apt install -y dnsutils traceroute hping3 netcat tcpdump

→ ip a
→ ip route
→ traceroute 8.8.8.8
→ nslookup example.com

Additional Information (if applicable)

  • Software title | (E.g. Nextcloud)
  • Software version | (E.g. softwarename -V)
  • Was the software title installed freshly or updated/migrated?

Steps to reproduce

Expected behaviour

Actual behaviour

Extra details

What’s the program called?

Persistent as in a portable Windows?

You can install Windows to Go, if you want a portable Windows.

I usually create bootable USB sticks on Windows with Rufus.

On Linux there is no such convenient and great to use tool, which is why you need to do it like a cave man, if you want to do it the best way, on Linux.

Once you have Windows to Go at your disposal, you can follow several ways of installation, or you can do it the Linux way, as described in Q6.

Many thanks

SketchUp

Yes, something à la Windows To Go to intall SketchUp and also MockupsForDesktop as I’m obligated to send my homeworks back in their proprietary formats to teachers

I have the iso and a key for Enterprise (WTG is only on Education and Enterprise)

No Windows PC here

This part ? (to be sure)

Precisely. This is a description of proper & safe bootable disk creation. The dd part makes it safe, because it does not do weird copying or other weird stuff, like Ventoy or whatever. It literally just flashes the image 1:1 onto the stick. Nothing more. Nothing less.

Please, don’t skip the hash verification.

It also works with Windows Server.

Step 3 :


$ cd ..

$ cd ..

$ rhash --sha512 /media/Data/InstallationWindows/Win10_21H2_French_x64.iso
b635169d267c8c63db1cc104b77a2fed3b1d0ec39961ecfb704972f3fc6145093793b7eb088b32475487554e93bda7833bdb3203e4cbddb4a76728479629c21c  /media/Data/InstallationWindows/Win10_21H2_French_x64.iso
$

hash for Français 64-bit
2CC9731EE278666A632BDF5944105FC5F215F59CED98D75AECCF8185BD5BCA3A

Is it OK ? :thinking:

They are not the same. The first one longer…
Are they both sha512?

what is sha512 ? I’m not aware of what it is…

1 Like

i found the hash on Microsoft as it is for Windows (To Go) 10 how can I verify the Windows 10 iso integirty with it ?

@HadaDeLaLuna ,
With any downloaded software , you check the integrity by

  • download the software
  • compute the shasum on the downloaded copy of the software. There are linux programs to compute either md5sum or shasum
  • compare the the computed shasum with the shasum file on the site you downloaded from. If they agree, you can be sure noone has tampered with the file

RegardNeville

$ sha256sum  Win10_21H2_French_x64.iso
2cc9731ee278666a632bdf5944105fc5f215f59ced98d75aeccf8185bd5bca3a  Win10_21H2_French_x64.iso
$

with hash stated on download site : 2CC9731EE278666A632BDF5944105FC5F215F59CED98D75AECCF8185BD5BCA3A

Is that OK?

Yes, they are the same. Capitals dont matter
Cherrs
Neville

Many thanks !

Now I’m following the burning USB device tutorial:

Find out the storage devices already attached to my PC

$ ls /dev/sd* 
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5
$

Insert my target USB and locate its location

$ ls /dev/sd* 
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdb1  /dev/sdb2
$

I want install my WTG on /dev/sdb2 as it is at the end of my USB device (to put dati on /dev/sdb1 and save them in case of new burning/install need)

Navigate to the location of my source ISO

$ cd /media/Data/InstallationWindows/
$

Run dd command to copy files from ISO to disk /dev/sdb2

sudo dd if=archlinux-2017.iso of=/dev/sdb2 bs=1024k status=progress

Is that OK ? I’m waiting an answer about this last command line before to do it…

Yes that dd command is OK
After dd returns the prompt, you should do
sync
to make sure it flushes its buffers.

To check on your devices, before you do the dd , you can use
lsblk
It will list all devices, so you can be sure sdb2 is the one you want to write on.

Regards
Neville

Many thanks
I made a mistake, this is better in my context:

sudo dd if=Win10_21H2_French_x64.iso of=/dev/sdb2 bs=1024k status=progress
$ sudo dd if=Win10_21H2_French_x64.iso of=/dev/sdb2 bs=1024k status=progress
5908725760 octets (5,9 GB, 5,5 GiB) copiés, 200 s, 29,5 MB/s
5636+1 enregistrements lus
5636+1 enregistrements écrits
5910536192 octets (5,9 GB, 5,5 GiB) copiés, 200,153 s, 29,5 MB/s
$ sync
$

Looks right.
It read as many characters as it wrote

That usb drive should now be bootable, as long as it is a hybrid iso file.
You can check with
file Win10_21H2_French_x64.iso

$ file Win10_21H2_French_x64.iso
Win10_21H2_French_x64.iso: cannot open `Win10_21H2_French_x64.iso' (No such file or directory)
$ file  /dev/Win10_21H2_French_x64.iso
/dev/Win10_21H2_French_x64.iso: cannot open `/dev/Win10_21H2_French_x64.iso' (No such file or directory)
$ 

My prealable formating was :

And when using Disk tool I get This:

I feel confused about the burning results

Hi @HadaDeLaLuna,

I may be wrong, but I believe that an iso file was meant to be burned (written to) either to a CD or a USB flash drive.
Your gparted shows a HDD (disk drive).