Windows10 Install disk does not offer UEFI option

5,399

Solution 1

Rufus (and UEFI:NTFS) author here.

A few explanations:

  1. The 3 files you see (bootia32.efi, bootx64.efi and bootarm.efi) come from UEFI:NTFS and NOT your ISO. These are used to load the UEFI NTFS driver so that the rest of the boot can continue from the NTFS partition, hence achieving NTFS boot from UEFI.

  2. The second to last screenshot you posted is the output from UEFI:NTFS, which pretty clearly indicates that your UEFI firmware is 64-bit. The (x64) in the *** UEFI:NTFS (x64) *** is the UEFI architecture you are running.

  3. Therefore, to install 32-bit Windows on your platform, you would need to boot a 32-bit UEFI executable from a 64-bit UEFI platform. As far as I am aware this is not possible in UEFI mode because 64-bit UEFI considers a 32-bit UEFI executable to be as foreign as if it was for an ARM or MIPS CPU, and therefore will refuse to execute it. Please be mindful that while 64-bit OSes like Windows or Linux do have default 32-bit emulation for 32-bit software, the same is not true for UEFI. So unless you can find a 32-bit emulation layer for UEFI that will let you run 32-bit executables on 64-bit (again, I'm not aware of such thing), your only option to run both 32 and 64-bit Windows concurrently on a 64-bit system is to install Windows not in UEFI mode but in BIOS or BIOS-emulation mode (a.k.a. "CSM" or "UEFI-CSM"), which probably means that you'll need to reformat your whole drive to switch it from GPT partition scheme to MBR partition scheme (since GPT is mostly incompatible with BIOS boot).

Additionally, for those who may wonder why, whereas BIOS/BIOS-compatibility allows 32 and 64-bit Windows to boot pretty much indiscriminately, whereas UEFI doesn't, the reason is pretty much historical. Unlike UEFI, there's only one flavour of BIOS, which is 32-bit 16-bit only. So what happens is that, with the arrival of 64-bit CPUs (which, internally, can run in either 16, 32 or 64-bit mode), Microsoft created a BIOS bootloader that switches from 32-bit 16-bit execution mode (the mode a 64-bit CPU is in after leaving the BIOS) to 64-bit execution mode, just like it has a bootloader that switches from 16 to 32-bit mode for 32-bit Windows. However, for UEFI boot, Microsoft does not provide something similar to switch from 64-bit execution mode (the mode a 64-bit CPU is in after leaving a 64-bit UEFI firmware) to 32-bit execution mode, so, unfortunately, if all you have is a 64-bit UEFI firmware, and want to boot Windows in UEFI mode, you're pretty much stuck to using the same "bitness" as your UEFI firmware.

EDIT: I believe that you should go with Rod's answer as it provides better alternatives.

Solution 2

EFI firmware is designed to launch OSes of the same bit depth as itself. That is, a 64-bit EFI can launch 64-bit OSes, but not 32-bit OSes; and a 32-bit EFI can launch 32-bit OSes, but not 64-bit OSes. Since the computer is already running a 64-bit Windows in EFI mode, it seems certain that your computer has a 64-bit EFI, which means that you will not be able to install a 32-bit version of Windows directly on the computer -- at least, not as it's configured now. I see several possible workarounds:

  • Virtualization -- You can install a 32-bit Windows in a virtual machine (VirtualBox, VMWare, etc.). This is likely to be the best solution if you don't need direct hardware access for your software testing. Among other things, you'll be able to run both versions of Windows simultaneously, which should greatly speed up testing.
  • Switch entirely to BIOS/CSM/legacy-mode booting -- You can re-install both 64- and 32-bit versions of Windows using the Compatibility Support Module (CSM), which lets the computer boot in the old BIOS manner. BIOS-mode booting enables (indeed, requires for 32- and 64-bit OSes) switching from one CPU bit depth to another, so you can mix and match as you desire. This will require understanding how to control the CSM, though. This page of mine may be helpful, although it's written for Linux users who want to dual-boot Windows and Linux and who run into problems with the CSM, not for people who want to dual-boot different versions of Windows that require use of the CSM. It may be possible to convert your current Windows installation to boot in BIOS mode by using the opposite of this procedure, but I can make no promises of that, and I can't really offer much help on adapting the procedure, except to point out this method of doing the disk partition table conversion.
  • Boot 32-bit Windows in BIOS mode from a GPT disk -- Booting in this way is possible from most OSes, but Windows makes it hard. I'd have said "impossible" not too long ago, but I ran across this procedure, which claims to make it possible; but I've never tried this myself and so I can't promise it will work. Also, if you do this you'll need to switch between BIOS mode and EFI mode booting, which can be awkward.
  • Use another computer -- You can obviously use a second computer to test your 32-bit software builds, at least in theory. You'll need the second computer, though, which may require money, space, etc.
  • Find a boot loader that supports 64-bit to 32-bit booting -- In theory, an appropriately-written EFI boot loader can load a 32-bit kernel on a 64-bit EFI, or vice-versa. GRUB can do this for Linux and macOS's boot loader can do it, too. I know of no boot loader that can do this for Windows, but it is at least theoretically possible. If you were skilled enough you might be able to write such a boot loader yourself. Maybe the old XOM boot loader could be adapted to work for your needs, but that's a long shot.

Which solution works best for you depends on your specific needs and capabilities.

Share:
5,399

Related videos on Youtube

Elmue
Author by

Elmue

Updated on September 18, 2022

Comments

  • Elmue
    Elmue over 1 year

    I have a hp notebook (HP 240 G5 with an Intel Core i3-5005U CPU) with a preinstalled 64 bit Windows 10 Home Single Language.

    For testing my software I need to install additionally a 32 bit Windows 10 on that machine.

    I created a new partition "Win32" where I want to install the 32 bit Windows 10:

    Paritions

    The existing partitions are GPT, so I need to install the new image via UEFI. Legacy BIOS mode is useless as it requires MBR partitions.

    I used the Microsoft download tool (MediaCreationTool.exe) to download the latest 32 bit Windows 10:

    Download Windows 10

    I get an ISO image of 2.836.660.224 bytes which is NTFS formatted.

    I use Rufus to copy it on a USB stick:

    Rufus

    I turned off Secure Boot and changed the boot order:

    UEFI Settings

    But when I try to boot from the USB stick it does not appear in the menu:

    Boot Menu

    It does not matter if I copy the ISO image to a USB stick or to a DVD. The result is the same.

    When I select "OS Boot Manager" the Windows on harddisk is started.

    When I select "Boot from EFI file" I get this menu where I chose the USB stick:

    Boot from EFI file

    And then a menu with 3 files is shown. The strange thing is that the BIOS shows me files that do not exist on the USB stick. The only existing file in the ISO image is \efi\boot\bootia32.efi

    Boot from EFI file

    No matter which option I select in this menu, I get the same error:

    Boot from EFI file

    Obviously, because the file bootx64.efi does in deed not exist. But I also get this error after selecting the file bootia32.efi. Very weird!

    Then I thought: 'Ok I will simply copy this missing file from the 64 bit Windows 10 Installation DVD.' And in deed the above error disappears. But a few seconds later I get an error C0000359:

    Error C0000359

    Then I downloaded the ISO image for installing both: 32 and 64 bit.

    MediaCreationTool

    The ISO file has a size of 6,5 GB! (I remember installing Windows 3.1 from 15 diskettes). When booting there is no option in the menu to chose booting from USB stick. Again I chose the EFI file manually:

    bootmgr.efi

    And then in deed I get the expected menu:

    Install Windows 10

    but no luck:

    Error C0000359


    The interesting thing is that I have another ISO image with ONLY the 64 bit version of Windows 10 and I get the correct boot menu:

    Boot Menu

    When I proceed, the installation continues normally and I get the screen where I can chose the partitions.

    Isn't that strange? The 64 bit-only ISO is functioning correctly while the 32+64 bit ISO is failing.

    So what is wrong here? One of three ISO files runs and the other two fail.

    I have read that the Intel Core i3 processor should be capable to run a 32 bit or 64 bit operating system.

  • Rod Smith
    Rod Smith about 7 years
    You've provided some good background here, but there is one correction: A traditional BIOS, and therefore also an EFI's CSM, is actually 16-bit, not 32-bit. The BIOS goes all the way back to the days of MS-DOS and PC-DOS in the 1980s, so BIOS boot loaders are written in 16-bit 8086 assembly language. (Some, like GRUB, add C or other high-level code, but the core remains 16-bit assembly.) Booting either 32-bit or 64-bit OSes therefore requires changing the CPU's running mode from the 16-bit mode in which it starts. As you say, EFI was designed to stick in one bit depth all the way through.
  • Ramhound
    Ramhound about 7 years
    @Elmue - The OEM recovery partition, you already have this, its called the Windows 10 installation disk. You can download drivers manually you don't need the OEM recovery partition.
  • Akeo
    Akeo about 7 years
    You're right, Rod, and I should know better since I actually wrote a guide on how to craft BIOS from scratch... It doesn't matter that much in this context though, since the issue that Microsoft only provide bootloaders that handle switching from 16-bit to 32-bit or 64-bit for BIOS, but not from 64-bit to 32-bit for UEFI.