[e16e8f2] | 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. |
---|