MultiOS-USB icon indicating copy to clipboard operation
MultiOS-USB copied to clipboard

Non-bootable Windows ISOs

Open JonnyTech opened this issue 1 year ago • 21 comments

I was trying to create a pull request and somehow failed...

https://github.com/Mexit/MultiOS-USB/commit/63781e0a497c309f942cf56675899faab6752e2f

Added the ability to boot Windows PE ISO files that require locations of boot files to be specified ie Symantec_Ghost_BootCD_12.0.0_Win11_x64.iso and others.

# Windows PE ISO's that do not boot normally

iso_pattern="win-noboot/*Win1*.iso"

for isofile in $iso_dir/$iso_pattern; do
	if [ -e "$isofile" ]; then
		regexp --set=isoname "$iso_dir/(.*)" "$isofile"

		menuentry "$isoname" "$isofile" --class=windows {
			if [ "${grub_platform}" != "efi" ]; then
				rmmod iso9660
				drivemap -s (hd0) (hd1)
			fi
			echo Loading boot.wim... This may take some time
			iso_path="$2"
			save_env iso_path
			LOOPBACK "$iso_path"
			$wimboot_kernel /MultiOS-USB/tools/wimboot-*/wimboot.x86_64
			$wimboot_initrd \
							newc:BCD:(loop)/boot/bcd \
							newc:boot.sdi:(loop)/boot/boot.sdi \
							newc:boot.wim:(loop)/sources/boot.wim \
							newc:mountIso.exe:/MultiOS-USB/tools/mountiso/mountiso64.exe \
							newc:grubenv:($dev,1)/grub/grubenv
			echo Loading boot.wim complete, booting...
		}
	fi
done

See the commit message for addition info. Feel free to cherry pick whatever you like.

JonnyTech avatar Jan 06 '25 01:01 JonnyTech

Thanks! I will test as soon as I have the opportunity

Mexit avatar Jan 06 '25 15:01 Mexit

Some thoughts on expanding this to fit in with the existing Windows ISO configuration file:

