How to switch XP over to winload bootloader?

@diderius6

Regarding your experimental UEFI XP 64-bit image, how did you get XP to switch over to the newer winload bootloader?

@infuscomus
First I thought, this would be very difficult.
But then I noticed, that during UEFI boot, in MBR can be written what ever you want. UEFI does not look into MBR.
So, I just make use of my original XP install on a FAT32 partition with MBR and set it activ.
Onto this C:\ I copy only the folder EFI (Uefi Bios looks only for this name, the bootloader is in this Efi folder, can be from Win8)
and in windows\system32 I copy extra winload.efi, not deleting anything there. Newer Bios let you chose, if you want to boot via MBR and ntldr and boot.ini or via bootx64.efi (for 32 bit bootia32.efi) winload.efi and BCD.
Now I think, it is a big trara about UEFI. It is just Bios without INT10, where you can easy integrate a lot of drivers
Dietmar

@diderius6

Thanks,

should winload.exe for BIOS be used too? or is that unnecessary?

@infuscomus

You can switch between them, but it is not needed.
The interesting thing is, that winload.exe shows the same problems for XP loading
as winload.efi. This means, XP has no problem with UEFI at all.
The problem is in winload.efi (and for legacy Bios boot winload.exe), so I hope for Reactos
Dietmar

I tested 64-bit winload.efi and winload.exe from beta server Longhorn 16497 on VMware and no problem boot WinXP x64:

For legacy mode you need NTFS partition C: with directory structure:
C:\bootmgr
C:\Boot\Fonts\wgl4_boot.ttf
C:\Boot\BCD with path to \WINDOWS\system32\winload.exe
C:\WINDOWS\system32\winload.exe

For UEFI mode you need U: 100MB FAT32 + C: NTFS 5GB for OS files (I set the letter U: from the UEFI name ):
U:\EFI\Boot\bootx64.efi - renamed bootmgfw.efi
U:\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf
U:\EFI\Microsoft\Boot\BCD with path to \WINDOWS\system32\winload.efi
C:\WINDOWS\system32\winload.efi

In BCD you need add option to disable boot logo - in BootICE this is DisableBootDisplay True

While boot OS you need press F8 to display Advanced Boot Options and select Disable Driver Signature Enforcement or disable signature checking in winload.efi 6.0.6001.16497

Unfortunately, on real machines there is an additional problem with video and IRQ INT10 support - the screen goes black or stops with Starting Windows Vista on a green background:

swv.png



You can use the universal graphics driver VBEMP (AnaPa) but then there will be no video acceleration.

Despite this, WinXP boots using the file winload.exe under legacy bios and winload.efi under UEFI bios

Also tested WinXP 32-bit with Vista beta 5219 files on VMware:

For legacy mode:
C:\bootmgr
C:\boot.ini with option /usenewloader
C:\WINDOWS\system32\winload.exe

For UEFI mode U: FAT32 + C: NTFS:
U:\EFI\Boot\bootia32.efi - renamed bootmgfw.efi
U:\boot.ini with option /usenewloader
C:\WINDOWS\system32\winload.efi

P.S. For legacy mode bootmgr+winload.exe you need create a partition using a newer system than WinXP, e.g. diskpart with Vista or 7 so that there is a bootmgr entry in PBR (Partition Boot Record). If you created partitions using the WinXP installer, you can repair the PBR later using the bootrec /fixboot command by booting your computer under WinPE but only running directly from Windows DVD-Media or over wimboot using the boot.wim copied from a DVD (ISO). WinPE from WAIK or ADK not have tool bootrec


WinXP x64 can also be booted in legacy or UEFI using files from Vista beta 5384.4. This version support boot used boot.ini or BCD. For boot.ini you need add options:

/usenewloader /disable_integrity_checks /noguiboot

Unfortunately, the system only starts on VMware. There is a problem with real machines with a black screen and a white bar at the top (the problem also occurs in VirtualBox 5.2.18):

white_bar.png

Because on real machine in legacy mode winload.exe 16497 causes a video problem (Starting Windows Vista is displayed on the screen) we cannot restart the system using ntldr & boot.ini because bootmgr autodetect BCD and use winload.exe

It’s best to use the GRUB4DOS loader with which you can choose how to start Windows in Legacy mode.

  • copy file grldr to partition where is bootmgr
  • rename file bootmgr to bootmgr6
  • rename grldr file to bootmgr
  • make file menu.lst about content:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     

    timeout 5
    default 0
     
    title Boot OS over NTLDR loader (boot.ini, NTDETECT.COM)
    find --set-root /ntldr
    chainloader /ntldr
     
    title Boot OS over BOOTMGR loader (BCD, winload.exe)
    find --set-root /bootmgr6
    chainloader /bootmgr6
     

grldr.zip (149 KB)

I found how disable signature checking in winload.exe 6.0.6001.16497 for legacy boot - disable signature checking in winload.exe 6.0.6001.16497

@Gelip …I know this is an old thread but thanks for information re booting with winload.exe. I have a slightly different problem. I am setting up a system that ran under XP only and I have added another hard drive loaded with W7. The BIOS is older (mobo has an Intel DQ35JO mobo) but it has provisions for UEFI.

W7 has created a system partition without a drive letter and it has its boot files there. Not sure from what you have written if I can mod it to get XP running off UEFI and a dual-boot menu. Does not appear to be a file with an efi extension as with W10.

@gordo999
Add the appropriate entry to the Boot Menu, e.g. using bcfg in UEFI Shell

@Gelip …thanks for reply. In my BIOS, on the Intel DQ35JO, which is an older mobo, there is an option to turn UEFI on or off but no means is supplied to enter a UEFI shell. I would think that with UEFI turned on, they’d supply a shell in BIOS after entering F2 during boot. Nope.

I’ll need to check it out via loading EFI software in my W7 system partition. I am wondering, if after all is said and done, if XP will boot under UEFI with my setup. I also have an option to turn on AHCI but W7 does not seem to want to boot under AHCI.

ps. I think I see the problem. The version of W7 I just loaded has no efi indicated in the system partition. It is using BCD.

@gordo999


Format the USB flash drive in FAT32, create the directory structure EFI\Boot and copy the UEFI Shell file to Boot subfolder renaming it to bootx64.efi
UEFI Shell


There is also one interesting way to disable it. In BCD set winpe yes on needed bootentry

so this only works in virtual machines only and not real physical pc? thx

@Kocoman

If I’m not mistaken, I think @diderius6 has gotten it to work on some real hardware?

Hi,

I am trying to boot Windows XP x64 on UEFI in a VMware Fusion virtual machine, I used the boot files from Windows Server 2008 Beta 3 (I got them from this YT video: Windows XP Professional x64 with UEFI (No CSM) VMware Pro 16 - YouTube), and put them on a separate boot drive. I try to boot it with Driver Signature Enforcement disabled, and it just hangs at “Starting Windows Vista”. How can I fix this?