Well, I now have an important update!
I've made something of a breakthrough since my last post earlier to-day, which deserves a new post I think.
Not an actual fix I'm afraid, but I'm a lot nearer to understanding (I think) what's happening here.
I was wondering, if you remember, whether the size of my registry files was an issue.
My SYSTEM file, which is the file mentioned in the error message, is 9.26MB.
Having had similar issues with registry size in Windows 98 (here
if anyone's interested) I wondered if this could be a similar issue.
I also read on the MS Knowledge Base that Windows 2000 only has 16MB of memory available while it's booting up.
So, I did an experiment.
I backed up my registry, and then substituted the SYSTEM file in D:\WIN-NT\System32\Config with the much smaller SYSTEM file in D:\WIN-NT\Repair. That file is only 2.77MB instead of 9.26MB.
I then installed the XP NTLDR and NTDETECT.COM files which Ascii2 kindly provided.
The system booted without the error message!
The "Starting Windows" bar didn't appear at all, and the progress bar on the splash screen was much faster in completing.
Then it went wrong.
It got as far as displaying the GUI background, but before the "Preparing Network Connections" message came up, the system just rebooted.
I tried again with the same result.
I then put the original SYSTEM file back, and tried again.
I then put all the registry files back from their backups.
Strangely, the system file was always reverting to the smaller version.
There is a SYSTEM.ALT file in the folder, and it's possible it was reverting to that.
I got the system up and running again by replacing the registry backups again, and the original startup files.
Then everything returned to normal.
So, I'm pretty convinced that the problem is being caused by the SYSTEM file being too large.
That almost certainly explains why simple later version startup file substitution works on some systems and not on others. It only works if the registry, or probably more specifically the SYSTEM file, is below a certain size.
I assume that the loader is trying to fit the registry into memory on boot, and basically it's too big to fit into the limited memory then available. The 2000 loader possibly doesn't do this, which may be one of the reasons that it's slower.
There must be more to it than that of course, or Windows XP installations would fail to boot if the registry got too big, but I'm sure that's the gist of the problem.
The smaller SYSTEM file I have in the Repair folder is I believe the one that was backed up when Windows 2000 was last installed. It is from October 2007, which would make sense as I did have to do a repair install not very long ago, and that was probably it.
Unfortunately it looks as if that file is not up to date enough now to start the system.
So, what I need to do is get the size of my existing registry down!
I've tried a compacter program on it, but that said that there was only 4% fragmentation, and made little difference.
The SOFTWARE file is huge, 36.3MB, but I'm hoping that it's only the SYSTEM file that I have to worry about.
So, what's stored in that file, and how can I go about reducing it?
I assume that it contains the stuff in the "System" hive.
I have three "ControlSets" as well as the "Current" one.
Is that really necessary as they seem to be rather a lot of data.
Can I somehow lose one or two of them without disaster?
Any more help greatly appreciated.
I feel I'm on the verge of finally cracking this now!