Y
Yann Blue
Hi,
For specific needs, I have to make my own bootloader to boot a SDI
image.
I used the white paper "RAM Boot Using SDI in Windows XP Embedded with
Service Pack 1" from Saad Syed.
Everything seems to work correctly until jumping to 07c00h adress to
run startrom.com, at this point, the system hangs with the following
text:
Press F12 for network service boot.
Details:
--------
I begin with a SDI file tested with the classic Remote Boot procedure
(download of startrom.n12, download of sdi image, progress bar,
booting...). I add the BOOT and LOAD parts as suggested in the white
paper. At last, I pack it. When I run sdimgr on the final image, I get
the following result:
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:\image.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
PART 0x00000000.00007000 0x00000000.0F324000 0x00000000.00000007
0x00000000
LOAD 0x00000000.0F32B000 0x00000000.00034400 0x00000000.00000000
0x00000000
My bootloader downloads this sdi image in high memory (above 0200000h
as suggested somewhere in this forum because of NTLDR cloberring),
then I copy the boot code (from offset 01000h and size of 05EC2h) at
07c00h.
In real mode, before jumping to 07c00h, I prepare esp and ss:
mov ax,30
mov ss,ax
mov esp,0100h
I put the SDI header address in edx and jump to 07c00h, but the system
is not loading, instead, the system hangs with the text 'Press F12 for
network service boot.". There is a cursor on the following line.
(Pressing F12 does nothing).
Does someone have an idea what I made wrong ? I really need this to
work but can't find the issue.
P.S:
- If I use reboot.com instead of startrom.com, the system unload pxe
and reboots normally.
- The initial sdi image (before adding BOOT and LOAD PART) works fine
with the same system and classic Remote Boot.
- I get the same result if I put a false SDI address in edx before
jumping to 07c00h, so I don't think startrom.com comes to this point ?
Thanks in advance for your help.
Y. Blue
For specific needs, I have to make my own bootloader to boot a SDI
image.
I used the white paper "RAM Boot Using SDI in Windows XP Embedded with
Service Pack 1" from Saad Syed.
Everything seems to work correctly until jumping to 07c00h adress to
run startrom.com, at this point, the system hangs with the following
text:
Press F12 for network service boot.
Details:
--------
I begin with a SDI file tested with the classic Remote Boot procedure
(download of startrom.n12, download of sdi image, progress bar,
booting...). I add the BOOT and LOAD parts as suggested in the white
paper. At last, I pack it. When I run sdimgr on the final image, I get
the following result:
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:\image.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
PART 0x00000000.00007000 0x00000000.0F324000 0x00000000.00000007
0x00000000
LOAD 0x00000000.0F32B000 0x00000000.00034400 0x00000000.00000000
0x00000000
My bootloader downloads this sdi image in high memory (above 0200000h
as suggested somewhere in this forum because of NTLDR cloberring),
then I copy the boot code (from offset 01000h and size of 05EC2h) at
07c00h.
In real mode, before jumping to 07c00h, I prepare esp and ss:
mov ax,30
mov ss,ax
mov esp,0100h
I put the SDI header address in edx and jump to 07c00h, but the system
is not loading, instead, the system hangs with the text 'Press F12 for
network service boot.". There is a cursor on the following line.
(Pressing F12 does nothing).
Does someone have an idea what I made wrong ? I really need this to
work but can't find the issue.
P.S:
- If I use reboot.com instead of startrom.com, the system unload pxe
and reboots normally.
- The initial sdi image (before adding BOOT and LOAD PART) works fine
with the same system and classic Remote Boot.
- I get the same result if I put a false SDI address in edx before
jumping to 07c00h, so I don't think startrom.com comes to this point ?
Thanks in advance for your help.
Y. Blue