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. |
---|