SDI larger than 500MB

D

Dietmar

Hi all,
now I have holidays and I try to solve the problem to boot from SDI image
larger than 500 MB.
I changed the ramdisk.sys driver from XPE to that from 2003ServerSP1 and
SDI images smaller or equal to 500 MB boot fine. I also changed the ntldr
but always the same resultat with an SDI image with more than 500MB:

"Windows could not start due to an error while booting from a RAMDISK.
Windows failed to open the RAMDISK image."

If You cut the end of the sdi image with an hexeditor so that it is
smaller than 500MB, all works fine again.
And so I think: It may be NOT the fault of the ramdisk.sys driver nor of
the ntldr. I think, it may be quite simple: The SDI image is loaded as
high as possible. But when it is larger than 500MB, the image wasnt
relocized to lower memory, so that there is simply not enough memory
above, no matter how much memory is installed.
So it must be possible for a test, to load the SDI image a bit lower in
high memory and take a 510MB SDI file for example. My problem is, that I
am no able to relozice the SDI image.

Nice to hear from You
Dietmar
 
A

Andy Allred [MS]

Hi Dietmar,
This is a limitation of the loader, not the driver and not SDI.

Sorry.

-andy
 
D

Dietmar

Hi Andy,
if You are shure, that the 500MB limitation of a SDI image is only the
fault of ntldr, it must be possible to boot larger SDI images with the
bootloader from Saad, that one from Slobodan or with Syslinux or a patched
ntldr using the same ramdisk.sys in the large SDI image?

I will give them a try.

Thank You very much
Dietmar
 
D

Dietmar

Hi all,

does anybody know, WHERE the SDI image is stored in ram by ntldr? If it is
not as high as possible, is there perhaps a chance to mask the size of the
SDI image to ntldr? Lets say, ntldr thinks it is 500MB, but for real the
SDI image is 1000MB?

Thanks
Dietmar
 
S

Slobodan Brcin \(eMVP\)

Hi,

I thought that I was clear fwe months ago in regards to this topic.

1. ntldr do not support loading of such huge file. But you can make easily small code following Saad article and my code as
reference that will load file of any size to memory.
2. 32 bit address system and pointers mean that in some theoretical case you have max 4GB of adresable memory without need of
paging. In real life it is much less then 4 GB because adress space is not used only for RAM but it is used for other hardware
components as well.
3. ntldr should be aware how to access critical boot files in this big memory. Since it might not be aware of this you will have to
figure our all boot critical files and drivers (not too many) and to realocate them close to begining of SDi file (disk).
4. ramdisk driver do not use paging. And virtual kernel mode adress space used by all drivers and hardware is limited to 2GB (31
bit) so you will need to write some paging capable ramdisk driver that also support boot as second option.

Regards,
Slobodan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top