path: root/doc
diff options
authorRemi Lefevre <rlefevre@gmail.com>2008-09-10 01:17:57 +0200
committerH. Peter Anvin <hpa@zytor.com>2008-09-09 16:22:35 -0700
commit782eea2441d4d7d6037defd4f1a49f8552933df1 (patch)
tree200230c249780dff66a5a8c7e76def8b6f67ba5e /doc
parent021bcdcdb706916cc063bf43f0b1206e13133014 (diff)
Add basic documentation to SDI images boot
I adapted it from my patch documentation. Errors and warnings have been modified, as well as configuration (sdi.c32) and some minor modifications following discussions. Signed-off-by: Remi Lefevre <rlefevre@gmail.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'doc')
1 files changed, 148 insertions, 0 deletions
diff --git a/doc/sdi.txt b/doc/sdi.txt
new file mode 100644
index 00000000..4bc8bcdc
--- /dev/null
+++ b/doc/sdi.txt
@@ -0,0 +1,148 @@
+ SDI files
+PXELINUX, ISOLINUX and SYSLINUX support SDI files ( *.sdi ).
+ * Support for gzipped SDI images
+ * When used with gpxelinux.0, images can be downloaded by HTTP or FTP,
+ leading to fastest boot times.
+"System Deployment Image" is a file format created by Microsoft and mostly used
+in its products to provide in a single file a boot loader, an OS loader
+(like NTLDR) and a disk or partition image to boot from it without any
+other installed program. This is typically used in a PXE environment to boot
+embedded Windows versions without boot disk support.
+The support of SDI images in Syslinux is based on a white
+paper from Saad Syed. You can find the paper here:
+SDI support has been only been tested with SDI v1.0 with Windows XP Embedded
+images and may not work with later versions or alternative uses.
+ ++++ Supported SDI images ++++
+To make a SDI image supported by pxelinux/isolinux/syslinux, you need to
+follow the steps below (detailed instructions are in the white paper
+cited above):
+You need to install "Windows Embedded Studio" and to run the
+"Remote Boot Service Setup".
+1) Create a new SDI file (eg: sdimgr /new xpe.sdi).
+2) Before importing your target partition, add the following files
+in the root folder:
+ * ntdetect.com
+ * boot.ini
+ Its content should be:
+ [boot loader]
+ default=ramdisk(0)\WINDOWS
+ [operating systems]
+ ramdisk(0)\WINDOWS="Windows XPE From RAM" /fastdetect
+(you can customize the name and add options like /debug)
+Note: Your partition may be compressed (using compressed NTFS), but these two
+files need to be uncompressed.
+3) Import the partition in the SDI file (eg: sdimgr xpe.sdi /readpart:D:).
+The size of the partition must be less than 500 MB.
+4) Import the boot program STARTROM.COM
+(eg: sdimgr xpe.sdi /import:BOOT,0,C:\Program Files\Windows Embedded\Remote Boot Service\Downloads\startrom.com)
+5) Import the nt loader NTLDR in the SDI file
+(eg: sdimgr xpe.sdi /import:LOAD,0,C:\Program Files\Windows Embedded\Remote Boot Service\Downloads\ntldr)
+Note: only the version of NTLDR provided by Remote Boot Service Setup
+and located in this directory has been tested. According to
+"http://skolk.livejournal.com/667.html", "osloader.exe" from retail XP
+can also be used to replace this NTLDR version.
+6) Pack the SDI file (eg: sdimgr xpe.sdi /pack)
+7) Gzip your image
+If you want to speed the download time, you can gzip the image as it will
+be uncompressed by syslinux during the loading. You can use some programs
+like ntfsclone ("http://www.linux-ntfs.org/doku.php?id=ntfsclone") to
+remove unused blocks from the NTFS filesystem before deploying your image.
+8) You are now ready to boot your image.
+Unlike the traditional way of using SDI images (startrom.n12), you don't need
+other files than your SDI image in the tftpboot (for pxelinux), the CD
+(for isolinux), or the hard disk for syslinux.
+* You can use the usual options of pxelinux/isolinux/syslinux (config file,
+config path, reboot time...)
+For example, a simple configuration with pxelinux:
+/tftpboot/pxelinux.cfg/default with the following content:
+ label 0 [WinXpe]
+ KERNEL sdi.c32
+ APPEND xpe.sdi
+ ++++ Error messages ++++
+* No $SDI signature in file
+ A SDI image should begin by a signature "$SDI", the signature has not
+been found in your file. Perhaps your file is corrupted or has not been created
+correctly. Run sdimgr on it to see if everything is correct.
+* No BOOT BLOB in image
+ You have to import a boot program (eg: startrom.com) when you make
+your SDI image (see above). The offset of this program in the SDI file
+is in the SDI header (begining of the file). However, the offset
+found in your SDI file is null.
+You probably forgot to include the boot program. Run the sdimgr program
+and look if you see a line like:
+BOOT 0x00000000.00001000 0x00000000.00005EC2...
+ --------
+ This is the
+ offset and
+ should not
+ be null
+* BOOT BLOB is empty
+ See above. The size of your boot program included in the SDI
+is null. You probably imported a corrupted version of startrom.com.
+Run sdimgr and check the size in the following line:
+BOOT 0x00000000.00001000 0x00000000.00005EC2...
+ --------
+ this is the
+ size and
+ should not
+ be null
+* BOOT BLOB extends beyond file
+ You have a BOOT BLOB in your SDI file, but its size is invalid
+because its goes beyond the total image size. Check the tools you used
+to build the image file.
+* BOOT BLOB too large for memory
+ Your BOOT BLOB seems correct, however there is not enough memory
+to load it. Increase your RAM or reduce the SDI size. This is a very
+abnormal situation as the BOOT BLOB is usually very small. Your SDI
+file might be corrupted.
+* Image too large for memory
+ Your SDI file seems correct, however there is not enough memory
+to load it. Increase your RAM or reduce the SDI size.
+* SDI header is corrupted
+ Your SDI file seems correct, but its header contains a checksum
+that is invalid. You most likely have a corrupted SDI file.
+ ++++ Warning messages ++++
+* Warning: unknown SDI version
+You are using a newer version of SDI than the one with which this program
+has been tested. It may not work. Please give feedback and provide your
+SDI version.