From: Remi Lefevre Date: Tue, 9 Sep 2008 23:17:57 +0000 (+0200) Subject: Add basic documentation to SDI images boot X-Git-Tag: syslinux-3.72-pre6~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=782eea2441d4d7d6037defd4f1a49f8552933df1;p=platform%2Fupstream%2Fsyslinux.git 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 Signed-off-by: H. Peter Anvin --- diff --git a/doc/sdi.txt b/doc/sdi.txt new file mode 100644 index 0000000..4bc8bcd --- /dev/null +++ b/doc/sdi.txt @@ -0,0 +1,148 @@ + SDI files + + +PXELINUX, ISOLINUX and SYSLINUX support SDI files ( *.sdi ). + +Features: + * 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: + +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/ram_sdi.asp + +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/xpe.sdi +/tftpboot/pxelinux.0 +/tftpboot/pxelinux.cfg/default with the following content: + DEFAULT 0 + 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.