Grub has the test command (https://www.gnu.org/software/grub/manual/grub/html_node/test.html#test)

17.4.74 test Command: test expression Evaluate expression and return zero exit status if result is true, non zero status otherwise. expression is one of: ... -d file = file exists and is a directory -e file = file exists -f file = file exists and is not a directory -s file = file exists and has a size greater than zero ...

If script tests for the existence of the following files within boot.wim

/Windows/Boot/DVD/EFI/BCD
/Windows/Boot/DVD/EFI/boot.sdi

or

/Windows/Boot/DVD/PCAT/BCD
/Windows/Boot/DVD/PCAT/boot.sdi

then boot the WIM, else extract from the ISO as per OP.

JonnyTech avatar Jan 07 '25 13:01 JonnyTech

Not sure how to look inside the .wim for a file.

This is untested: [ -s (loop)/sources/boot.wim/Windows/Boot/DVD/EFI/BCD ] - ie look for the BCD file within the wim within the iso.

Then one script can do both:

# Windows 10, Windows 11
# https://www.microsoft.com/software-download/
# Incuding Windows PE ISO's that boot from USB drive only

iso_pattern="*Win1*.iso"

for isofile in $iso_dir/$iso_pattern; do
	if [ -e "$isofile" ]; then
		regexp --set=isoname "$iso_dir/(.*)" "$isofile"

		menuentry "$isoname" "$isofile" --class=windows {
			if [ "${grub_platform}" != "efi" ]; then
				rmmod iso9660
				drivemap -s (hd0) (hd1)
			fi
			echo Loading boot.wim... This may take some time
			iso_path="$2"
			save_env iso_path
			LOOPBACK "$iso_path"
			$wimboot_kernel /MultiOS-USB/tools/wimboot-*/wimboot.x86_64

			if [ -s (loop)/sources/boot.wim/Windows/Boot/DVD/EFI/BCD ] && [ -s (loop)/sources/boot.wim/Windows/Boot/DVD/EFI/boot.sdi ]; then
						echo Loading bootable boot.wim...
						$wimboot_initrd newc:boot.wim:(loop)/sources/boot.wim \
									newc:mountIso.exe:/MultiOS-USB/tools/mountiso/mountiso64.exe \
									newc:grubenv:($dev,1)/grub/grubenv \
									newc:Winpeshl.ini:/MultiOS-USB/config/windows/Winpeshl.ini
			else
						echo Loading ISO assisted boot.wim...
						$wimboot_initrd \
									newc:BCD:(loop)/boot/bcd \
									newc:boot.sdi:(loop)/boot/boot.sdi \
									newc:boot.wim:(loop)/sources/boot.wim \
									newc:mountIso.exe:/MultiOS-USB/tools/mountiso/mountiso64.exe \
									newc:grubenv:($dev,1)/grub/grubenv
			fi

			echo Loading boot.wim complete, booting...
		}
	fi
done

JonnyTech avatar Jan 07 '25 15:01 JonnyTech

Not sure how to look inside the .wim for a file.

As far as I know this is handled by wimboot.

This is untested: [ -s (loop)/sources/boot.wim/Windows/Boot/DVD/EFI/BCD ] - ie look for the BCD file within the wim within the iso.

Unfortunately, it doesn't work that way. From GRUB there is no access to the wim image.

Mexit avatar Jan 11 '25 16:01 Mexit

Is see, so my original approach for now. If I get time then shall look at wimboot code and see if it is possible to make a grub module to list wim file content.

JonnyTech avatar Jan 13 '25 13:01 JonnyTech

(I did not tried anything written in this issue. Because as far as I understand this issue is about Win PE. Please tell me if I should open a new bug.)

I tried:

Win11_24H2_english_international_x64.iso

But I got this error:

Image

jack10011101 avatar Sep 17 '25 12:09 jack10011101

How much RAM in the device?

What happens once you press a key?

JonnyTech avatar Sep 17 '25 12:09 JonnyTech

How much RAM in the device?

16 GB RAM & 8 CPU

I can open on same device the same Windows ISO via Ventoy.

What happens once you press a key?

It does not matter if I press a key or not.

nothing is happening. I can't do anything except force power off the machine. I waited more then 5 minutes on this screen. nothing happened.

@JonnyTech

jack10011101 avatar Sep 17 '25 18:09 jack10011101

I downloaded Win11_24H2_english_international_x64.iso and it booted instantly with my MultiOS-USB drive.

Have you checked that your file is not corrupted?

Which version of MultiOS-USB are you using?

What is the filesystem where the iso is located (ie NTFS)?

JonnyTech avatar Sep 18 '25 21:09 JonnyTech

@JonnyTech

Have you checked that your file is not corrupted?

It worked with Ventoy few days ago from same ISO.

Which version of MultiOS-USB are you using?

I dowloaded the "master" branch (source code) from Github 2-3 days ago.

I use Linux.

What is the filesystem where the iso is located (ie NTFS)?

USB is EXFAT. Because on this document writes that it boots fro EXFAT:

https://github.com/Mexit/MultiOS-USB/blob/master/docs/Supported_OS.md

jack10011101 avatar Sep 19 '25 12:09 jack10011101

I dowloaded the "master" branch (source code) from Github 2-3 days ago.

Please try the release build:

https://github.com/Mexit/MultiOS-USB/releases/download/v0.9.9/MultiOS-USB_linux_v0.9.9.tar.gz

and show (copy/paste to here) the steps that you use to create the drive.

JonnyTech avatar Sep 19 '25 13:09 JonnyTech

@JonnyTech I tried the build which you mention. Same result. Is the any advanced log I can send you?

BTW Only curiosity: Can I try these on VM?

jack10011101 avatar Sep 21 '25 12:09 jack10011101

Is the any advanced log I can send you?

You have not even sent "basic" log:

show (copy/paste to here) the steps that you use to create the drive.

JonnyTech avatar Sep 21 '25 12:09 JonnyTech

@JonnyTech

I format my USB via this command:

sudo ./multios-usb.sh -f exfat /dev/sdb 27G

Content of:

/run/media/user_name/MultiOS-USB/install.log file

Arguments: -f exfat /dev/sdb 27G
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Creating new GPT entries in memory.
The operation has completed successfully.
The operation has completed successfully.
/dev/sdb1: 8 bytes were erased at offset 0x00000036 (vfat): 46 41 54 31 36 20 20 20
/dev/sdb1: 1 byte was erased at offset 0x00000000 (vfat): eb
/dev/sdb1: 2 bytes were erased at offset 0x000001fe (vfat): 55 aa
/dev/sdb2: 8 bytes were erased at offset 0x00000003 (exfat): 45 58 46 41 54 20 20 20
/dev/sdb2: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
mkfs.fat: Warning: lowercase labels might not work properly on some systems
mkfs.fat 4.2 (2021-01-31)
exfatprogs version : 1.2.9
Creating exFAT filesystem(/dev/sdb2, cluster size=32768)

Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...

exFAT format complete!

jack10011101 avatar Sep 21 '25 13:09 jack10011101

Thanks for the log. I see nothing unusual. This is mine. I also do a file system check and iso checksum check:

$ sudo ./multios-usb.sh -f exfat /dev/sdb 27G

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++   Are you absolutely sure you want to use the selected device?   ++
++             THIS WILL DELETE ALL DATA ON THE DEVICE              ++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Are you sure? Type 'YeS' to install MultiOS-USB on /dev/sdb: YeS
Creating partitions...
Formating partitions...
Copying files...
Installing bootloader...

MultiOS-USB has been successfully installed.

$ sudo fsck /dev/sdb2
fsck from util-linux 2.38.1
exfatprogs version : 1.2.0
/dev/sdb2: clean. directories 65, files 111
$ mkdir isos
$ sudo mount /dev/sdb2 isos
$ sudo cp Win11_24H2_EnglishInternational_x64.iso isos/ISOs/
$ sync
$ md5sum isos/ISOs/Win11_24H2_EnglishInternational_x64.iso
88d80a8363a57cf643afb69a625c3fc6  isos/ISOs/Win11_24H2_EnglishInternational_x64.iso
$ sudo reboot

When I reboot, I select the newly created drive, then the multi-usb menu appears, then I scan isos, select win11 and within seconds I have the windows setup screen.

The iso checksum agrees with https://files.rg-adguard.net/file/fa4628cf-59a5-28b4-3419-d5ae36e1b51e

I do hot have a log at /run/media/user_name/MultiOS-USB/install.log

Please do the checks too.

JonnyTech avatar Sep 21 '25 16:09 JonnyTech

My below command output is exactly same with yours:

sudo ./multios-usb.sh -f exfat /dev/sdb 27G


sudo fsck /dev/sdb2

This is also same (clean) result. But I notice that the file numbers are different. On mine the numbers are:

directories 61, files 110

I sent you the "tree" command output (inside USB drive after formattted USB via multios-usb.sh 0.9.9 version):

├── ISOs
└── MultiOS-USB
    ├── config
    │   ├── 4MLinux
    │   │   └── 4MLinux.cfg
    │   ├── Acronis_True_Image
    │   │   └── Acronis_True_Image.cfg
    │   ├── AntivirusLiveCD
    │   │   └── AntivirusLiveCD.cfg
    │   ├── antiX
    │   │   ├── antiX_base_full.cfg
    │   │   └── antiX_core_net.cfg
    │   ├── archbang
    │   │   └── archbang.cfg
    │   ├── Archman
    │   │   └── Archman.cfg
    │   ├── athenaos
    │   │   └── athenaos.cfg
    │   ├── bluestar
    │   │   ├── bluestar.cfg
    │   │   └── bluestar.txt
    │   ├── CentOS
    │   │   └── CentOS.cfg
    │   ├── clonezilla
    │   │   ├── clonezilla.cfg
    │   │   ├── clonezilla_eoan.cfg
    │   │   └── clonezilla_focal.cfg
    │   ├── config.version
    │   ├── damnsmalllinux
    │   │   └── damnsmalllinux.cfg
    │   ├── debian
    │   │   └── debian-mini.cfg
    │   ├── devuan
    │   │   ├── devuan_desktop-live.cfg
    │   │   ├── devuan-install.cfg
    │   │   └── devuan_minimal-live.cfg
    │   ├── dr-parted-live
    │   │   └── dr-parted-live.cfg
    │   ├── endeavourOS
    │   │   └── endeavourOS.cfg
    │   ├── euroLinux
    │   │   ├── EuroLinux.cfg
    │   │   └── EuroLinux-desktop.cfg
    │   ├── fedora
    │   │   ├── fedora.cfg
    │   │   └── fedora-live.cfg
    │   ├── ferenos
    │   │   └── ferenos.cfg
    │   ├── gentoo
    │   │   ├── gentoo.cfg
    │   │   └── gentoo-gui.cfg
    │   ├── gparted
    │   │   └── gparted-live.cfg
    │   ├── grub.config
    │   ├── grub_loopback
    │   │   └── loopback.cfg
    │   ├── grub_netboot
    │   │   ├── alpinelinux.cfgnet
    │   │   ├── archlinux.cfgnet
    │   │   ├── debian.cfgnet
    │   │   ├── main.cfgnet
    │   │   ├── openSUSE_Leap_15.1.cfgnet
    │   │   ├── openSUSE_Leap_15.2.cfgnet
    │   │   ├── openSUSE_Leap_15.3.cfgnet
    │   │   ├── openSUSE_Tumbleweed.cfgnet
    │   │   ├── slax11.2.0.cfgnet
    │   │   ├── ubuntu_18.04.cfgnet
    │   │   ├── ubuntu_19.10.cfgnet
    │   │   └── ubuntu_20.04.cfgnet
    │   ├── hbcd
    │   │   ├── hbcd_wimboot.cfg
    │   │   └── Winpeshl.ini
    │   ├── KaOS
    │   │   └── KaOS.cfg
    │   ├── kaspersky
    │   │   └── krd.cfg
    │   ├── KDE_neon
    │   │   └── neon-user.cfg
    │   ├── Linuxfx
    │   │   └── Linuxfx.cfg
    │   ├── lwRescue
    │   │   └── lwRescue.cfg
    │   ├── Mageia
    │   │   └── Mageia_netinstall.cfg
    │   ├── mx
    │   │   └── MX-19.cfg
    │   ├── openSUSE
    │   │   ├── openSUSE-DVD.cfg
    │   │   └── openSUSE-NET.cfg
    │   ├── oracleLinux
    │   │   └── OracleLinux.cfg
    │   ├── pclinuxos
    │   │   └── pclinuxos.cfg
    │   ├── ploplinux
    │   │   └── ploplinux.cfg
    │   ├── pmagic
    │   │   └── pmagic.cfg
    │   ├── qubes-os
    │   │   └── qubes-os.cfg
    │   ├── rescuezilla
    │   │   └── rescuezilla.cfg
    │   ├── rocky
    │   │   └── Rocky.cfg
    │   ├── salientos
    │   │   ├── salientos.cfg
    │   │   └── salientos.txt
    │   ├── shredos
    │   │   └── shredos.cfg
    │   ├── slackware
    │   │   ├── slackware_install.cfg
    │   │   └── slackware_live.cfg
    │   ├── slax
    │   │   └── slax.cfg
    │   ├── solus
    │   │   └── Solus.cfg
    │   ├── tails
    │   │   └── tails.cfg
    │   ├── ubuntu
    │   │   ├── ubuntu_mini.cfg
    │   │   └── ubuntu_netboot_x64.cfg
    │   ├── void-linux
    │   │   └── void-linux.cfg
    │   └── windows
    │       ├── info.txt
    │       ├── wim_file.cfg
    │       ├── windows11-bypass.reg
    │       ├── windows_iso.cfg
    │       └── Winpeshl.ini
    ├── config_priv
    │   ├── examples
    │   │   ├── lmde.cfg-example
    │   │   └── shredos.cfg-example
    │   └── README.md
    ├── install.log
    ├── LICENSE
    ├── MultiOS-USB.version
    ├── README.md
    ├── themes
    │   └── MultiOS-USB
    │       ├── background.png
    │       ├── DejaVuSans10.pf2
    │       ├── DejaVuSans12.pf2
    │       ├── DejaVuSans-Bold14.pf2
    │       ├── highlight_c.png
    │       ├── slider_c.png
    │       ├── slider_n.png
    │       ├── slider_s.png
    │       └── theme.txt
    └── tools
        ├── efitools-1.9.2-2
        │   ├── KeyTool.efi
        │   └── ReadMe.txt
        ├── mountiso
        │   ├── mountiso32.exe
        │   ├── mountiso64.exe
        │   ├── ReadMe.txt
        │   └── SHA256SUMS
        ├── mt86plus_7.20
        │   ├── memtest32.bin
        │   ├── memtest32.efi
        │   ├── memtest64.bin
        │   ├── memtest64.efi
        │   └── ReadMe.txt
        ├── syslinux-6.04-pre1
        │   ├── memdisk
        │   └── ReadMe.txt
        └── wimboot-v2.8.0-1
            ├── ReadMe.txt
            ├── wimboot.i386
            └── wimboot.x86_64

I check MD5. it is same. (I remember that I donwloaded it from official Microsoft web site)


For the log file which you did not see it:

I sent you my full path. It will not work for you. Please open your file manager, and then go to USB drive directory, and then go to:

/MultiOS-USB/install.log


@JonnyTech

jack10011101 avatar Sep 21 '25 16:09 jack10011101

But I notice that the file numbers are different.

Sorry, my bad, my script adds some additional bits.

I check MD5. it is same.

Great, thanks for confirming.

Going back to your original error:

Loading boot.wim... This may take some time error: couldn't find suitable memory target.

I really do think that is a memory or security issue with your computer as I have tested it on three different devices here with no issue.

What are the results of:

mokutil --sb-state
sudo dmidecode --type memory

Can you try:

Disable secure boot Perform a BIOS / CMOS reset

Also, let's see if you can boot the .wim file directly. From the .iso file, copy /sources/boot.wim to the multi-usb iso folder and try selecting that from the menu.

JonnyTech avatar Sep 21 '25 17:09 JonnyTech

I tried:

Win11_24H2_english_international_x64.iso

But I got this error:

Image

You need to disable SB during installation. This may change soon.

https://github.com/Mexit/MultiOS-USB/blob/a1da791555f3f0832e68acef4515396766a07889/README.md?plain=1#L15

Mexit avatar Sep 22 '25 19:09 Mexit

@Mexit sory I missed that. Now I try with disabling secure boot. It worked. But after few screens later, when it comes to "searching drive" screen, it gives me this error:

Image

I search on internet. I found this information somewhere:

often due to missing files or issues with the USB drive used for installation. To resolve it, ensure your USB drive is formatted to NTFS and recreate it using the official Media Creation Tool.

jack10011101 avatar Sep 23 '25 09:09 jack10011101

@Mexit sory I missed that. Now I try with disabling secure boot. It worked. But after few screens later, when it comes to "searching drive" screen, it gives me this error:

Image

I search on internet. I found this information somewhere:

often due to missing files or issues with the USB drive used for installation. To resolve it, ensure your USB drive is formatted to NTFS and recreate it using the official Media Creation Tool.

Did you try formatting your drive with ntfs with this command :

sudo ./multios-usb.sh -f ntfs /dev/sdX

eclipseo avatar Oct 11 '25 06:10 eclipseo

@michael10101

I have just installed Windows 11 24H2 using MultiOS-USB installed with the command: sudo ./multios-usb.sh -f exfat /dev/sdX

Image

Mexit avatar Oct 11 '25 19:10 Mexit