Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RAM Boot using SDI problem - getting 'SDI image format Corrupt' error

208 views
Skip to first unread message

Varinder Singh

unread,
Jun 11, 2003, 12:26:26 PM6/11/03
to
Hi all,
I am trying to 'RAM Boot using SDI' as per the instructions
given in the microsoft docs. For this I have created a Custom Boot
Loader which,
1. Boots up the system,
2. locates the SDI image on the FAT drive (the SDI image is about
66MB in size)
3. Loads this SDI Image into RAM from location 4MB onwards (the
Machine has 256MB of total RAM, Do I need to copy the SDI to a much
higher location ???? )
4. Copies the Boot Blob from the SDI Image to 0000:7c00h,
5 sets EDX to 0400000h (4MB) ORed with 041h as described in the
doc
6. and finally jumps to 0000:7c00h.

Till here everything is working fine.. I have checked and double
checked to confirm that the SDI image is being copied properly into
the RAM etc.

But after the 6th step, instead of booting into WinXPE, I get a
message "SDI image format Corrupt'

I had created the SDI image in the following way
1. sdimgr /new xpeimage.sdi
2. sdimgr xpeimage.sdi /import:BOOT,0,startrom.com
3. sdimgr xpeimage.sdi /import:LOAD,0,ntldr
4. sdimgr xpeimage.sdi /readpart:i:
5. sdimgr xpeimage.sdi /pack

Running 'sdimgr xpeimage.sdi', I get the following response

---------------------------------------------------------------------------------------------------------------------------------
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

SDI File Manager version 1.00.621
Copyright (C) 1999-2001 Microsoft Corp. All Rights Reserved.

SDI File : C:\sdi\xpeimage.sdi
MDB Type : ---
Boot Code Offset : 0x00000000.00001000
Boot Code Size : 0x00000000.00005EC2
Vendor ID : 0x0000 (0)
Device ID : 0x0000 (0)
Device Model : {00000000-0000-0000-0000-000000000000}
Device Role : 0
Runtime GUID : {00000000-0000-0000-0000-000000000000}
Runtime OEM Rev : 0
Page Alignment : 1 (4096 bytes)

Type Offset Size Base Address Attr
---- ------------------- ------------------- -------------------
----------
BOOT 0x00000000.00001000 0x00000000.00005EC2 0x00000000.00000000
0x00000000
LOAD 0x00000000.00007000 0x00000000.00034400 0x00000000.00000000
0x00000000
PART 0x00000000.0003C000 0x00000000.03EB9200 0x00000000.00000007
0x00000000
----------------------------------------------------------------------------------------------------------------------------------------

I had earlier tried creating the SDI with
1. sdimgr /new xpeimage.sdi
2. sdimgr xpeimage.sdi /readpart:i:
3. sdimgr xpeimage.sdi /import:BOOT,0,startrom.com
4. sdimgr xpeimage.sdi /import:LOAD,0,ntldr
5. sdimgr xpeimage.sdi /pack

i.e. reading the partition before importing BOOT and LOAD but in that
case the command 'sdimgr xpeimage.sdi' showed

..
Type Offset Size Base Address Attr
---- ------------------- ------------------- -------------------
----------
BOOT ............
PART ............
LOAD ..........
..
....

but in any case neither of these images work. I am using the
bootrom.com and ntldr from the \program files\windows Embedded\Remote
boot service\downloads directory

and YES the XPE image is post-fba , sealed image .
I have included the following extras into the XPE Image
1. Compression and Expansion tools
2. Enhanced Write Filter
3. EWF NTLDR
4. Minlogon with command shell
5. NTFS, UDFS, FAT
6. Misc Command Line utils
7. System Cloning Tool
8. Windows RAM Disk Driver


Now I am stuck, as I don't know what else to do and check

Am I missing any step??

Is there any way to check whether the IMAGE is corrupt or not.

Any suggestions


Thanks in Advance

Vairi

Saad Syed [MS]

unread,
Jun 11, 2003, 2:19:29 AM6/11/03
to
Varinder,

You don't have to go through that procedure if you want to RAM boot an SDI
off a hard disk. NTLDR already supports booting off a RAMDISK, even if it
comes off a hardisk. These are the steps you should follow:

