• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1		       SDI files
2
3
4Syslinux supports SDI files ( *.sdi ).
5
6Features:
7 * Support for gzipped SDI images
8 * When used with gpxelinux.0, images can be downloaded by HTTP or FTP,
9   leading to fastest boot times.
10
11"System Deployment Image" is a file format created by Microsoft and mostly used
12in its products to provide in a single file a boot loader, an OS loader
13(like NTLDR) and a disk or partition image to boot from it without any
14other installed program. This is typically used in a PXE environment to boot
15embedded Windows versions without boot disk support.
16
17The support of SDI images in Syslinux is based on a white
18paper from Saad Syed. You can find the paper here:
19
20http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/ram_sdi.asp
21
22SDI support has been only been tested with SDI v1.0 with Windows XP Embedded
23images and may not work with later versions or alternative uses.
24
25
26   ++++ Supported SDI images ++++
27
28To make a SDI image supported by pxelinux/isolinux/syslinux, you need to
29follow the steps below (detailed instructions are in the white paper
30cited above):
31
32You need to install "Windows Embedded Studio" and to run the
33"Remote Boot Service Setup".
34
351) Create a new SDI file (eg: sdimgr /new xpe.sdi).
36
372) Before importing your target partition, add the following files
38in the root folder:
39	* ntdetect.com
40	* boot.ini
41	Its content should be:
42		[boot loader]
43		  default=ramdisk(0)\WINDOWS
44		  [operating systems]
45		  ramdisk(0)\WINDOWS="Windows XPE  From RAM" /fastdetect
46(you can customize the name and add options like /debug)
47
48Note: Your partition may be compressed (using compressed NTFS), but these two
49files need to be uncompressed.
50
513) Import the partition in the SDI file (eg: sdimgr xpe.sdi /readpart:D:).
52The size of the partition must be less than 500 MB.
53
544) Import the boot program STARTROM.COM
55(eg: sdimgr xpe.sdi /import:BOOT,0,C:\Program Files\Windows Embedded\Remote Boot Service\Downloads\startrom.com)
56
575) Import the nt loader NTLDR in the SDI file
58(eg: sdimgr xpe.sdi /import:LOAD,0,C:\Program Files\Windows Embedded\Remote Boot Service\Downloads\ntldr)
59
60Note: only the version of NTLDR provided by Remote Boot Service Setup
61and located in this directory has been tested. According to
62"http://skolk.livejournal.com/667.html", "osloader.exe" from retail XP
63can also be used to replace this NTLDR version.
64
656) Pack the SDI file (eg: sdimgr xpe.sdi /pack)
66
677) Gzip your image
68If you want to speed the download time, you can gzip the image as it will
69be uncompressed by syslinux during the loading. You can use some programs
70like ntfsclone ("http://www.linux-ntfs.org/doku.php?id=ntfsclone") to
71remove unused blocks from the NTFS filesystem before deploying your image.
72
738) You are now ready to boot your image.
74Unlike the traditional way of using SDI images (startrom.n12), you don't need
75other files than your SDI image in the tftpboot (for pxelinux), the CD
76(for isolinux), or the hard disk for syslinux.
77
78* You can use the usual options of pxelinux/isolinux/syslinux (config file,
79config path, reboot time...)
80
81For example, a simple configuration with pxelinux:
82/tftpboot/xpe.sdi
83/tftpboot/pxelinux.0
84/tftpboot/pxelinux.cfg/default with the following content:
85
86	DEFAULT 0
87	label 0 [WinXpe]
88		KERNEL sdi.c32
89		APPEND xpe.sdi
90
91
92   ++++ Error messages ++++
93
94* No $SDI signature in file
95        A SDI image should begin by a signature "$SDI", the signature has not
96been found in your file. Perhaps your file is corrupted or has not been created
97correctly. Run sdimgr on it to see if everything is correct.
98
99* No BOOT BLOB in image
100        You have to import a boot program (eg: startrom.com) when you make
101your SDI image (see above). The offset of this program in the SDI file
102is in the SDI header (begining of the file). However, the offset
103found in your SDI file is null.
104You probably forgot to include the boot program. Run the sdimgr program
105and look if you see a line like:
106BOOT 0x00000000.00001000 0x00000000.00005EC2...
107                --------
108                This is the
109                offset and
110                should not
111                be null
112
113* BOOT BLOB is empty
114        See above. The size of your boot program included in the SDI
115is null. You probably imported a corrupted version of startrom.com.
116Run sdimgr and check the size in the following line:
117BOOT 0x00000000.00001000 0x00000000.00005EC2...
118                                    --------
119                                    this is the
120                                    size and
121                                    should not
122                                    be null
123
124* BOOT BLOB extends beyond file
125        You have a BOOT BLOB in your SDI file, but its size is invalid
126because its goes beyond the total image size. Check the tools you used
127to build the image file.
128
129* BOOT BLOB too large for memory
130        Your BOOT BLOB seems correct, however there is not enough memory
131to load it. Increase your RAM or reduce the SDI size. This is a very
132abnormal situation as the BOOT BLOB is usually very small. Your SDI
133file might be corrupted.
134
135* Image too large for memory
136        Your SDI file seems correct, however there is not enough memory
137to load it. Increase your RAM or reduce the SDI size.
138
139* SDI header is corrupted
140        Your SDI file seems correct, but its header contains a checksum
141that is invalid. You most likely have a corrupted SDI file.
142
143
144   ++++ Warning messages ++++
145
146* Warning: unknown SDI version
147You are using a newer version of SDI than the one with which this program
148has been tested. It may not work. Please give feedback and provide your
149SDI version.
150