Macintel Articles @ NeoSmart:
What’s wrong with us!? With me? Windows was my first OS, yet it never crossed my mind to modify Windows to work on EFI? Instead I’ve been taking the super-long, weary, and winding road of getting an iMac to become BIOS compatible. Well, I’m back on familiar terrain, modding XP is where I think I can make it work. Instead of using BIOS emulators or chain-bootloaders and what not, how about just making XP run on EFI? What is NTLDR??
To put it real simple, the NTLDR is activated by the BIOS in order to boot an NT-based OS. NT based OSes include Windows XP, our current focus. NTLDR requires a bootsector in the MBR. EFI requires that a null MBR exist, so using fixntfs as highlighted in my previous post activates the MBR, and allows the booting of XP. After you activate NTLDR, ntdetect.com is run, which gathers hardware information and creates the low-level hardware information layer, which in turn is where Windows XP sends its BIOS-related commands! From Wikipedia:
NTLDR runs ntdetect.com, which gathers information about the computer’s hardware (if ntdetect hangs during hardware detection there is a debug version called ntdetect.chk which can be found on Microsoft support […] Starts ntoskrnl.exe, passing to it the information returned by ntdetect.com.
All of these are low-level system programs. The *likelihood* of them being compiled for access only on x64 platforms is very low. What this means is, if you can get NTLDR and ntdetect.com from an x64 machine, you might be able to replace the original XP x86 files with these. Why would you want to do that? Well, ntoskernel.exe is the actual “Windows” so to speak.
Unfortunately the kernel used in x64 is NT version 5.2 while XP uses 5.1. Either way, ntoskernel.exe on x64 is compiled strictly for x64, it won’t run on x86 systems. The way I see it, if you use NTLDR and ntdetect.com from a x64 machine instead of the ones on your x86 copy it should work to let Windows XP not BSOD!! BTW, further proof that they will run and not hang is that on a system with dual boot x64 and x86 (a PC, not a Mac), these files are used by x86 as well.
What this all adds up to is, the NTLDR and ntdetect.com on x64 have EFI compatibility, and they run on x86 too! If you use these steps together with my previsou “outline” of getting XP to boot on a Macintel, you might just be getting somewhere.