First of all in my first post here let me congratulate all of you on building such an extensive body of knowledge related to the Windows boot process. The amount of quality information here is really astonishing!
What I am trying to do is coerce a 13" Macbook Air Early 2015 into booting Windows 7. Apple specifically says W7 is not supported but cannot hurt trying (They recommend using W8 or W8.1 which do install work just fine.) This is their first firmware that does not have BIOS emulation / CSM mode available, and both the standard boot manager as well as rEFInd only show EFI-compatible bootloaders. W7 UEFI installer immediately goes into a blank screen but (long story short) I did get a UEFI-compatible W7 installed / imaged on the HDD and apropriate entries added to the BCD. However, like the installer, it will not boot, going straight into a blank screen and hanging there forever once W7 is selected in rEFInd.
Avenue One
Knowing that (1) Windows 8 works just fine and that (2) the hang seems to occur early on, I hoped that "simply" replacing a known-good winload.efi with one from W8 would get me started. Since its job is to mostly initialize hardware and then run ntoskrnl.exe I hoped this should not be too bad. Alas, my W7 install with winload.efi from W8 seems to get a little further: it displays a message that ntoskrnl.exe's signature could not be verified and allows me to go back to the F8 menu. Just for kicks I then replaced ntoskrnl.exe as well as its dependencies (BOOTVID.DLL, hal.dll and kdcom.dll) but got a crash soon after.
Do not yet know enough about the interplay between winload.efi and ntoskrnl.exe to judge if disabling signature verification is all I need to do or that there is so much communication between the two that they're utterly incompatible beyond surface-level hackery.
Avenue Two
Try to debug the boot process and see where it hangs. However, (1) Air does not have a serial port, (2) I do not yet have the required NET20DC debug cable, and (3) someone recently did not have much luck debugging even bootmgfw.efi with serial so I'm not sure I'm going to have much luck debugging a later-in-the-process EFI program with USB.
Summary
I do have programming experience but this is way more low-level than I have ever tried. Also, do have IDA but do not know what to look for yet, especially lacking the symbol files. Will thus be grateful if any of you could point me in the right direction.
- Do you think I should chase forcing W8's winload.efi to work with W7 or will I be better off looking for that USB debug cable already?
- Is there some way I can learn — without a debug cable — at what step is W7 hanging to make sure it's winload.efi and not ntoskrnl.exe that is the root of the problem?
- Looking at all this and knowing much more than I do, what likelihood would you guesstimate there is of making this to a successful end?
(Final remarks:
- I did have a cursory search here as well as on Google but came back empty-handed. There are many threads on Air+W7 but all of them immediately conclude "not supposed to be done, sorry”.
- No, I'd much rather spend a few days making it run natively than use a virtual machine.)