easyldr can't boot my registry

Ten2k

New Member
#1
Hello, NeoSmart Technologies.
I was trying to unroll my good old Windows 2000 partition image alongside installed Windows 10 x64.
In pursuit of doing this easy way I used EasyBCD to create boot menu item, and your excellent tool has placed in NST folder easyldr loader and made a copy of it named ntldr in root directory.

But when I tried to boot to Windows 2000, it gave me following error message:

Windows could not start because following file is missing or corrupt:
\WINNT\SYSTEM32\CONFIG\SYSTEM

Which I know is not true, becuse it is there and can be loaded in registry editor. But I suspect that I face the same issue as when I installed Windows XP SP3 alongside Windows 2000. XP has replaced ntldr of 2k with its own and then I saw the same error at 2k boot. After some googling I have found that with one of XP Service Packs ntldr was updated and maximal size of registry hive it can load was lowered. Replacing XP SP3's ntldr with 2k SP4's ntldr didn't let me boot XP in its turn. So I had to dig old ntldr from CD with Windows XP without service packs. With that ntldr booting both OS became possible.
My SYSTEM registry hive just suffers on a little overweight (8,16 Mb).

May I ask to address this issue in one of next versions of EasyBCD?
 

mqudsi

Mostly Harmless
Staff member
#2
Hi there!

Interesting error. It's surprising Microsoft *reduced* the supported registry size - usually it's the other way around.
Can you provide a link discussing this change and a copy of the NTLDR that worked out for you?
 

Ten2k

New Member
#3
Discussion where I found this solution isn't any official MS board but place where enthusiasts share their expirience. May happen reduction of allowed size wasn't intentional at all. I'm sorry for inconvenience, but this forum is in Russian. Ошибка - [решено] Не удается запустить Windows - c:\windows\system32\config\system поврежден Post #34 is the description of problem and all posts below till #49 are research and solution . I have uploaded archive containing 3 versions of ntldr so you could analyze the differences. They are slightly renamed to reflect on their loading capabilities. Can't guarantee they all belong to one language version, sorry.
 

Attachments

mqudsi

Mostly Harmless
Staff member
#4
Thank you kindly for this, I'll look into it. I have a Russian colleague who might be able to help.
 

mqudsi

Mostly Harmless
Staff member
#5
After looking into the matter at depth, unfortunately there is no easy solution for you. The problem is with the memory space limitations of the 16-bit loader environment, in which the bootloader, system registry hive, and various boot-time drivers must all fit.

The primary difference between the two NTLDR versions for Windows XP (the one that works for you and the one that doesn't) is their size, not their code. Since the file itself is loaded into the memory, using the larger 245KiB NTLDR versus the smaller 217KiB or 211KiB bootloaders means that there are 28 fewer KiB in which to load the SYSTEM hive, kernel, and drivers. If your SYSTEM hive were just 30KiB larger, you'd have the same problem with the XP RTM NTLDR as well.

The solution here isn't going to be switching from one copy of NTLDR to the other to make it work for the fringe case of a SYSTEM hive that is 30KiB larger, especially because your SYSTEM hive at 8MiB is nowhere near as large as SYSTEM hives can get. Your best bet would be to 1) look into which extraneous and unnecessary boot-time drivers can be disabled, and 2) defragment/minify your SYSTEM hive by exporting it regedit to another file, then re-importing it into a new hive and replacing the original SYSTEM hive (in C:\Windows\config) with the newly-exported one which will save you a few MiB in size.
 
#6
Thank you very much for this detailed and informative answer!
For the time being I have created boot menu entry with bcdedit together with copying of boot files from Windows 2000 partition and editing of boot.ini file, so both operation systems can boot.
I have followed your advices too. First I have used NTREGOPT by Lars Hederer which helped me shrink SYSTEM hive to 7,43Mb. Then I have loaded this SYSTEM hive into regedit under Windows 10 and exported it, which reduced its size by another 0,42Mb.
I have a feeling that 7,01Mb is still too big size, but now thanks to your expert explanation I know it is a matter of technological limitations of legacy Windows boot system.
Thank you once again!