Home | History | Annotate | Download | only in doc
      1 		       SDI files
      2 
      3 
      4 Syslinux supports SDI files ( *.sdi ).
      5 
      6 Features:
      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
     12 in 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
     14 other installed program. This is typically used in a PXE environment to boot
     15 embedded Windows versions without boot disk support.
     16 
     17 The support of SDI images in Syslinux is based on a white
     18 paper from Saad Syed. You can find the paper here:
     19 
     20 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/ram_sdi.asp
     21 
     22 SDI support has been only been tested with SDI v1.0 with Windows XP Embedded
     23 images and may not work with later versions or alternative uses.
     24 
     25 
     26    ++++ Supported SDI images ++++
     27 
     28 To make a SDI image supported by pxelinux/isolinux/syslinux, you need to
     29 follow the steps below (detailed instructions are in the white paper
     30 cited above):
     31 
     32 You need to install "Windows Embedded Studio" and to run the
     33 "Remote Boot Service Setup".
     34 
     35 1) Create a new SDI file (eg: sdimgr /new xpe.sdi).
     36 
     37 2) Before importing your target partition, add the following files
     38 in 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 
     48 Note: Your partition may be compressed (using compressed NTFS), but these two
     49 files need to be uncompressed.
     50 
     51 3) Import the partition in the SDI file (eg: sdimgr xpe.sdi /readpart:D:).
     52 The size of the partition must be less than 500 MB.
     53 
     54 4) 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 
     57 5) 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 
     60 Note: only the version of NTLDR provided by Remote Boot Service Setup
     61 and located in this directory has been tested. According to
     62 "http://skolk.livejournal.com/667.html", "osloader.exe" from retail XP
     63 can also be used to replace this NTLDR version.
     64 
     65 6) Pack the SDI file (eg: sdimgr xpe.sdi /pack)
     66 
     67 7) Gzip your image
     68 If you want to speed the download time, you can gzip the image as it will
     69 be uncompressed by syslinux during the loading. You can use some programs
     70 like ntfsclone ("http://www.linux-ntfs.org/doku.php?id=ntfsclone") to
     71 remove unused blocks from the NTFS filesystem before deploying your image.
     72 
     73 8) You are now ready to boot your image.
     74 Unlike the traditional way of using SDI images (startrom.n12), you don't need
     75 other 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,
     79 config path, reboot time...)
     80 
     81 For 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
     96 been found in your file. Perhaps your file is corrupted or has not been created
     97 correctly. 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
    101 your SDI image (see above). The offset of this program in the SDI file
    102 is in the SDI header (begining of the file). However, the offset
    103 found in your SDI file is null.
    104 You probably forgot to include the boot program. Run the sdimgr program
    105 and look if you see a line like:
    106 BOOT 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
    115 is null. You probably imported a corrupted version of startrom.com.
    116 Run sdimgr and check the size in the following line:
    117 BOOT 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
    126 because its goes beyond the total image size. Check the tools you used
    127 to build the image file.
    128 
    129 * BOOT BLOB too large for memory
    130         Your BOOT BLOB seems correct, however there is not enough memory
    131 to load it. Increase your RAM or reduce the SDI size. This is a very
    132 abnormal situation as the BOOT BLOB is usually very small. Your SDI
    133 file might be corrupted.
    134 
    135 * Image too large for memory
    136         Your SDI file seems correct, however there is not enough memory
    137 to 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
    141 that is invalid. You most likely have a corrupted SDI file.
    142 
    143 
    144    ++++ Warning messages ++++
    145 
    146 * Warning: unknown SDI version
    147 You are using a newer version of SDI than the one with which this program
    148 has been tested. It may not work. Please give feedback and provide your
    149 SDI version.
    150