1. Prepare the SDI as mentioned without the BOOT and LOAD blob. The SDI
should only have the PART blob, which contains the post FBA volume image.
2. Use SDI Manager (sdimgr.wsf) to determine the offset of the PART blob.
Typically its 4096 if the PART blob is the first in the SDI. You'll use this
offset with the /RDIMAGEOFFSET switch.
3. Copy this SDI and NTLDR, boot.ini from your original image to a bootable
partition on the hard disk. Do not use the NTLDR from the Remote Boot
downloads directory.
4. Edit boot.ini to add this entry in the [operating systems] section.

ramdisk(0)\windows="Windows XP Embedded from RAM" /fastdetect
/rdpath=multi(0)disk(0)rdisk(0)partition(1)\yourimage.sdi
/rdimageoffset=4096

Modify the arcpath in /RDPATH as appropriate.

To answer your original question you get the 'SDI image format Corrupt'
error when startrom.com is unable to find the SDI header at the given
address. You might want to move the SDI higher in memory. It is possible the
its being clobbered. But since there is already an easier, much simpler
solution already available, you really shouldn't put more time and effort in
trying to figure that out.

Thanks,
- Saad, MS

This posting is provided "AS IS" with no warranties, and confers no
rights.
"Varinder Singh" <va...@vvv.com> wrote in message
news:06keevcf49tvm7ndn...@4ax.com...

Saad Syed [MS]

unread,
Jun 16, 2003, 2:40:28 AM6/16/03
to
Aah, I forgot to mention ntdetect.com. Copy ntdetect.com to the boot
partition. So now you'll have the following files:
1. NTLDR
2. justpart.sdi
3. boot.ini
4. ntdetect.com


Thanks,
- Saad, MS

This posting is provided "AS IS" with no warranties, and confers no rights.

"Varinder Singh" <va...@vvv.com> wrote in message

news:es6tevg08rh05r5in...@4ax.com...
> Hello Saad,
> Thanks for the reply. I tried to boot up the Image only also
> as described by you but I a getting a "NTDETECT Failed" error on
> booting. I am doing the following:
> 1. Created a SDI using Post FBA volume Image using :
> a. sdimgr /new justpart.sdi
> b. sdimgr justpart.sdi /readpart:i:
> c. sdimgr justpart.sdi /pack
> 2. Made a bootable NTFS partition on a seperate disk and copied the
> above SDI (justpart.sdi) to it. Copied NTLDR and boot.ini from the
> Post FBA Image to the bootable partition. The size of NTLDR is 285865
> bytes.
> 3. Edited the Boot.ini to :
> [boot loader]
> timeout=0
> default=ramdisk(0)\WINDOWS
> [operating systems]
> ramdisk(0)\WINDOWS="Windows XP Embedded RAM" /fastdetect
> /rdpath=multi(0)disk(0)rdisk(0)partition(1)\justpart.sdi
> /rdimageoffset=4096
>
> but on booting the system (with just this drive plugged in,) I get the
> "NTDETECT Failed" Error
>
> I also tried with Boot.ini as :
> [boot loader]
> timeout=0
> default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
> [operating systems]
> ramdisk(0)\WINDOWS="Windows XP Embedded RAM" /fastdetect
> /rdpath=multi(0)disk(0)rdisk(0)partition(1)\justpart.sdi
> /rdimageoffset=4096
>
> but I get the same message. I had checked that this image is working
> fine and booting properly
> (I tried on FAT partition prepared using Bootprep)
>
> Any Ideas!!.
>
> --------------------------
>
> For the Original question, well I need to ultimately use that solution
> i.e. using BOOT, LOAD and PART sections with a custom boot loader for
> security reasons. I am planning to encrypt the Image and then decrypt
> it to high RAM on bootup with my Boot Loader and booting the system.
>
>
> After checking my code for error and correcting them I am now getting
> "Press F12 for network service boot" message, and then the computer
> just hangs... I am now loading the Image to High RAM at location
> 0xA400000 onwards,
>
> any suggestions regarding this
>
> Thanks a lot for you help
>
>
> Varinder Singh

Varinder Singh

unread,
Jun 16, 2003, 6:04:57 PM6/16/03
to
Hello Saad,
After trying as per your instructions I am now getting the
following error message :
" Windows could not start because of a computer disk hardware
configuration problem.
Could not read from the selected boot disk. Check boot path and disk
hardware.
Please check the Windows documentation about hardware disk
configuration and your hardware reference manuals for
additional information."

