In summary, I’m looking for a way to have one image, but support 2 HALs.
We have a disk image that we want to use on two different motherboards. Because the systems are controlled by us, the disk image would be exactly the same except for a different HAL.DLL. The one motherboard uses the standard HAL.DLL, and the other uses the ACPI one HALACPI.DLL.
I know all the docs say not to do this, but…
The reason for this is that this is an embedded product and we recently moved from one motherboard to another, so we don’t want to have to have the field upgrade to a different image (which would be exactly the same except for the HAL) as they need to RMA motherboards (they’d want to keep their disks since it has their information on it). We don’t want them to have to care about the “innerds” of the system. And of course we don’t want to have to put together another nearly-identical image from scratch, which opens up the possibility of making an error, having to QA two images, stocking two images, applying fixes to two images, and so on.
There are a variety of reasons why we don’t want to use sysprep and the ilk.
Booting on the ACPI system with the standard HAL.DLL actually works pretty well – until the system goes idle for a period, and then it crashes in a freaky way (crashes inside HalBeginSystemInterrupt).
We’ve also tried setting the BIOS to disable ACPI, but that crashes as well, so I suspect that Windows is ignoring the BIOS setting and re-enabling.
And of course we tried just replacing HAL.DLL with the right one (while the disk was off-line). (Surprisingly, the file wasn’t in the DLLCACHE.) But then it crashed with a 0x7B. That implies that there’s more to change than just the HAL.DLL. That begs the question of what else changes other than HAL.DLL?
What surprised me is that throughout all the testing, I never saw the HAL_MISMATCH bluescreen. If not for this, then what is the purpose of that stop code?
It seems to be there has to be a way that we can just swap HALs semi-easily.
Help?
(Thanks.)