My boot.ini is :


[boot loader]
timeout=0
default=ramdisk(0)\WINDOWS
[operating systems]

ramdisk(0)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect
/rdpath=multi(0)disk(0)rdisk(0)partition(1)\justpart.sdi
/rdimageoffset=4096

My boot harddisk is connected as Primary Master and it has a single
FAT partition of 1GB, prepared using Bootprep (I tried the same with
1GB NTFS parition, but with same results)


Any Help would be greatly appreciated!!

Thanks

Varinder Singh


On Sun, 15 Jun 2003 23:40:28 -0700, "Saad Syed [MS]"

Saad Syed [MS]

unread,
Jun 17, 2003, 1:02:03 AM6/17/03
to
How big is the RAMDISK image?
How much RAM do you've in the system?
Can you paste me the output of sdimgr.wsf justpart.sdi?
Do you see the RAMDISK progress bar?

Thanks,
- Saad, MS

This posting is provided "AS IS" with no warranties, and confers no rights.

"Varinder Singh" <va...@vvv.com> wrote in message

news:gbfsevkcbvl7p9sc9...@4ax.com...

Varinder Singh

unread,
Jun 17, 2003, 2:33:20 AM6/17/03
to
Hello Saad,
a. my justpart.sdi image is 65,774,080 bytes in size
b. I have 256MB of RAM in my system
c. The Output of sdimgr justpart.sdi is :

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

SDI File Manager version 1.00.621
Copyright (C) 1999-2001 Microsoft Corp. All Rights Reserved.

SDI File : C:\sdi\justpart.sdi
MDB Type : ---
Boot Code Offset : 0x00000000.00000000
Boot Code Size : 0x00000000.00000000


Vendor ID : 0x0000 (0)
Device ID : 0x0000 (0)
Device Model : {00000000-0000-0000-0000-000000000000}
Device Role : 0
Runtime GUID : {00000000-0000-0000-0000-000000000000}
Runtime OEM Rev : 0
Page Alignment : 1 (4096 bytes)

Type Offset Size Base Address Attr
---- ------------------- ------------------- -------------------
----------

PART 0x00000000.00001000 0x00000000.03EB9200 0x00000000.00000006
0x00000000

d. and No I do not see the RAMDISK progress bar, I get this error
message immediately on booting

Thanks

Varinder Singh

-------------------------------------------------------------------------------------------------------------------------------------------

On Mon, 16 Jun 2003 22:02:03 -0700, "Saad Syed [MS]"

Saad Syed [MS]

unread,
Jun 18, 2003, 1:35:13 AM6/18/03
to
Varinder,

The /rdpath and /rdimageoffset switch need to be on the same line as
"ramdisk(0)\windows....". The only reason you would see that error is if
NTLDR wasn't able to access ramdisk(0). Ramdisk(0) is inaccessible if
/rdpath option is missing, or the sdi specified by the /rdpath option in
missing. Please ensure your boot.ini looks like the following.

[boot loader]
timeout=0
default=ramdisk(0)\WINDOWS
[operating systems]
ramdisk(0)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect
/rdpath=multi(0)disk(0)rdisk(0)partition(1)\justpart.sdi /rdimageoffset=4096

The email client might wrap /rdpath ......... etc to the next line but they
actually need to be on the same line. And please continue on another thread,
this one is getting pretty hard to track :)

Thanks,
- Saad, MS

This posting is provided "AS IS" with no warranties, and confers no rights.

"Varinder Singh" <va...@vvv.com> wrote in message

news:c7dtevs53lhf26mqk...@4ax.com...

Varinder Singh

unread,
Jun 18, 2003, 6:33:46 PM6/18/03
to
Hello Saad,
Thanks for your help. I have succeeded in booting my system
using RAMDisk. You were right, I had given the /rdpath and
/rdimageoffset switches on seperate lines in Boot.ini and after
putting them in a single line, it is now working perfectly :-)

Most importantly, I have also succeded in getting my System to
boot using a Custom Boot Loader with RAMDisk, which was my original
requirement, and which I will most probably use. :-)) I am now
loading the BootImage at Location A400000 onwards.

Thanks for all the help.

Varinder Singh

On Tue, 17 Jun 2003 22:35:13 -0700, "Saad Syed [MS]"
<saad...@online.microsoft.com> wrote:

>Varinder,
>

0 new messages