From dd4755752fde06796859e599f04d0476bdcb25a4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 5 May 2012 10:25:33 +0200 Subject: [PATCH] config/release: move syslinux related files to syslinux package Signed-off-by: Stephan Raue --- config/release/3rdparty/syslinux/NEWS | 1536 ----------------- config/release/3rdparty/syslinux/README | 34 - .../3rdparty/syslinux/doc/CodingStyle.txt | 831 --------- .../syslinux/doc/SubmittingPatches.txt | 568 ------ .../release/3rdparty/syslinux/doc/comboot.txt | 1012 ----------- .../release/3rdparty/syslinux/doc/distrib.txt | 29 - .../3rdparty/syslinux/doc/extlinux.txt | 134 -- config/release/3rdparty/syslinux/doc/gpt.txt | 69 - .../3rdparty/syslinux/doc/isolinux.txt | 102 -- .../3rdparty/syslinux/doc/keytab-lilo.txt | 85 - .../release/3rdparty/syslinux/doc/mboot.txt | 26 - .../release/3rdparty/syslinux/doc/memdisk.txt | 298 ---- config/release/3rdparty/syslinux/doc/menu.txt | 585 ------- .../3rdparty/syslinux/doc/pxelinux.txt | 432 ----- .../release/3rdparty/syslinux/doc/rfc5071.txt | 787 --------- config/release/3rdparty/syslinux/doc/sdi.txt | 149 -- .../3rdparty/syslinux/doc/syslinux.txt | 790 --------- .../release/3rdparty/syslinux/doc/usbkey.txt | 47 - .../3rdparty/syslinux/dos/syslinux.com | Bin 35364 -> 0 bytes .../3rdparty/syslinux/win32/syslinux.exe | Bin 71168 -> 0 bytes .../syslinux/files}/3rdparty/md5sum/README | 0 .../files}/3rdparty/md5sum/md5sum.exe | Bin .../tools/syslinux/files}/INSTALL | 0 .../tools/syslinux/files}/create_installstick | 0 .../syslinux/files}/create_installstick.bat | 0 .../syslinux/files}/create_installstick.exe | Bin .../tools/syslinux/files}/create_virtualimage | 0 .../syslinux/files}/sample.conf/extlinux.conf | 0 .../syslinux/files}/sample.conf/grub.conf | 0 .../syslinux/files}/sample.conf/syslinux.cfg | 0 .../files}/sample.conf/syslinux_installer.cfg | 0 31 files changed, 7514 deletions(-) delete mode 100644 config/release/3rdparty/syslinux/NEWS delete mode 100644 config/release/3rdparty/syslinux/README delete mode 100644 config/release/3rdparty/syslinux/doc/CodingStyle.txt delete mode 100644 config/release/3rdparty/syslinux/doc/SubmittingPatches.txt delete mode 100644 config/release/3rdparty/syslinux/doc/comboot.txt delete mode 100644 config/release/3rdparty/syslinux/doc/distrib.txt delete mode 100644 config/release/3rdparty/syslinux/doc/extlinux.txt delete mode 100644 config/release/3rdparty/syslinux/doc/gpt.txt delete mode 100644 config/release/3rdparty/syslinux/doc/isolinux.txt delete mode 100644 config/release/3rdparty/syslinux/doc/keytab-lilo.txt delete mode 100644 config/release/3rdparty/syslinux/doc/mboot.txt delete mode 100644 config/release/3rdparty/syslinux/doc/memdisk.txt delete mode 100644 config/release/3rdparty/syslinux/doc/menu.txt delete mode 100644 config/release/3rdparty/syslinux/doc/pxelinux.txt delete mode 100644 config/release/3rdparty/syslinux/doc/rfc5071.txt delete mode 100644 config/release/3rdparty/syslinux/doc/sdi.txt delete mode 100644 config/release/3rdparty/syslinux/doc/syslinux.txt delete mode 100644 config/release/3rdparty/syslinux/doc/usbkey.txt delete mode 100755 config/release/3rdparty/syslinux/dos/syslinux.com delete mode 100755 config/release/3rdparty/syslinux/win32/syslinux.exe rename {config/release => packages/tools/syslinux/files}/3rdparty/md5sum/README (100%) rename {config/release => packages/tools/syslinux/files}/3rdparty/md5sum/md5sum.exe (100%) rename {config/release => packages/tools/syslinux/files}/INSTALL (100%) rename {config/release => packages/tools/syslinux/files}/create_installstick (100%) rename {config/release => packages/tools/syslinux/files}/create_installstick.bat (100%) rename {config/release => packages/tools/syslinux/files}/create_installstick.exe (100%) rename {config/release => packages/tools/syslinux/files}/create_virtualimage (100%) rename {config/release => packages/tools/syslinux/files}/sample.conf/extlinux.conf (100%) rename {config/release => packages/tools/syslinux/files}/sample.conf/grub.conf (100%) rename {config/release => packages/tools/syslinux/files}/sample.conf/syslinux.cfg (100%) rename {config/release => packages/tools/syslinux/files}/sample.conf/syslinux_installer.cfg (100%) diff --git a/config/release/3rdparty/syslinux/NEWS b/config/release/3rdparty/syslinux/NEWS deleted file mode 100644 index c89da2d862..0000000000 --- a/config/release/3rdparty/syslinux/NEWS +++ /dev/null @@ -1,1536 +0,0 @@ -Starting with 1.47, changes marked with SYSLINUX, PXELINUX, ISOLINUX -or EXTLINUX apply to that specific program only; other changes apply -to all derivatives. - -Changes in 4.05: - * HDT updated, and now supports uploading data to a TFTP - server. - * ISOLINUX: remove the .img file support; it has been broken - on virtually all systems since the beginning, and has been - totally broken since 4.00 at least. Use MEMDISK instead. - * chain.c32: Support chaining ReactOS' FreeLdr (Shao Miller) - * isohybrid: -m option to add support for Mac EFI booting. - * ifmemdsk.c32: Choose boot option based on presence of - MEMDISK. - * Remove bogus distributed mk-lba-img binary. - * The Syslinux project has a new, cool logo by Abi - "ixxvil" Rasheed (doc/logo/*). - -Changes in 4.04: - * PXELINUX: Fix handling of unqualified DNS names. - * PXELINUX: Fix timer bug when PXELINUX might be unloaded - (Gene Cumm). - * core/writedec.inc: Fix duplicate declaration and overflow - (Gene Cumm). - * GCC 4.5 fixes. - * sample directory: Fix Makefile include (Gene Cumm). - * ver.com: New universal DOS/COMBOOT application to display - version information (includes DRMK) (Gene Cumm). - * rosh.c32: updated; Using getopt() for internal commands to aid - parsing options; Fix bugs in ls; add warm reboot and echo - (Gene Cumm). - * com32: fix a file descriptor leak. - * gfxboot.c32: handle TEXT..ENDTEXT; error out on no LABELs - found (Sebastian Herbszt). - * Fix booting on non-partitioned devices. - * MBR, isohybrid: Workaround for a BIOS issue on Acer - Travelmate and possibly other machines. - * COM32: Adding ACPI parsing libary - * HDT: Release 0.4.1 to support ACPI parsing, - improved mutli-core/cpu reporting - * LUA: Updating to 5.1.4-2 - * SYSLINUX: core/diskstart.inc: Reset DS after checksum in case - it isn't 0 (Gene Cumm). - * win64: Script update for additional mingw compiler names - (Gene Cumm). - * diag: New directory for diagnostic-related tools. Add a - handoff MBR/VBR and geometry display images (Gene Cumm). - * MEMDISK: use "mem=" parameter to mark available memory above - this point as reserved (core already does alignment) (Gene Cumm). - * MEMDISK: Additional disk probe checks and debug output - (Shao Miller, Gene Cumm). - * gpxe: add gpxelinuxk.0, based off of undionly.kpxe + new - script (Gene Cumm). - * isohybrid: install the isohdpfx*.bin/isohdppx*.bin files to - make isohybrid images in one step with GNU xorriso. - * PXELINUX: disable a hack that would make localboot work on - some machines, but break just about as many. Some machines - which worked with "localboot 0" in previous versions may - need "localboot -1" in this one. If you have a machine - which requires "localboot -1", a copy of the dmidecode - or sysdump output would be appreciated. - * Include a set of diagnostics by Gene Cumm. - * Fixes for gcc 4.6 and binutils 2.21.51. - * chain.c32: Allow "uuid" as a synonym to "guid". - * Handle directory names starting with .. for vfat and - iso9660. - * New MENU HIDDENKEY command to provide a one-keystroke way to - activate a boot option from a hidden menu intro screen. - -Changes in 4.03: - * Don't hang if no configuration file is found. - * Better support for booting from MBRs which don't pass - handover information. - * EXTLINUX: Try to be smarter about finding the partition - offset. - * chain.c32: support chainloading Dell Real Mode Kernel (Gene - Cumm). - * chain.c32: fix booting in CHS mode. - * rosh.c32 updated (Gene Cumm). - * Fix the -s option to the syslinux/extlinux installer (Arwin - Vosselman). - * isohybrid: fix padding of large images (PJ Pandit). - -Changes in 4.02: - * SYSLINUX: correctly handle the case where the -d option is - specified with a non-absolute path, i.e. "syslinux -d - syslinux" instead of "syslinux -d /syslinux". - * ISOLINUX: recognize the directory names /boot/syslinux and - /syslinux, and the filename syslinux.cfg in addition to the - isolinux-specific names. Thus, "syslinux.cfg" is now a - generic name, whereas "isolinux.cfg" or "extlinux.conf" is - specific to different derivative. - * chain.c32: support setting alternate config filename for - stage2 of GRUB Legacy (Gert Hulselmans). - * whichsys.c32: execute specific command, based on Syslinux - bootloader variant (Gert Hulselmans). - * lua.c32: a lot of new bindings added to the "syslinux" - namespace: VESA, PCI, DMI, kernel loading (Marcel Ritter). - * btrfs: print a comprehensive error message if compressed or - encrypted files are encountered (neither is currently - supported.) - * SYSLINUX: mtools installer: honor TMPDIR, error out on disk - full. - * Handle fallbacks from EDD to CHS, to deal with systems which - announce EDD support but don't actually have it. - * SYSLINUX: the mtools, DOS and win32 installers now use the new - command line options. - * PXELINUX: fix the use of IP addresses in TFTP :: or tftp:// - host syntax. - * SYSLINUX: experimental Win64 installer (syslinux64.exe). - -Changes in 4.01: - * ISOLINUX: fix initialization on systems which don't zero - low memory. - * SYSLINUX/EXTLINUX: fix handing of disk read retries in - EDD mode. - * ISOLINUX: change the initialization sequence to avoid - problems with certain (old) BIOSes. Special thanks to - Helmut Hullen for invaluable debugging support. - * ifplop.c32: new module which detects if the PLoP Boot Loader - already has booted a CDROM or USB drive (Gert Hulselmans). - * Correct a severe memory overwrite bug, triggered primarily - when selecting a very long command line in the menu system. - * lua.c32: Lua script interpreter, currently experimental - (Alexey Zaytsev, Marcel Ritter, Geert Stappers). - * PXELINUX: new option IPAPPEND 4 to append the system UUID to - the kernel command line. - * PXELINUX: display BOOTIF and SYSUUID at startup time, and - when Ctrl-N is pressed on the command line. - -Changes in 4.00: - * Major code base changes; all filesystem rewritten in C. - This work was done primarily by Liu Aleaxander (Yuanhan Liu). - * EXTLINUX: btrfs and ext4 support. btrfs support was done by - Alek Du of Intel. - * EXTLINUX is no longer a separate derivative; extlinux and - syslinux both install the same loader (ldlinux.sys); for the - Linux-based installers the extlinux binary is used for a - mounted filesystem; the syslinux binary for an unmounted - filesystem. - * When loading a new configuration file with the CONFIG - command, one can now also specify a new current directory - with an APPEND statement. - * Full ADV support for Syslinux, to boot-once and MENU SAVE - works. - * Full support of GPT-partitioned disks, including disks - and/or parititions larger than 2 TiB (if supported by BIOS.) - * The GPT handover protocol adjusted to the current T13 - committee draft; see doc/gpt.txt. - * HDT: code cleanup, small bugfixes - * The "linux" syslinux installer (syslinux-nomtools) now has a - command-line syntax closer to the extlinux installer. The - mtools, dos and win32 installers will get this new syntax - eventually, but it is not implemented yet. - * chain.c32: support booting GPT partitions by index, GUID, label. - * chain.c32: support booting the Syslinux partition with "fs". - * chain.c32: implement gpt.txt hand-over protocol. - * chain.c32: support for chainloading Grub stage 2. - * PXELINUX: TFTP URL syntax (tftp://) supported even when not - running gPXE/gpxelinux. - * New ls.c32 module to display the contents of the disk from - the command line, and pwd.c32 to display the current - directory. - * rosh.c32 (read only shell) updated and hopefully usable. - * PXELINUX: Support "localboot -1", just like the other - derivatives. - * gfxboot.com removed in favor of gfxboot.c32. - * New MENU HELP statement to display fullscreen help text as a - result of a menu selection. - * memdiskfind utility that can be used with the phram driver - in the Linux kernel to mount a memdisk. - * ifcpu.c32: Adding usage when no parameters are given, - adding PAE support. - * ifcpu.c32, ifcpu64.c32: handle more than one argument per - target. - * isohybrid: C version which does not require Perl. - * New command MENU IMMEDIATE to permit hotkeys to activate - immediately without needing Enter. - * mdiskchk.com supports a --no-sequential (or -n) option to - suppress the classic all-drive-probing heuristic. Useful - on BIOSes who crash/hang when certain drive numbers are - probed. - * ElTorito.Sys DOS driver now scans drive numbers upwards - instead of downwards, in order to avoid a fairly common - bug on some BIOSes where probing drive 0xFF causes a - failure. - * NASM 2.03 or later required to build. 2.07 or later - recommended. - -Changes in 3.86: - * chain.c32: fix chainloading the MBR of a hard disk (broken - in 3.85). - * mboot.c32: report the boot loader name in the information - structure. - * com32: set argv[0] in a com32 module. - * core: add a workaround for a bug in Xen HVM older than - version 3.3: disable halt on those platforms. - * Fix problems where certain operations in com32 modules would - cause the core to believe the system was idle. - * MEMDISK: fix MBR detection when used with a DOSEMU header or - an offset. - * MEMDISK: generate the mBFT checksum correctly. - -Changes in 3.85: - * gPXELINUX: updated to gPXE 1.0.0. gPXELINUX can now do NBP - chainloading, and does not require a second DHCP. - * vesamenu.c32: unbreak the default "grey hole" background. - * We no longer have a built-in default of "linux auto". - Instead, if no DEFAULT or UI statement is found, or the - configuration file is missing entirely, we drop to the boot: - prompt with an error message (if NOESCAPE is set, we stop - with a "boot failed" message; this is also the case for - PXELINUX if the configuration file is not found.) - * chain.c32: support chainloading Grub4DOS; patch by Gert - Hulselmans. - * New tool: sysdump.c32, can be used to produce system - information for debugging via tftp or ymodem (serial port). - * "vga=current" on the Linux command line is now supported. - * chain.c32: support for Windows Recovery Console, via the - "cmldr=" option. - * chain.c32: should now support loading NTLDR from different - type media than loaded from. - * chain.c32: support chainloading to a FAT/NTFS partition with - invalid "hidden sectors" via the "sethidden" option. - * memdisk: fix the mBFT ACPI table. - * vesamenu.c32: if the image is smaller than the screen, tile - it across the whole screen. - * mkdiskimage: -s option for producing a sparse image. - * vesamenu.c32: support arbitrary resolution setting (beyond - BIOS support) on some Intel-based video chipsets. This code - is a modified version of the "915resolution" tool by - Steve Tomljenovic; your mileage might vary. - -Changes in 3.84: - * SYSLINUX: make the DOS installer work for MS-DOS 7.x/8.x - (Win9x/ME) again. - * HDT: updated to version 0.3.6 (numerous changes.) - * mboot.c32: now supports video mode setting if requested by - the image. - * MEMDISK: Fix floppy images of PC-DOS. - * MEMDISK: Add support for emulation of CD-ROM images; patch - by Shao Miller. - * MEMDISK: Comply with the Win9x "safe hook" standard, - allowing a protected-mode driver. - * MEMDISK: New "mBFT" ACPI table, by analogy with the iSCSI - iBFT table. This allows detection from a protected-mode - operating system without EDD support. - * 32-bit version of the gfxboot loader (gfxboot.c32), so far - experimental. This will replace gfxboot.com in the future. - * vesamenu.c32: new MENU RESOLUTION directive to set a screen - resolution other than 640x480. - * chain.c32: add support for loading isolinux.bin. - * chain.c32: make sure to always return to text mode. - * eltorito.sys: DOS driver for generic CD-ROMs; by Gary Tong - and Bart Lagerweij. - -Changes in 3.83: - * PXELINUX: clear memory before handing over to a chainloaded - NBP. This may help avoid a bug in Windows RIS. - * PXELINUX: fix localboot after NBP chainloading on certain - BIOSes (including ASUS A8N-E, but possibly others.) - * chain.c32: support chainloaded bootloaders on ISOLINUX. - * PXELINUX: allow filenames up to 251 characters. - * MEMDISK: fix problems booting from USB on Thinkpads, and - possibly other machines or hardware combinations. - * isohybrid: fix the -id option. - * HDT: updated to version 0.3.4. - * MEMDISK: the stack size is now configurable, with the stack= - option. - * Simple menu: fix Ctrl-W (word erase) in command-line edit. - * Simple menu: fix crash on some platforms. - * Gfxboot: fixes to the configuration file parsing. - * PXELINUX: add a tool to override specific DHCP options via - values hardcoded in the pxelinux.0 file. These hardcoded - values can be either "before DHCP" (defaults if DHCP do not - provide values), or "after DHCP" (overrides DHCP). The tool - pxelinux-options can be used to set these options. This - feature does not apply to gpxelinux.0; when used with gPXE - this is better handled by modifying the embedded script. - -Changes in 3.82: - * isohybrid: fix the -partok logic for loading from a partition. - * ISOLINUX: deal with systems which return from INT 13h with - interrupts disabled. - * Do not invoke the idle handler during large file loads. - * Simple menu: make ONTIMEOUT work with MENU HIDDEN. - * PXELINUX: handle TFTP servers which have extra NULs at the - end of an OACK packet. - -Changes in 3.81: - * Shuffler: fix bug in real-mode entry. This affected a - number of modules, probably in relatively unimportant ways, - but it completely broke linux.c32. - * Improved performance. - * Attempt to halt the processor while idle. This can cause - bad reponsiveness when using a serial console especially for - automated input; if that ends up being a problem, use the - new "NOHALT 1" configuration command. - * linux.c32 now suppresses all messages if the "quiet" flag is - specified. - * isohybrid: add a variety of options, and a help message. - * ISOLINUX: fix booting in hybrid mode when CBIOS is used. - This unfortunately means that the isohybrid handoff protocol - has changed, so the isohybrid utility must version-match - isolinux.bin. - * Drop support for ACPI 3 extended memory flags. - * Menu system: don't set the autocr flag on the serial - console. - * altmbr: fix handling of logical partitions. - * altmbr: cap at 439 bytes so the partition select byte isn't - part of the file. - -Changes in 3.80: - * New shuffler mechanism and API. - * Rewritten mboot.c32 module. - * The syslinux_boot_linux() function has been simplified. - * Don't hang trying to boot a "menu quit" label from the CLI. - * Fix problem with boot-once "sticking" on some BIOSes. - * isohybrid: fix problem with images over 2 GB in size. - * APM poweroff module (poweroff.com) by Sebastian Herbszt. - * ISOLINUX: fix the handling of large directories. Bug found - and fixed by Steffen Winterfeldt. - -Changes in 3.75: - * PXELINUX: fix the "keeppxe" option, which was broken in - 3.74. - * MEMDISK: correct the extraction of geometry information from - the MBR of a hard disk image, again broken in 3.74. - * extlinux(1) man page from Brian Pellin. - * Simple menu: MENU SAVE is now controllable on a menu-by-menu - or entry-by-entry basis. - * gPXELINUX: fix interrupt-disabling bug. - * HDT: fix lockup on machines with certain PCI configurations. - -Changes in 3.74: - * New UI directive, which allows a more natural way to specify - a menu system (or not.) With the UI directive specifying - the menu system, the DEFAULT directive can be used to select - the default entry inside the menus. - * kbdmap.c32: new module to load a new keyboard map - dynamically. - * isohybrid: workaround bug in some versions of binutils. - * Fix issue with the placement of the initrd on some machines. - * ifcpu64: fix handling of less than three arguments. - * Fix bug in the shuffle library when dealing with a very - large number of fragments. - * Documentation fixes by Vicente Jimenez Aguilar. - * gPXE updated to version 0.9.7. - * hdt.c32: Hardware Detection Tool, an interactive hardware - analyzer module by Erwan Velu. - * MEMDISK: enable automatic determination of the disk geometry - for a large floppy disk image if (and only if) it is - formatted with a FAT filesystem. - * SYSLINUX: fix the handling of .bss files on FAT12/16. - * Suppress the Loading ... message if "quiet" is specified on - the kernel command line. - * Fix the use of "CONSOLE 0" with menu.c32. - * Allow COM32 modules to be aware of all memory even in the - presence of a memory hole. The "linux.c32" module can be - used to load a kernel (or memdisk) plus large initrd on - such a system. - * MBR: produce alternate MBR variants which force the drive - number to hd0 (_f variants), or force the drive number to - hd0 if the Ctrl key is pressed (_c variants.) Furthermore, - add an MBR variant (altmbr*.bin) which ignores the active - flag and instead boots the partition number specified in the - byte at offset 439 decimal. - * Add IPAPPEND strings to com32 modules, especially needed for - linux.c32. - * New MENU SAVE directive which saves the latest menu - selection until the next boot. Currently only implemented for - EXTLINUX. - * gfxboot.com: *experimental* interface module to Steffen - Winterfeldt's "gfxboot" graphical front end - (http://gfxboot.sourceforge.net/). Module by Sebastian Herbszt. - -Changes in 3.73: - * Upgrade gPXE to release version 0.9.5. - * Fix a number of build errors on various platforms. - * Handle systems with E820 "extended attributes" per ACPI 3. - Someone "cleverly" decided to change the E820 spec in a - backwards-incompatible manner! - * MEMDISK: default to "safeint". - * Adopt the moniker "The Syslinux Project", standard proper - noun capitalization, to refer to the project as a whole. - Thus, reserve the all-caps "SYSLINUX" to refer to the FAT - loader. - * mboot.c32: add "-solaris" option to pass DHCP information to - the Solaris kernel; required for automatic Solaris boot - without using Solaris' pxeboot program. - * config.c32: trivial COM32 module to restart Syslinux with - another configuration file from the command line (equivalent - to the CONFIG command in the configuratin file.) - -Changes in 3.72: - * Include the pxechain.com module from Jeffery Hutzelman at - Carnegie Mellon University. This allows chaining another - PXE boot program while changing the DHCP packet passed to - it. - * Reorganize the Makefile system. - * Major PCI core cleanups and other source cleanup. - * gPXE code updated. - * Try to avoid memory-snooping attacks on passwords. Note - that if someone has root on the box, they generally don't - need to compromise the boot loader... - * ISOLINUX: fix crash when given a zero-length file. - * sdi.c32: support gzipped SDI images. - * ISOLINUX: support generating images which can be either - a CD-ROM or a hard disk (USB disk, etc.) See - doc/isolinux.txt for more information. - * Remote gdb support for COM32 modules; patch from Stefan - Hajnoczi. - * Support beeps in F-key help in the simple menu system. - * Tab display of labels, based on a patch from Sebastian - Herbszt. Can be disabled with the NOCOMPLETE configuration - command. - * "menu default" can now be specified after "menu begin", to - indicate that a specific submenu should be the default entry. - -Changes in 3.71: - * Workaround for a VESA BIOS which tries to make DOS system - calls(!!) - * Simple menu: fix navigation around disabled entries - (or at least try to...) - * EXTLINUX: proper error message when confused about mount - point. - * MEMDISK: be smarter about incompletely disabled floppies in - the BIOS and about being the only floppy. - * Optionally allow initrd to be specified on a separate line - rather than as part of the "append" line. This is not - recommended, but apparently makes life easier for some - tools. - * SYSLINUX: if no config file is present, set the current - directory to the root directory (Sebastian Herbszt). - * chain.c32: option "hide" to support hiding and unhiding of - primary partitions on the boot drive with DOS, Win, or OS/2 - partition types (01, 04, 06, 07, 0b, 0c, 0e). - * Unbreak the KBDMAP command (broken in 3.70). - * EXTLINUX: fix the handling of the ADV when using CBIOS. - * ifcpu64.c32: simple COM32 module to select a 32- or 64-bit - kernel (and optionally 32-bit kernels with or without PAE.) - Eventually we want a scripting language for this - kind of stuff; a Lua module is under development. - * Fix parsing of the SERIAL command without a baud rate - specified. - * chain.c32: error out when try to boot an unbootable - partition. - * SYSLINUX: when building the Win32 installer, search for - MinGW under a large number of possible names. - -Changes in 3.70: - * PXELINUX: Support enhanced capabilities when running on top - of gPXE (http://www.etherboot.org/). In particular, support - URL-style syntax for filenames, and any protocol that gPXE - supports (except, currently, iSCSI and AoE.) This feature - is currently highly experimental. - * Substantial infrastructure changes to support files whose - length aren't known at open time (typically network - connections.) Please note that the semantics of some of the - comboot APIs have changed slightly; please see doc/comboot.txt. - * PXELINUX: We no longer require a TFTP server which supports - the tsize option for all transfers. - * PXELINUX: Integrate with the gPXE source base; unified image - now included as "gpxelinux.0". - * The source tree has been restructured; files that were - previously in the root have moved into the core, dos, gpxe, - and utils directories. - * "make install", "make netinstall", and "make extbootinstall" - have been updated massively. "make install-all" now installs - all three. - * Change default dir for auxiliary files from - /usr/lib/syslinux to /usr/share/syslinux. - * SYSLINUX: VFAT long filename support. - * MEMDISK: Any image less than 4096K (4 MB) is treated as a - floppy disk. The geometry-guessing code will recognize all - common extended formats, but it is still possible some very - exotic formats need geometry specification. Large floppies - and very small harddisks still need explicit specification. - * chain.c32: option "swap" to support swapping of BIOS drive - numbers. This is necessary to boot certain operating systems - (DOS, Windows) from a secondary drive. - * chain.c32: option "file=" to support loading a boot file from - the SYSLINUX filesystem instead of loading the boot sector - from the drive. - * chain.c32: option "seg=" to control the load location. - * chain.c32: option "ntldr=" as a shorthand for "seg=0x2000 - file="; use this to load one of WinNT's loaders: - - chain.c32 hd0 1 ntldr=/MiniNT/setupldr.bin - - Note that the file needs to be in the SYSLINUX filesystem. - * chain.32: options "freedos=" and "msdos="/"pcdos=" as - shorthands for "seg=0x60 file=" and "seg=0x70 file=" - respectively; use this to load FreeDOS's kernel.sys, MS-DOS's - io.sys or PC-DOS's ibmbio.sys. - * Change to the A20 algorithm which *MIGHT* help systems that - have systems which freeze when Syslinux is used with USB - keyboards. Note that this has been hard do verify, so I - would greatly appreciate feedback on it. - * Complex menu system: unbreak menus which has unnamed - submenus, like complex.c. - * Fix newline on the serial port for some com32 modules. - * chain.c32: support "boot" as the drive specification, - indicating the drive from which it was booted - (for syslinux/extlinux). - * SYSLINUX/EXTLINUX: support "localboot" with the same feature - set as ISOLINUX. - * Add an experimental MBR for GPT partition tables. - * Use $(CC) when determining compile flags. - * chain.c32: fix booting from logical partitions (Sergey - Vlasov.) - -Changes in 3.63: - * Fix errors in the PCI and DMI detection modules (Erwan Velu, - Sebastian Herbszt). - * Fix host dependencies and other issues in the build system. - * PXELINUX: Allow class E addresses as unicast. - * sdi.c32: module to load Microsoft System Deployment Images. - For additional information, please see: - http://msdn2.microsoft.com/en-us/library/ms838543.aspx - * EXTLINUX: Correct reading directories with deleted entries. - * Shuffle library: correct the handling of certain geometries - (an upward move with source material blocking the move); as - required by sdi.c32 but theoretically possible for other - formats as well. - * Add "make netinstall" to install /tftpboot. - * Fix some documentation files that didn't get moved/renamed. - -Changes in 3.62: - * Clean up garbage after "aborted." message. - * Clean up memdump.com filenames. - * Support SHA256 and SHA512 encrypted passwords. - * The shuffle library now can generate chained descriptors, - thus allowing pretty much arbitrarily complex memory maps. - * Handle command lines up to 2047 characters, the current - Linux kernel limit. - * vesamenu: support systems without linear framebuffer support - (sigh, what is this, 1993?) and 15-bit RGB modes. - * Move the label storage (for the command-line interface) to - high memory, removing the size limit and freeing up 64K of - low memory. - * Get rid of 4096-entry limit in the simple menu system. - * New hierarchial submenu support: see MENU BEGIN, MENU END, - MENU GOTO in doc/menu.txt. - * MENU QUIT allows creating a menu entry for returning to the - command line. - * ISOLINUX: Work around bug in certain Adaptec BIOSes, - patch by Bruce Robson. - * pngtopnm dependency removed from samples/ directory. - * Text documentation files (in doc/) renamed *.doc -> *.txt. - -Changes in 3.61: - * EXTLINUX: fix crash when accessing an empty file. - * elf.c32: If a PHDR segment is present, load it. - * Fix SHA-1 and MD5 passwords. - * ISOLINUX: fix booting when mastered without - mkisofs -boot-info-table (broken since 3.50, sigh...) - * Handle BIOSes which emit multiple contiguous valid - memory regions in the e820 map. - -Changes in 3.60: - * Support for "auxilliary data vector", a small amount of - writable storage. Currently only supported for EXTLINUX, - but the infrastructure is there for the other derivatives, - assuming a suitable storage location can be found. - * EXTLINUX: boot-once support (--once, --clear-once, and - --reset-adv). - * A command is now required to the EXTLINUX installer, i.e. at - least one of --install, --update, --once, --clear-once, or - --reset-adv. - -Changes in 3.55: - * PXELINUX: as per RFC 5071, PXELINUX no longer requires the - use of the magic cookie option (208) for unencapsulated - options. Currently it does not require it for - vendor-encapsulated options (vendor-option-space) either, - but that MAY be reverted in the future if it causes - problems. - * Documentation text files moved to a common "doc" directory; - man pages from the Debian project added to the "man" - directory. - * Correct bug with self-overlapping memory areas when using - the shuffle interface. - -Changes in 3.54: - * Add "menu separator", "menu indent", "menu disabled" - (see README.menu). - * vesamenu: fix handing of VESA modes with noncontiguous - memory buffers. In particular, Qemu/KVM sets up such a mode - when Cirrus Logic emulation is enabled (which is the - default.) - * Support for calling real mode functions using far calls, - with argument on the stack. This was implemented to support - the BIOS BBS specification, but subsequent experiments show - that the at least one of the most common BIOS cores, Award, - passes the presence check but doesn't actually implement the - functionality. - -Changes in 3.53: - * Fix bugs related to the $PnP BIOS functionality on some - platforms. - * PXELINUX: Fix the "naked" version of :: (suppress prefix.) - * elf.c32: better error messages. - * Faster operation under Intel VT virtualization. - * PXELINUX: Fix DHCP bootfile option. - * mkdiskimage: Support more than 1024 cylinders. - * (Hopefully) fix installer on non-x86 platforms. - * Fix shuffle_and_boot_rm, used by linux.c32. - * Fix shuffle_and_boot_pm on 386/486. - * ISOLINUX (at least): fix bss memory overwrite hang. - * MBR: Fix booting from logical partitions. - * Code cleanups. - -Changes in 3.52: - * Handle capitalized F-key commands in the menu system. - * Fix padding error when loading multiple ramdisks. - * Workaround for VMware crashing when trying to print a - message during early kernel boot (does not seem to work, - consider deleting.) - * chain.c32: add the ability to search for a specific MBR - signature at runtime. - * Fall back to the server identity option if the siaddr field - in the DHCP header isn't set. This seems to match the - behaviour of most PXE stacks. - * mkdiskimage: give the generated disk image an MBR signature. - * MEMDISK: Fix failures on some BIOSes. - * Simple menu system: new "MENU HIDDEN" option to not display - the menu unless the user presses a key. - * Simple menu system: support MD5-encrypted passwords (modern - Unix standard style, with "$1$" prefixes.) - * pcitest.c32: now functions as a full "lspci". Thanks to - Erwan Velu for this work. - * MEMDISK: Make EDD actually work. - * ISOLINUX: Fix for certain broken CD-ROM BIOSes which - randomly corrupted register FS. - * Simple menu system: fix memory overwrite bug that caused - some systems to lock up or behave weirdly. - * Fix building on 64-bit systems without a 32-bit libc installed. - -Changes in 3.51: - * EXTLINUX: Fix failure to find the configuration file. - -Changes in 3.50: - * New keywords allow the type of file to be specified in the - configuration file. - * It is now supported to load a different configuration file - with the CONFIG keyword. - * Fix API call 0x0019 (Read Disk.) - * MENU AUTOBOOT, MENU TABMSG, MENU PASSPROMPT allows - internationalization of menu messages. - * A new feature, TEXT HELP, allows the administrator to set - a multi-line help message for individual selections. - * Fix API call 0x0012 (Cleanup, shuffle and boot.) - * New API call "Cleanup, shuffle and boot to flat protected mode" - * New API call "Cleanup, shuffle and boot to real mode", - similar to API call 0x0012 but allows arbitrary register setting. - * Introduce a library interface for loading arbitrary binary - formats with relatively easily understood code. See - the elf.c32 module for an example on how to use it. - * New module "elf.c32", to load a protected-mode ELF kernel. - * MBR (old and new): Fix bug in CHS mode when LBA > - 65535*sectors. - * vesamenu: fix decoding of palettized PNG images. - * Update the Linux kernel boot protocol. - * PXELINUX: Press Ctrl-N at the boot prompt to read out the - network info. - * Instead of the (non-existent) MAC, use the client identifier - for networks like Infiniband and Firewire/1394. - * Add a new INCLUDE command to the core syslinux parser. - * Allow binding help text to F11 and F12. - * F-key help now available in the simple menu system. - * Disabled the polling for ARP during idle. It is simply too - slow on some (broken!) PXE stacks. - * PXELINUX: also try to fetch the config file based on UUID. - * SYSLINUX/EXTLINUX: New RAID mode (-r) which calls the BIOS - to load the next device (typically the next drive) on boot - failure. - -Changes in 3.36: - * MEMDISK: Disable EDD by default on floppy disks. EDD can be - enabled with the "edd" option and disabled with "noedd". - This (hopefully) should make Ghost work again. - * SYSLINUX: "unix" installer now uses Linux ioctls instead of - using libfat. - * New MBR which can boot from logical partitions. - * SYSLINUX: Fix bug in detecting special extensions which was - introduced in 3.35 :( - * PXELINUX: Unbreak chainbooting FreeBSD (and possibly others.) - -Changes in 3.35: - * MEMDISK: New "safeint" mode. - * MEMDISK: Be more compliant with the PnP BIOS spec. - * MEMDISK: Turn on EDD support by default. - * MEMDISK: Try to work on some machines on which it would not - work when there was no floppy drive in the system. - * Simple menu system: fix serial console support (broken in - 3.30). - * SYSLINUX: Support subdirectories. Like ISOLINUX, the - "current directory" is the directory in which syslinux.cfg - is found; this is searched for in the sequence - /boot/syslinux, /syslinux, /. As a side benefit, label names - like "linux-2.6.18" and "linux-2.6.19" are now supported. - - To install ldlinux.sys in a subdirectory, pass the -d - directory option to the SYSLINUX installer. - - This work was sponsored by slax.org (thanks, Tomas!) - * New API call: read disk. - * Invoke ONERROR on initrd load failure. - -Changes in 3.31: - * The simple menu system (menu.c32 and vesamenu.c32) now - support loading more than one configuration file at a time, - using MENU INCLUDE or by specifying multiple filenames. - * The MENU COLOR statement can now control the shadowing mode. - -Changes in 3.30: - * libcom32 extended to support graphics mode and graphical console. - * vesamenu.c32, new graphical version of the Simple - Menu System, see README.menu. - * New com32 modules by Erwan Velu do selection based on CPUID - or PCI devices present. - * RPM spec: add syslinux-tftpboot module; move syslinux by - default to the /usr/share/syslinux directory. - * RPM spec: extlinux is now a separate package. - -Changes in 3.20: - * EXTLINUX: New options --install (-i) and --update (-U), to - make it clear if a boot loader should be installed or - updated. For now, defaults to --install for compatibility; - a future version will require one of these options. - * New library functions to load and place files in memory. - * mboot.c32 bug fixes. - * Remove 8 MB kernel size restriction. - * Add "klibc" target for building unix/syslinux and - extlinux/extlinux with klcc (klibc-1.4.27 or later.) - * PXELINUX: Fail (and eventually reboot) if no configuration - file was found. - * COM32 module by Erwan Velu to make decisions based on DMI - info. - * Fix issue where going back and forth between menus a lot - would cause a hang. - * ISOLINUX: Fix bug which made "cd boot sectors" not work. - -Changes in 3.11: - * MEMDISK: Fix bug by which accessing the real floppy disk - as B: in MS-DOS was broken. - * Simple menu system: allow tweaking of the screen layout. - * Simple menu system: better command-line editing, correctly - handle command lines above 256 characters. - * PXELINUX: revert memory allocation change that caused - problems on some network cards. - * MEMDISK: Try work around a bug on some BIOSes when no - physical floppy disk is present in the system. - * Enable the 16550A FIFOs, if present, when doing serial - console. - * New "totaltimeout" command establishes a timeout without - regard for any user input. - * Simple menu system: timeout behaviour now more in line with - user expectations. - * Simple menu system: "ontimeout" should now work correctly. - -Changes in 3.10: - * gcc 4.0.1 compilation fixes. - * Add support for querying the PCI BIOS in libcom32 - (used by ethersel et al.) - * Fix PCI handing (ethersel etc) on several old chipsets (and - VMWare.) - * Try to deal with systems with broken EBIOS. - * New API call to do "localboot". - * New API call to query features. - * New API call to run kernel image, a lower-level call than - "run command". See comboot.doc. - * Fix for bug in EBIOS code discovered by Arwin Vosselman. - * NOESCAPE security fix. - * Comments are now recognized even without a space following #. - * Fix incorrect handling of mixes of entries with and without - MENU PASSWD. - * The idle API call now harmlessly returns failure if it is a - no-op. That way the caller can decide whether or not to - bother invoking it again. - * Temporarily disable the idle API call on PXELINUX, due to - some platforms on which the idle API call seems to hang; this - problem has not yet been debugged. - * MEMDISK: the handling of DOSEMU-headered images was broken; - fix it. - * EXTLINUX: symlinks are now supported. - * Simple menu system: N and P now work correctly as hotkeys. - * MEMDISK: more BIOS bug workarounds. - -Changes in 3.09: - * gcc4 compilation fix. - * (Ctrl-G) in message files now causes a beep. - * Reduce the command line to 511 characters; 1023 caused - memory overflows. - -Changes in 3.08: - * SYSLINUX: Fix performance regression (-s mode always - enabled.) - * Add API function for idle loop. - * libutil: Add do_idle() function for idle loop, make - get_key() use it. - * libutil: Add SHA-1 and base64 functions. - * Simple menu system: add password support. - * EXTLINUX: Sparse files now handled correctly. - * EXTLINUX: Large directories now handled correctly. - * ALL: At the prompt, Ctrl-X now forces text mode. - * Fix configuration file parsing error, that could cause - hangs. - * Rewritten advanced menuing system from Murali Ganapathy. - * MEMDISK: New "bigraw" mode to work around certain broken - BIOS flash programs. - * COM32 module to boot Multiboot systems, including Xen. See - com32/modules/mboot.doc. - * Max command line changed to 1023 characters. Note that the - kernel proper still can only handle 255 characters without - patching, and COM16 binaries can only handle 125 characters. - -Changes in 3.07: - * Fix chainloading (chain.c32). - * Fix zlib build problem. - * Use a private copy of . - -Changes in 3.06: - * Fix typo that caused the ramdisk to load in the wrong place. - -Changes in 3.05: - * New API function "shuffle and boot"; allows COM32 modules to - load or construct (almost) arbitrarily complex objects, - e.g. a kernel and its initrd/initramfs in pieces, and have - the API core reorganize memory for booting. (A library API - for this function will be introduced in a later version.) - * The initrd= option now supports multiple filenames separated - by commas. This is mostly useful for initramfs, which can - be composed of multiple separate cpio or cpio.gz archives. - (Note: all files except the last one are zero-padded to a 4K - page boundary. This should not affect initramfs.) - * EXTLINUX: Fix API function 000Ah (get derivative-specific - info). - * libcom32/ethersel: Support PCI Config Mechanism #2 on - machines still infested with that hideous old hack. - * SYSLINUX: Fix directory-parsing bug. - -Changes in 3.02: - * SYSLINUX: The "unix" installer now sets the MS-DOS - attributes (hidden, system, readonly.) - * COM32 library: build the .lnx (test modules for running - under Linux) as architecture native modules, in case - i386 devel libraries aren't installed. - * EXTLINUX: Hack for systems which don't have BLKGETSIZE64 - defined in the standard header files. - * Simple menu system: minor aestetic improvements, and try to - work better over a serial console (speed, and readability on - monochrome terminal emulators.) - * New CONSOLE directive to control output on the video console - (useful for dealing with some broken serial-forwarding - BIOSes.) - * New com32 module "ethersel" for searching for an Ethernet - card and selecting the proper version of Etherboot. - * EXTLINUX: Allow the user to override the detected geometry. - Add help. - -Changes in 3.01: - * EXTLINUX, SYSLINUX: Fix compile errors on some systems. - * EXTLINUX: Default to zipdrive geometry (64 heads, 32 - sectors) if no other geometry can be detected. - -Changes in 3.00: - * SYSLINUX: Support FAT32 and EDD. As an unfortunate - consequence, LDLINUX.SYS is no longer an ordinary file; it - is block-mapped at install time, which means it can only be - written using the syslinux installers. - * SYSLINUX: Reorganize the source code for the installers; - each one of the installers (dos, win32, unix, mtools) is now - built in its own subdirectory. In particular, "mtools" is - the unprivileged installer which uses mtools; "unix" is the - privileged installer which uses system calls. - * SYSLINUX: Completely rewritten DOS installer in C. - * ALL: "label" statement information is now stored in a - compressed format, which means that a lot more labels are - permitted (500-1000 in a typical configuration, but depends - on the complexity.) - * EXTLINUX: New derivative, which boots from an ext2/ext3 - filesystem. - * SYSLINUX: The DOS and Win32 installers can now optionally - write the boot sector to a file instead of the real boot - sector. This is not supported in the Linux installers, - however. - * ALL: New NOESCAPE command, disables the "hold down the Shift - key to display the prompt" behaviour. - * New simple menu system, as an alternative to the advanced - menu system already present. See README.menu for details. - * PXELINUX: Filenames can now be prefixed with an IP address - or DNS name plus :: (e.g. 192.0.2.1::filename or - server.domain.com::filename), which downloads a file from an - alternate TFTP server, or just a :: (e.g. ::filename), which - suppresses the common pathname prefix. See pxelinux.doc. - * SYSLINUX: Add an -m option to the DOS and Win32 installers - to write an MBR and -a to mark the partition SYSLINUX is - being installed on active. - * MEMDISK: Give a way to query the boot loader type while - running MEMDISK; see memdisk/memdisk.doc and - sample/mdiskchk.c. - * mkdiskimage: substantially improved mkdiskimage which, among - other things, can now be used to initialize USB keys as - zipdrives; see README.usbkey for more information. - -Changes in 2.13: - * MEMDISK: Fix command-line parsing "brown paper bag" class - bug. - * MEMDISK: Add "raw" mode to support the DOS boot disk from - WinME/XP, which seems to deliberately crash the system - when someone uses the "INT 15h mover" highmem API. - * Make "make install" do something sane for the com32 - development environment. - * In the spec file, create a separate -devel RPM for the com32 - development environment. - -Changes in 2.12: - * Simple C library, based on klibc, for writing COM32 - programs. - * Fix the handling of file length in loading of COM32 - programs. - * MEMDISK: Work around a linker bug by rearranging the code to - not use the linker for the 16-bit code. - * SYSLINUX: If we're building on a machine without a Win32 - (mingw) compiler, just skip building syslinux.exe. - * ISOLINUX: Support non-mkisofs mastering programs, at least - as long as the image is single-session. For best results, - ISOLINUX should be the only boot loader installed. - * MEMDISK: Allow the user to specify that the simulated disk - should be write-protected. - -Changes in 2.11: - * ALL: Add an API call to get the configuration file name. - * SYSLINUX: Fix bug in 2.10 that prevented it from working - correctly for a lot of people. - * SYSLINUX: In the installer, make mtools a bit less fussy. - * Make the menu system compile with newer gcc's. - -Changes in 2.10: - * MEMDISK: Handle images compressed with zip as well as with - gzip. Some Windows-based image tools apparently generate - these kinds of images by default. Patch by Patrick - LoPresti. - * Major menu improvement from Murali Ganapathy. - * ISOLINUX: Wonderfully sick and brilliant workaround for - severe bugs in certain Award BIOSes; from Knut Petersen. - * SYSLINUX: Fix for the nomtools installed, from Frederic - Pasteleurs. - * PXELINUX: Fix handling of IP numbers in the ranges - 100-109 and 200-209. - * ALL: New option "allowoptions" (defaults to 1), which - controls if options are allowed on the command line or not. - * SYSLINUX: Support building under klibc (see the klibc - distribution for details.) - -Changes in 2.09: - * SYSLINUX: Remove residual setuid crap from - syslinux-nomtools. - * Handle video pages correctly when using the API functions. - * Handle compiling on an x86-64 platform correctly. - * Menu system from Murali Krishnan Ganapathy; see the menu - directory for information. - * COMBOOT: Allow COMBOOT programs to change screen text mode. - * COMBOOT: Correct the documentation of how to detect - SYSLINUX from COMBOOT!!!! - * COMBOOT: Fix "get key without echo" API function. - * SYSLINUX: Fix bug that affected the API open function. - * ALL: Improve the E820 memory parser, to work around some - buggy BIOSes. - -Changes in 2.08: - * Add new configuration command "ontimeout" to allow timeout - to have a different action than just pressing Enter. - * Add new configuration command "onerror" to allow a custom - command to be executed in case the kernel image is not found. - * Fix bugs in the COMBOOT/COM32 command-line parsing. APPEND - now works with COMBOOT/COM32 images. - * PXELINUX: Poll for ARP requests while sitting at the - prompt. This makes some boot servers a lot less unhappy. - * PXELINUX: Actually free sockets when we get a failure - (including file not found.) This bug would cause us to run - out of sockets and thus "go deaf" after a while. - * MEMDISK: Add an API to query for the existence of MEMDISK. - * SYSLINUX: Fix loading boot sectors (.bs/.bss) from floppy - disk. - * .c32 is now one of the extensions searched for - automatically. - * PXELINUX: RFBG.exe seems to randomly overwrite memory - location 0x5700. Thus, don't use it! - * PXELINUX: Change pathname length max from 63 to 127; change - max vkernels from 128 to 64. - * Support Ctrl-U -> kill entire command line input. - * The "samples" directory contains a (barely at all tested) - chain loading example, chain.c32, which may be used to - chainload local floppy disks and hard disks. Use with - "chain fdN" or "chain hdN [partition]"; N = 0 for the first - drive of each type. - -Changes in 2.07: - * MEMDISK: Workaround for BIOSes which go into a snit when - they get a RESET command for the floppy system when there is - no floppy in the system. - * PXELINUX: Add "ipappend 2", which passes the hardware - address of the boot interface to the kernel as a - command-line option. - * mkdiskimage: fix the generation of the end limit. - * PXELINUX: Fix multiple bugs in chainloading of other NBPs. - * MEMDISK: Fix bug that would occationally cause "ran out of - input data" when using compressed disk images. - * SYSLINUX: Updates for the win32 installer (from Lars Munch.) - * PXELINUX: PXELINUX-specific options are now recognized both - in a vendor-option-space (a.k.a. type 43 encapsulated) as - well as in a site-option-space (unencapsulated.) - * COM32: Don't crash when DS != 0. - * COMBOOT/COM32: Make file reading work correctly. Thanks to - Phung Chi Kien for submitting a test program. - -Changes in 2.06: - * ALL: Fix problem that would occationally cause a - boot failure, depending on the length of the kernel. - * ISOLINUX: Fix problem that would occationally cause a - boot failure, depending on the length of directories. - * SYSLINUX: Win32 installer now flushes buffers. - * ppmtolss16: Be fully compliant with the PNM spec; - actually process comments in the header and odd - alignments of the various parameters, as well as - "plain" (not raw) files and PBM and PGM files. - * PXELINUX: Lower the default MTU to 1472 in order to deal - with systems with slightly nonstandard MTUs, and PXE - stacks which don't defragment correctly. Unfortunately this - is very hard to test dynamically. - -Changes in 2.05: - * PXELINUX: Add a default query based on the hardware address - of the boot device. This is in lower case hexadecimal form - separated by dashes and including the hardware type, for - example, the Ethernet (type 1) address 88:99:AA:BB:CC:DD - would query the file pxelinux.cfg/01-88-99-aa-bb-cc-dd. - * PXELINUX: Fix bug involving non-IP-based config file names. - * SYSLINUX: New installer for WinNT-based systems, from Lars - Munch. - * MEMDISK: Fix handling of memory region overlap when - decompressing. Thanks to Mikhail Kupchik for identifying - the problem. - -Changes in 2.04: - * ALL: Reclaim even more low memory by observing that - comboot_seg == real_mode_seg is perfectly fine, and by the - fact that the 1000h segment managed to get unused in all - derivatives... - * PXELINUX: Attempt to negotiate full Ethernet-sized blocks - (1468 bytes) using the blksize option. - * SYSLINUX: Resurrect the old no-mtools version of the - installer, although as a root-only tool. Some distributors - have indicated that they need a small standalone installer. - * MEMDISK: Fix a memory offset computation error when - installing compressed disks which generally would cause - 1 MB of memory to be wasted. - * MEMDISK: Fix installing the E820 memory map. Calling - INT 15h AX=0E820h with MEMDISK 2.03 loaded would give a - completely corrupt memory map. - * SYSLINUX: Make libsyslinux a dynamic library, so that it can - be updated separately from client programs. The whole idea, - after all, is to enable alternate programs to become - syslinux installers. - * Include an rpm spec file in the distribution, so rpmbuild - -ta works. - -Changes in 2.03: - * Actually support comment lines in the configuration file. - * PXELINUX: Try to resolve some problems with stack switches. - * PXELINUX: Handle PXE stacks with broken routing. - With these workarounds, the remote install PXE boot floppy - (rbfg.exe) from Argon Technologies should work correctly. - * Fix problems with Perl scripts in UTF-8 locales. - * You probably need NASM 0.98.34 or later to compile this - version. 0.98.36 is recommended. - * MEMDISK: Now supports gzip compressed images. - -Changes in 2.02: - * SYSLINUX: Security flaws have been found in the SYSLINUX - installer when running setuid root. Rewrite the SYSLINUX - installer so it uses mtools instead. It therefore now - requires mtools (specifically mcopy and mattrib) to exist on - your system, but it will not require root privileges and - SHOULD NOT be setuid. - -Changes in 2.01: - * MEMDISK: Fix memory sizing bug when the ramdisk crosses the - 16 MB boundary. - * MEMDISK: Add a "pause" option to stop immediately before - booting, to read off the messages. - * MEMDISK: Support disk images with DOSEMU headers. - * Update the mkdiskimage script to handle newer mtools - versions, and be able to generate disk images with DOSEMU - headers (controlled by the -d option). - * Fix the COM32 sample program. - * PXELINUX, ISOLINUX: Fix some COMBOOT API calls. - * PXELINUX: Doc fix. - * Build SYSLINUX into a small library for encapsulation into - other programs (however, please keep in mind this is a GPL'd - library.) - * SYSLINUX: Make installer work with "owner" in /etc/fstab. - * SYSLINUX: Fix issue with working on nonpartitioned hard disk - devices. THIS CONFIGURATION IS NOT RECOMMENDED. - -Changes in 2.00: - * ALL: Add support for "COM32" (32-bit COMBOOT) images. - * ALL: Add an API for COMBOOT/COM32 images. See comboot.doc - for details. There is a C development environment for - COM32 being created; it should be ready at some point in - the future. - * Fix mbr.asm so that it actually works. - * SYSLINUX: The syslinux installer *SHOULD* now be safe to - run setuid root. - * PXELINUX: Fix bug where PXELINUX would override random - chunks of the UNDI code segment! Thanks to Kevin Tran for - finding this bug. - * ISOLINUX: Fix a bug related to slashes in pathnames. - * ISOLINUX: Fix a bug in handling initrds over 128 MB. - * ALL: Make the key print out the version; this is - to help debugging. - * Add a small script, mkdiskimage, to create a DOS-formatted - hard disk image using mtools. This may be useful in - conjunction with MEMDISK. - * ISOLINUX: Search for a /boot/isolinux directory as well as - /isolinux. - * ALL: Fix a bug related to very long configuration files. - * PXELINUX: Work around a NASM bug which would result in no - delay before reset if an error occurs. - -Changes in 1.76: - * ISOLINUX: Remove code no longer used which caused hangs on - some Toshiba laptops. - -Changes in 1.75: - * ALL: NASM 0.98.32 or later is now required to build - SYSLINUX from sources. - * SYSLINUX: put back in the workaround for the BIOS floppy - table. This seems to be a requirement for "extended" floppy - formats to work correctly. - * SYSLINUX: No longer warn if one is trying to boot on a 286 - or older. The above BIOS workaround no longer fits if the - requirement to use only 8086-compatible code in the early - boot is maintained. It made sense in 1994, but in 2002 a - 286 or older is a museum object. - * SYSLINUX: Use a downright bizarre, stateful algorithm to try - to guess the maximum transfer size. I am *hoping* this will - cut down on the number of systems for which -s is required - to work at any acceptable speed. - * ISOLINUX: Add a few more workarounds for various broken El - Torito BIOSes. - * Make sure .depend files aren't accidentally packed... - * ALL: Fix bugs in the extension-detect code; this caused - files like COMBOOT images and CD boot sectors to be - mis-identified as Linux kernels and rejected. - * ALL: Fix the return from COMBOOT. - * ALL: Do some of the early groundwork for supporting DOS - system calls in COMBOOT. - * Get rid of unnecessary "near" directives, making the code - bigger. - * PXELINUX: Put the PXE stack back in the init state before - invoking a chain-loaded NBP. - * PXELINUX: Actually found the combination of calls that - allows some (most?) PXE 2+ stacks to be unloaded from memory - properly. - * PXELINUX: Add "keeppxe" command-line option to disable - the standard unloading of the PXE stack. - -Changes in 1.74: - * SYSLINUX: fix bug that would cause valid kernel images to be - labelled "invalid". - -Changes in 1.73: - * Work on removing gratuitous differences between modules. - * Break up the source in common and module-specific files. - * PXELINUX: Allow chaining of other PXE NBPs. - * ISOLINUX: Allow loading "CD-ROM boot sectors". - * ALL: generalize the definition of a boot sector/NBP. - -Changes in 1.72: - * PXELINUX, ISOLINUX: Fix bugs in the new core code. - -Changes in 1.71: - * Fix a "brown paper bag" class bug in the new core code. - -Changes in 1.70: - * Major code restructuring. - * Relax the conventional memory limits somewhat. - * MEMDISK: Set up the "version number string" pointer in the - header correctly. - * SYSLINUX: Fix, again, "the bug that won't die": the use of - the offset parameter with the SYSLINUX installer. - * SYSLINUX: Fix possible superblock corruption problem in the - SYSLINUX installer. - -Changes in 1.67: - * Handle bug in the location of initrd. - -Changes in 1.66: - * MEMDISK: Make compile with newer versions of gcc. - -Changes in 1.65: - * ISOLINUX: Support booting disk image files (to boot DOS or - other non-Linux operating systems), *IF* the BIOS works - correctly; unfortunately many BIOSes apparently don't. - * Support Linux boot protocol version 2.03 (explicitly - specify the initrd address limit.) - * Handle small "pseudo-kernels"; images that use the Linux - kernel boot protocols but are less than 64K in size. - * MEMDISK: New subsystem; this is a driver which allows - legacy OSes to boot using an in-memory simulated disk. - See memdisk/memdisk.doc for more info. - * PXELINUX, ISOLINUX: Correctly handle files larger than 65535 - blocks (32 MB for PXELINUX, 128 MB for ISOLINUX.) - * PXELINUX: Make a best-effort attempt at freeing all memory - claimed. From the looks of it, it will fail on most PXE - stacks. - -Changes in 1.64: - * Limited support for hardware flow control when using a - serial port console. - * Support specifying the serial port I/O address explicitly. - * Make DOS installer hopefully behave more nicely when used on - recent Windows versions. - * Fix returning to text mode when a font has been specified. - * Attempt to detect missing serial port hardware and disable - the serial port if there is nothing there. - -Changes in 1.63: - * Make the ppmtolss16 program handle color conversion more - correctly. - * Clean up "make install" target, honour INSTALLROOT if it - exists. - * SYSLINUX: Fix stack-smash bug identified by Steffen - Winterfeldt. - * Hopefully fix return-to-text-mode on some graphics cards. - * ISOLINUX: Bug workaround for Award BIOS 4.51, and perhaps - other buggy BIOSes as well. - -Changes in 1.62: - * PXELINUX: Allow the DHCP server to override the - configuration file name and pathname prefix, using - "site-specific" DHCP options. - * PXELINUX: Documentation fixes. - * PXELINUX: Fix the "ipappend" option; the last two values - were reversed vs. what the kernel expected. - * Introduce a way to return to text mode once we are already - in graphics mode. This may be useful for F-key help - screens. - * Fix several bugs in the way return to text mode was handled. - -Changes in 1.61: - * ISOLINUX: Support full pathname searches. Max length for a - pathname is 255 characters. As a result, only 64 "label" - statements are supported in ISOLINUX. - * PXELINUX: Max filename length extended to 63 characters. - -Changes in 1.60: - * Add support for graphical splash screens. - * Add mode control characters, which allows you to control - message display output depending on output mode (text, - graphics, or serial port.) - * ISOLINUX: New program, which boots Linux from a CD-ROM - without using floppy emulation mode. See isolinux.doc for - more details. - * PXELINUX: Don't search for boot sector file types, since - they don't work anyway. - * SYSLINUX: Document the LOCK command for Win9x, and the error - dialog box for WinNT/2K. - -Changes in 1.54: - * PXELINUX: Fix code for finding !PXE from PXENV+. This was - due to a spec bug; match the most recent spec since that - seems to be what implementations actually do. - * SYSLINUX: Add some smarts to the boot sector, which - hopefully should reduce the number of systems which require - stupid mode ("syslinux -s"). - * PXELINUX: Document further some of the pathologies with old - PXE stacks. - * When specifying a "default" command line, no longer - automatically appent "auto". See the "DEFAULT" command in - syslinux.doc for more information. - * PXELINUX: Clean up the allocation of local socket numbers. - -Changes in 1.53: - * PXELINUX: Rename pxelinux.bin to pxelinux.0, to match what - most PXE servers seem to expect. - * PXELINUX: Update the DHCP/boot server setup documentation. - * PXELINUX: Support new "localboot" option for "label" - sections. - * PXELINUX: More robust parsing of DHCP/boot server packets. - * PXELINUX: Include a small utility program "gethostip" to - compute hexadecimal IP addresses. - -Changes in 1.52: - * PXELINUX: Fix bugs introduced by new A20 code. (SYSLINUX - has also been changed for code consistency reasons, but I'm - pretty sure the changes are don't care on SYSLINUX.) - * Documentation updates. - * PXELINUX: Add "ipappend" option to generate an ip= option to - the kernel. - -Changes in 1.51: - * PXELINUX: Not all PXE stacks fill in the IP address for a - type 3 cached info query. Use a type 2 cached info query - for this information (only.) - * Yet another attempt at A20 coding. Now support BIOS call - 15:2401 as well, and handle machines which always have A20 - on separately. - * Support memory detection using INT 15h, AX=0E820h. BIOS - manufacturers have apparently gotten sloppy about keeping - INT 15h, AX=0E801h working properly. - * Don't issue onto the serial port when we're doing - screen wraparound. - -Changes in 1.50: - * Yet another A20-code update. It seems some "legacy-free" - machines and embedded gear simply don't have a KBC to talk - to, and that waiting for one will wait forever. Sigh. - -Changes in 1.49: - * SYSLINUX: Implement a hack for BIOS drivers which hog significant - chunks of low memory during boot. (Note: PXELINUX already - had this modification. SYSLINUX does still require that the - low 512K is available; PXELINUX requires 384K. Machines - with a physical memory hole in the low 640K cannot boot - Linux no matter what.) Depending what the reason is for the - memory hole, a new kernel (2.4.0-test3-pre3 or later) may be - required. - * SYSLINUX: Default installer binary now compiled against - glibc 2.1. If this is inappropriate for your system and you - still want to use the offical version of SYSLINUX, please - follow the instructions in "distrib.doc" to rebuild the - installer. - * SYSLINUX: Linux installer program now supports -o - option which does a loopback mount with the - -o loop,offset=<> option. Useful to run SYSLINUX on an - individual partition of a whole-harddisk image. - * Include the source code to a Master Boot Record (MBR) - functionally equivalent to the one installed DOS except it - includes EBIOS support, and should be resistant to geometry - changes. The MBR code is public domain. - * PXELINUX: Fix "double p" bug: if the tftp prefix was null, - all filenames would get a "p" preprended, e.g. - "ppxelinux.cfg" and "pvmlinux". - -Changes in 1.48: - * PXELINUX: Workaround for PXE ROMs based on the Intel PXE PDK - 3.0 build 071 and earlier: missing !PXE structure pointer. - * PXELINUX: Handle larger BOOTP/DHCP packages. - * PXELINUX: The command line passing was broken; fix. - * PXELINUX: Make COMBOOT images work. - * PXELINUX: Documentation on how to make booting work using - the PDK 3.0-derived clients, which aren't so generous as to - allow booting with only "PXEClient" specified. - -Changes in 1.47: - * PXELINUX: RFC 1123 states that a TFTP implementation MUST - use adaptive timeout, "at least an exponential backoff of - retransmission timeout is necessary." Implement a very - simple exponential backoff for retransmits. - * PXELINUX: Updated documentation, including pointer to new - TFTP server. - * PXELINUX: When sending ERROR due to bad OACK, use the proper - destination port number (why are TFTP port numbers so odd?) - * PXELINUX: If the boot dies in the middle somewhere, - eventually give up and reset the machine (unattended - operation.) - -Changes in 1.46: - * New program PXELINUX to do network booting using a - PXE-compliant (Pre-Execution Environment) network booting - PROM. See pxelinux.doc for details. - -Changes in 1.45: - * Serial console support. See syslinux.doc for details. - -Changes in 1.44: - * Change HIGHMEM_MAX to 38000000h to (hopefully) avoid the - kernel stepping on it; 3f000000h was apparently a higher - limit than the kernel used! - -Changes in 1.43: - * Add sys2ansi.pl script to display the contents of a - colorized SYSLINUX file. - * Changed the io_delay once again, after a report that the - old delay port causes hangs on some systems. - -Changes in 1.42: - * Frob the "fast A20 gate" port as well as the keyboard - controller; will this help systems with problems? - * Be even more paranoid about A20, unfortunately even this - seems to be not paranoid enough... what I don't understand - is that if there is hardware out there *this broken*, how - can it run Linux at all? Report an error message rather - than hang forever if A20 is stuck. - * Include some intermediate files in the distribution, plus - provide a "make installer" target for distributors to relink - the install programs only. I would prefer the syslinux boot - loader proper to be "binary clean" for debuggablity -- use - "make clean ; make installer" to rebuild the installers only. - -Changes in 1.41: - * Don't get confused by directories, volume labels, or VFAT - long names. - * Use INT 15h, AX=0E801h to query memory size before trying - INT 15h, AH=88h. This not only provides more headroom - between the kernel and the initrd on large-memory machines, - but it appears some recent BIOSes actually have started - returning garbage for the AH=88h (older) call. - * Trust high memory beyond the 15 MB mark if the user has - specified it, or if obtained with INT 15h, AH=0E801h (with - no memory holes above 1 MB.) - -Changes in 1.40: - * Increase A20M delay and put in a test to avoid problems on - certain IBM Thinkpads (thanks to Donnie Barnes of RedHat - for vital info on this one.) - * Support COMBOOT style boot command images. - * Support chain loading (foreign operating systems, e.g. DOS). - * Include a new "copybs" DOS utility to copy a boot sector to - a file (under Linux, use "dd".) - * Fix the DOS installer to work for disks over 32 MB. - * SYSLINUX should now handle disks with more than 65536 tracks. - -Changes in 1.37: - * Fix a bug that caused "label" statements in syslinux.cfg to - not be handled properly. - * Updated the documentation. Among other things, we now allow - up to 128 "label" statements. - -Changes in 1.36: - * Fix for booting old (pre-initrd) kernels. - * It seems at least some versions of OS/2 doesn't set up all - the fields in the superblock correctly. Account for that. - * Fix bug that caused boot failure when using the mem= option. - -Changes in 1.35: - * Loading from partitions now should work properly. (Actually - tested, this time. You should even be able to dd a floppy - to a partition and boot from it.) - * Removed large workaround code for an alleged ancient BIOS - bug I have never actually seen. The -s option should work - on those machines, anyway. - * Support for simple keyboard remappings, same as used by - LILO (once again to support localization.) The program - keytab-lilo.pl from the LILO distribution included to - generate such maps. - * Added a "safe, slow and stupid" (-s) option to the - installers. This option will lobotomize the boot sector to - hopefully work on even very buggy BIOSes. - -Changes in 1.34: - * Ability to load a VGA font on bootup (for localized Linux - distributions.) - -Changes in 1.33: - * Bug fix in the Linux installer. - * Added a workaround for a bug in certain AMI/Intel BIOSes - when booting from CD-ROM. - * Documentation changes. - -Changes in 1.32: - * FAT16 filesystems are now supported. - -Changes in 1.31: - * Now compiles under Linux, using NASM, rather than using - Turbo Assembler under DOS. See http://www.cryogen.com/Nasm - for information about NASM. - * Linux-hosted SYSLINUX installer, as well as a - rewritten DOS installer (now is written in assembler, so we - don't need Turbo C.) - -Changes in 1.30: - * Added support for loading bzImage and initrd loading, and made - SYSLINUX new-setup-code aware (SYSLINUX 1.30 id=0x31). - * Added LILO-style kernel labels; see the LABEL and IMPLICIT - keywords in README file. - * Added support for colorization of intro and help screens. - * The vga= option is now handled correctly. - * Massive rewrite of large chunks of the code in order to - support the first two new features. - -Changes in 1.20: - * Added simple online help at the "boot:" prompt. - * Removed 2880K image as I no longer have access to such a - floppy drive. (Donations accepted!!) - * Decided to distribute the source in a subdirectory rather - than in a nested zipfile. - -Changes in 1.11: - * Removed a sanity check which would cause booting to fail on - Phoenix BIOS version 4.03. Apparently this BIOS is buggy. - -Changes in 1.10: - * Added configuration file SYSLINUX.CFG. This file contains all - configurable options, and can be edited from any OS which can - access an MS-DOS filesystem; there is no longer a need to run - SYSLINUX.EXE except to write the boot sector. - * Default command line now given by "default" line in config - file. - * LINUXMSG.TXT and BOOTMSG.TXT hard-coded file names replaced by - "display" and "prompt" lines in config file. - * LILO-style option appending now supported ("append" line in - config file). - * Prompt timeout is now supported ("timeout" line in config - file). The timeout is cancelled when anything is typed on the - command line. - * Pressing or at the Loading... stage now aborts - the kernel loading in progress and returns the user to the - boot: prompt. - * The installer now automatically sets the READONLY flag on - LDLINUX.SYS. - * Added 2880K disk image. - -Changes in 1.03: - * Fixed bug that would prevent booting from double-density - floppies and other DOS filesystems with multiple sectors per - cluster. - * Added 720K disk image. - * Changed default kernel name on disk images to LINUX. - -Changes in 1.02: - * Fixed bug that would garble the command line on recent kernels - with more than 4 sectors of setup code (this wasn't really a - *bug*; rather, a kernel change broke the code. Unfortunately - the Linux boot interface is still sorely undocumented). - * Added BOOTMSG.TXT file support (message file which does not - force display of the boot prompt). - -Changes in 1.01: - * Fixed bug on some (most?) 386 BIOSes would require two boot - attempts. diff --git a/config/release/3rdparty/syslinux/README b/config/release/3rdparty/syslinux/README deleted file mode 100644 index 08a82e427a..0000000000 --- a/config/release/3rdparty/syslinux/README +++ /dev/null @@ -1,34 +0,0 @@ -See the files in the doc directory for documentation about SYSLINUX: - - syslinux.txt - Usage instructions; manual. - distrib.txt - For creators of Linux distributions. - pxelinux.txt - Documentation specific to PXELINUX. - isolinux.txt - Documentation specific to ISOLINUX. - extlinux.txt - Documentation specific to EXTLINUX. - menu.txt - About the menu systems. - usbkey.txt - About using SYSLINUX on USB keys. - comboot.txt - About the extension API. - memdisk.txt - Documentation about MEMDISK. - -Also see the files: - - NEWS - List of changes from previous releases. - TODO - About features planned for future releases. - COPYING - For the license terms of this software. - -SYSLINUX now builds in a Linux environment, using nasm. You need nasm -version 2.03 or later (2.07 or later recommended) to build SYSLINUX -from source. See http://www.nasm.us/ for information about nasm. - -There is now a mailing list for SYSLINUX. See the end of syslinux.txt -for details. - -SYSLINUX is: - - Copyright 1994-2011 H. Peter Anvin et al - All Rights Reserved - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, Inc., 53 Temple Place Ste 330, - Boston MA 02111-1307, USA; either version 2 of the License, or - (at your option) any later version; incorporated herein by reference. diff --git a/config/release/3rdparty/syslinux/doc/CodingStyle.txt b/config/release/3rdparty/syslinux/doc/CodingStyle.txt deleted file mode 100644 index e79e65a6b3..0000000000 --- a/config/release/3rdparty/syslinux/doc/CodingStyle.txt +++ /dev/null @@ -1,831 +0,0 @@ -Syslinux uses Linux kernel coding style, except that we are "heretic" -in the sense of using 4 spaces instead of 8 for indentation. - -This coding style will be applied after the 3.81 release. - - - ------------------------------------------------- - - Linux kernel coding style - -This is a short document describing the preferred coding style for the -linux kernel. Coding style is very personal, and I won't _force_ my -views on anybody, but this is what goes for anything that I have to be -able to maintain, and I'd prefer it for most other things too. Please -at least consider the points made here. - -First off, I'd suggest printing out a copy of the GNU coding standards, -and NOT read it. Burn them, it's a great symbolic gesture. - -Anyway, here goes: - - - Chapter 1: Indentation - -Tabs are 8 characters, and thus indentations are also 8 characters. -There are heretic movements that try to make indentations 4 (or even 2!) -characters deep, and that is akin to trying to define the value of PI to -be 3. - -Rationale: The whole idea behind indentation is to clearly define where -a block of control starts and ends. Especially when you've been looking -at your screen for 20 straight hours, you'll find it a lot easier to see -how the indentation works if you have large indentations. - -Now, some people will claim that having 8-character indentations makes -the code move too far to the right, and makes it hard to read on a -80-character terminal screen. The answer to that is that if you need -more than 3 levels of indentation, you're screwed anyway, and should fix -your program. - -In short, 8-char indents make things easier to read, and have the added -benefit of warning you when you're nesting your functions too deep. -Heed that warning. - -The preferred way to ease multiple indentation levels in a switch statement is -to align the "switch" and its subordinate "case" labels in the same column -instead of "double-indenting" the "case" labels. E.g.: - - switch (suffix) { - case 'G': - case 'g': - mem <<= 30; - break; - case 'M': - case 'm': - mem <<= 20; - break; - case 'K': - case 'k': - mem <<= 10; - /* fall through */ - default: - break; - } - - -Don't put multiple statements on a single line unless you have -something to hide: - - if (condition) do_this; - do_something_everytime; - -Don't put multiple assignments on a single line either. Kernel coding style -is super simple. Avoid tricky expressions. - -Outside of comments, documentation and except in Kconfig, spaces are never -used for indentation, and the above example is deliberately broken. - -Get a decent editor and don't leave whitespace at the end of lines. - - - Chapter 2: Breaking long lines and strings - -Coding style is all about readability and maintainability using commonly -available tools. - -The limit on the length of lines is 80 columns and this is a strongly -preferred limit. - -Statements longer than 80 columns will be broken into sensible chunks. -Descendants are always substantially shorter than the parent and are placed -substantially to the right. The same applies to function headers with a long -argument list. Long strings are as well broken into shorter strings. The -only exception to this is where exceeding 80 columns significantly increases -readability and does not hide information. - -void fun(int a, int b, int c) -{ - if (condition) - printk(KERN_WARNING "Warning this is a long printk with " - "3 parameters a: %u b: %u " - "c: %u \n", a, b, c); - else - next_statement; -} - - Chapter 3: Placing Braces and Spaces - -The other issue that always comes up in C styling is the placement of -braces. Unlike the indent size, there are few technical reasons to -choose one placement strategy over the other, but the preferred way, as -shown to us by the prophets Kernighan and Ritchie, is to put the opening -brace last on the line, and put the closing brace first, thusly: - - if (x is true) { - we do y - } - -This applies to all non-function statement blocks (if, switch, for, -while, do). E.g.: - - switch (action) { - case KOBJ_ADD: - return "add"; - case KOBJ_REMOVE: - return "remove"; - case KOBJ_CHANGE: - return "change"; - default: - return NULL; - } - -However, there is one special case, namely functions: they have the -opening brace at the beginning of the next line, thus: - - int function(int x) - { - body of function - } - -Heretic people all over the world have claimed that this inconsistency -is ... well ... inconsistent, but all right-thinking people know that -(a) K&R are _right_ and (b) K&R are right. Besides, functions are -special anyway (you can't nest them in C). - -Note that the closing brace is empty on a line of its own, _except_ in -the cases where it is followed by a continuation of the same statement, -ie a "while" in a do-statement or an "else" in an if-statement, like -this: - - do { - body of do-loop - } while (condition); - -and - - if (x == y) { - .. - } else if (x > y) { - ... - } else { - .... - } - -Rationale: K&R. - -Also, note that this brace-placement also minimizes the number of empty -(or almost empty) lines, without any loss of readability. Thus, as the -supply of new-lines on your screen is not a renewable resource (think -25-line terminal screens here), you have more empty lines to put -comments on. - -Do not unnecessarily use braces where a single statement will do. - -if (condition) - action(); - -This does not apply if one branch of a conditional statement is a single -statement. Use braces in both branches. - -if (condition) { - do_this(); - do_that(); -} else { - otherwise(); -} - - 3.1: Spaces - -Linux kernel style for use of spaces depends (mostly) on -function-versus-keyword usage. Use a space after (most) keywords. The -notable exceptions are sizeof, typeof, alignof, and __attribute__, which look -somewhat like functions (and are usually used with parentheses in Linux, -although they are not required in the language, as in: "sizeof info" after -"struct fileinfo info;" is declared). - -So use a space after these keywords: - if, switch, case, for, do, while -but not with sizeof, typeof, alignof, or __attribute__. E.g., - s = sizeof(struct file); - -Do not add spaces around (inside) parenthesized expressions. This example is -*bad*: - - s = sizeof( struct file ); - -When declaring pointer data or a function that returns a pointer type, the -preferred use of '*' is adjacent to the data name or function name and not -adjacent to the type name. Examples: - - char *linux_banner; - unsigned long long memparse(char *ptr, char **retptr); - char *match_strdup(substring_t *s); - -Use one space around (on each side of) most binary and ternary operators, -such as any of these: - - = + - < > * / % | & ^ <= >= == != ? : - -but no space after unary operators: - & * + - ~ ! sizeof typeof alignof __attribute__ defined - -no space before the postfix increment & decrement unary operators: - ++ -- - -no space after the prefix increment & decrement unary operators: - ++ -- - -and no space around the '.' and "->" structure member operators. - -Do not leave trailing whitespace at the ends of lines. Some editors with -"smart" indentation will insert whitespace at the beginning of new lines as -appropriate, so you can start typing the next line of code right away. -However, some such editors do not remove the whitespace if you end up not -putting a line of code there, such as if you leave a blank line. As a result, -you end up with lines containing trailing whitespace. - -Git will warn you about patches that introduce trailing whitespace, and can -optionally strip the trailing whitespace for you; however, if applying a series -of patches, this may make later patches in the series fail by changing their -context lines. - - - Chapter 4: Naming - -C is a Spartan language, and so should your naming be. Unlike Modula-2 -and Pascal programmers, C programmers do not use cute names like -ThisVariableIsATemporaryCounter. A C programmer would call that -variable "tmp", which is much easier to write, and not the least more -difficult to understand. - -HOWEVER, while mixed-case names are frowned upon, descriptive names for -global variables are a must. To call a global function "foo" is a -shooting offense. - -GLOBAL variables (to be used only if you _really_ need them) need to -have descriptive names, as do global functions. If you have a function -that counts the number of active users, you should call that -"count_active_users()" or similar, you should _not_ call it "cntusr()". - -Encoding the type of a function into the name (so-called Hungarian -notation) is brain damaged - the compiler knows the types anyway and can -check those, and it only confuses the programmer. No wonder MicroSoft -makes buggy programs. - -LOCAL variable names should be short, and to the point. If you have -some random integer loop counter, it should probably be called "i". -Calling it "loop_counter" is non-productive, if there is no chance of it -being mis-understood. Similarly, "tmp" can be just about any type of -variable that is used to hold a temporary value. - -If you are afraid to mix up your local variable names, you have another -problem, which is called the function-growth-hormone-imbalance syndrome. -See chapter 6 (Functions). - - - Chapter 5: Typedefs - -Please don't use things like "vps_t". - -It's a _mistake_ to use typedef for structures and pointers. When you see a - - vps_t a; - -in the source, what does it mean? - -In contrast, if it says - - struct virtual_container *a; - -you can actually tell what "a" is. - -Lots of people think that typedefs "help readability". Not so. They are -useful only for: - - (a) totally opaque objects (where the typedef is actively used to _hide_ - what the object is). - - Example: "pte_t" etc. opaque objects that you can only access using - the proper accessor functions. - - NOTE! Opaqueness and "accessor functions" are not good in themselves. - The reason we have them for things like pte_t etc. is that there - really is absolutely _zero_ portably accessible information there. - - (b) Clear integer types, where the abstraction _helps_ avoid confusion - whether it is "int" or "long". - - u8/u16/u32 are perfectly fine typedefs, although they fit into - category (d) better than here. - - NOTE! Again - there needs to be a _reason_ for this. If something is - "unsigned long", then there's no reason to do - - typedef unsigned long myflags_t; - - but if there is a clear reason for why it under certain circumstances - might be an "unsigned int" and under other configurations might be - "unsigned long", then by all means go ahead and use a typedef. - - (c) when you use sparse to literally create a _new_ type for - type-checking. - - (d) New types which are identical to standard C99 types, in certain - exceptional circumstances. - - Although it would only take a short amount of time for the eyes and - brain to become accustomed to the standard types like 'uint32_t', - some people object to their use anyway. - - Therefore, the Linux-specific 'u8/u16/u32/u64' types and their - signed equivalents which are identical to standard types are - permitted -- although they are not mandatory in new code of your - own. - - When editing existing code which already uses one or the other set - of types, you should conform to the existing choices in that code. - - (e) Types safe for use in userspace. - - In certain structures which are visible to userspace, we cannot - require C99 types and cannot use the 'u32' form above. Thus, we - use __u32 and similar types in all structures which are shared - with userspace. - -Maybe there are other cases too, but the rule should basically be to NEVER -EVER use a typedef unless you can clearly match one of those rules. - -In general, a pointer, or a struct that has elements that can reasonably -be directly accessed should _never_ be a typedef. - - - Chapter 6: Functions - -Functions should be short and sweet, and do just one thing. They should -fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24, -as we all know), and do one thing and do that well. - -The maximum length of a function is inversely proportional to the -complexity and indentation level of that function. So, if you have a -conceptually simple function that is just one long (but simple) -case-statement, where you have to do lots of small things for a lot of -different cases, it's OK to have a longer function. - -However, if you have a complex function, and you suspect that a -less-than-gifted first-year high-school student might not even -understand what the function is all about, you should adhere to the -maximum limits all the more closely. Use helper functions with -descriptive names (you can ask the compiler to in-line them if you think -it's performance-critical, and it will probably do a better job of it -than you would have done). - -Another measure of the function is the number of local variables. They -shouldn't exceed 5-10, or you're doing something wrong. Re-think the -function, and split it into smaller pieces. A human brain can -generally easily keep track of about 7 different things, anything more -and it gets confused. You know you're brilliant, but maybe you'd like -to understand what you did 2 weeks from now. - -In source files, separate functions with one blank line. If the function is -exported, the EXPORT* macro for it should follow immediately after the closing -function brace line. E.g.: - -int system_is_up(void) -{ - return system_state == SYSTEM_RUNNING; -} -EXPORT_SYMBOL(system_is_up); - -In function prototypes, include parameter names with their data types. -Although this is not required by the C language, it is preferred in Linux -because it is a simple way to add valuable information for the reader. - - - Chapter 7: Centralized exiting of functions - -Albeit deprecated by some people, the equivalent of the goto statement is -used frequently by compilers in form of the unconditional jump instruction. - -The goto statement comes in handy when a function exits from multiple -locations and some common work such as cleanup has to be done. - -The rationale is: - -- unconditional statements are easier to understand and follow -- nesting is reduced -- errors by not updating individual exit points when making - modifications are prevented -- saves the compiler work to optimize redundant code away ;) - -int fun(int a) -{ - int result = 0; - char *buffer = kmalloc(SIZE); - - if (buffer == NULL) - return -ENOMEM; - - if (condition1) { - while (loop1) { - ... - } - result = 1; - goto out; - } - ... -out: - kfree(buffer); - return result; -} - - Chapter 8: Commenting - -Comments are good, but there is also a danger of over-commenting. NEVER -try to explain HOW your code works in a comment: it's much better to -write the code so that the _working_ is obvious, and it's a waste of -time to explain badly written code. - -Generally, you want your comments to tell WHAT your code does, not HOW. -Also, try to avoid putting comments inside a function body: if the -function is so complex that you need to separately comment parts of it, -you should probably go back to chapter 6 for a while. You can make -small comments to note or warn about something particularly clever (or -ugly), but try to avoid excess. Instead, put the comments at the head -of the function, telling people what it does, and possibly WHY it does -it. - -When commenting the kernel API functions, please use the kernel-doc format. -See the files Documentation/kernel-doc-nano-HOWTO.txt and scripts/kernel-doc -for details. - -Linux style for comments is the C89 "/* ... */" style. -Don't use C99-style "// ..." comments. - -The preferred style for long (multi-line) comments is: - - /* - * This is the preferred style for multi-line - * comments in the Linux kernel source code. - * Please use it consistently. - * - * Description: A column of asterisks on the left side, - * with beginning and ending almost-blank lines. - */ - -It's also important to comment data, whether they are basic types or derived -types. To this end, use just one data declaration per line (no commas for -multiple data declarations). This leaves you room for a small comment on each -item, explaining its use. - - - Chapter 9: You've made a mess of it - -That's OK, we all do. You've probably been told by your long-time Unix -user helper that "GNU emacs" automatically formats the C sources for -you, and you've noticed that yes, it does do that, but the defaults it -uses are less than desirable (in fact, they are worse than random -typing - an infinite number of monkeys typing into GNU emacs would never -make a good program). - -So, you can either get rid of GNU emacs, or change it to use saner -values. To do the latter, you can stick the following in your .emacs file: - -(defun c-lineup-arglist-tabs-only (ignored) - "Line up argument lists by tabs, not spaces" - (let* ((anchor (c-langelem-pos c-syntactic-element)) - (column (c-langelem-2nd-pos c-syntactic-element)) - (offset (- (1+ column) anchor)) - (steps (floor offset c-basic-offset))) - (* (max steps 1) - c-basic-offset))) - -(add-hook 'c-mode-common-hook - (lambda () - ;; Add kernel style - (c-add-style - "linux-tabs-only" - '("linux" (c-offsets-alist - (arglist-cont-nonempty - c-lineup-gcc-asm-reg - c-lineup-arglist-tabs-only)))))) - -(add-hook 'c-mode-hook - (lambda () - (let ((filename (buffer-file-name))) - ;; Enable kernel mode for the appropriate files - (when (and filename - (string-match (expand-file-name "~/src/linux-trees") - filename)) - (setq indent-tabs-mode t) - (c-set-style "linux-tabs-only"))))) - -This will make emacs go better with the kernel coding style for C -files below ~/src/linux-trees. - -But even if you fail in getting emacs to do sane formatting, not -everything is lost: use "indent". - -Now, again, GNU indent has the same brain-dead settings that GNU emacs -has, which is why you need to give it a few command line options. -However, that's not too bad, because even the makers of GNU indent -recognize the authority of K&R (the GNU people aren't evil, they are -just severely misguided in this matter), so you just give indent the -options "-kr -i8" (stands for "K&R, 8 character indents"), or use -"scripts/Lindent", which indents in the latest style. - -"indent" has a lot of options, and especially when it comes to comment -re-formatting you may want to take a look at the man page. But -remember: "indent" is not a fix for bad programming. - - - Chapter 10: Kconfig configuration files - -For all of the Kconfig* configuration files throughout the source tree, -the indentation is somewhat different. Lines under a "config" definition -are indented with one tab, while help text is indented an additional two -spaces. Example: - -config AUDIT - bool "Auditing support" - depends on NET - help - Enable auditing infrastructure that can be used with another - kernel subsystem, such as SELinux (which requires this for - logging of avc messages output). Does not do system-call - auditing without CONFIG_AUDITSYSCALL. - -Features that might still be considered unstable should be defined as -dependent on "EXPERIMENTAL": - -config SLUB - depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT - bool "SLUB (Unqueued Allocator)" - ... - -while seriously dangerous features (such as write support for certain -filesystems) should advertise this prominently in their prompt string: - -config ADFS_FS_RW - bool "ADFS write support (DANGEROUS)" - depends on ADFS_FS - ... - -For full documentation on the configuration files, see the file -Documentation/kbuild/kconfig-language.txt. - - - Chapter 11: Data structures - -Data structures that have visibility outside the single-threaded -environment they are created and destroyed in should always have -reference counts. In the kernel, garbage collection doesn't exist (and -outside the kernel garbage collection is slow and inefficient), which -means that you absolutely _have_ to reference count all your uses. - -Reference counting means that you can avoid locking, and allows multiple -users to have access to the data structure in parallel - and not having -to worry about the structure suddenly going away from under them just -because they slept or did something else for a while. - -Note that locking is _not_ a replacement for reference counting. -Locking is used to keep data structures coherent, while reference -counting is a memory management technique. Usually both are needed, and -they are not to be confused with each other. - -Many data structures can indeed have two levels of reference counting, -when there are users of different "classes". The subclass count counts -the number of subclass users, and decrements the global count just once -when the subclass count goes to zero. - -Examples of this kind of "multi-level-reference-counting" can be found in -memory management ("struct mm_struct": mm_users and mm_count), and in -filesystem code ("struct super_block": s_count and s_active). - -Remember: if another thread can find your data structure, and you don't -have a reference count on it, you almost certainly have a bug. - - - Chapter 12: Macros, Enums and RTL - -Names of macros defining constants and labels in enums are capitalized. - -#define CONSTANT 0x12345 - -Enums are preferred when defining several related constants. - -CAPITALIZED macro names are appreciated but macros resembling functions -may be named in lower case. - -Generally, inline functions are preferable to macros resembling functions. - -Macros with multiple statements should be enclosed in a do - while block: - -#define macrofun(a, b, c) \ - do { \ - if (a == 5) \ - do_this(b, c); \ - } while (0) - -Things to avoid when using macros: - -1) macros that affect control flow: - -#define FOO(x) \ - do { \ - if (blah(x) < 0) \ - return -EBUGGERED; \ - } while(0) - -is a _very_ bad idea. It looks like a function call but exits the "calling" -function; don't break the internal parsers of those who will read the code. - -2) macros that depend on having a local variable with a magic name: - -#define FOO(val) bar(index, val) - -might look like a good thing, but it's confusing as hell when one reads the -code and it's prone to breakage from seemingly innocent changes. - -3) macros with arguments that are used as l-values: FOO(x) = y; will -bite you if somebody e.g. turns FOO into an inline function. - -4) forgetting about precedence: macros defining constants using expressions -must enclose the expression in parentheses. Beware of similar issues with -macros using parameters. - -#define CONSTANT 0x4000 -#define CONSTEXP (CONSTANT | 3) - -The cpp manual deals with macros exhaustively. The gcc internals manual also -covers RTL which is used frequently with assembly language in the kernel. - - - Chapter 13: Printing kernel messages - -Kernel developers like to be seen as literate. Do mind the spelling -of kernel messages to make a good impression. Do not use crippled -words like "dont"; use "do not" or "don't" instead. Make the messages -concise, clear, and unambiguous. - -Kernel messages do not have to be terminated with a period. - -Printing numbers in parentheses (%d) adds no value and should be avoided. - -There are a number of driver model diagnostic macros in -which you should use to make sure messages are matched to the right device -and driver, and are tagged with the right level: dev_err(), dev_warn(), -dev_info(), and so forth. For messages that aren't associated with a -particular device, defines pr_debug() and pr_info(). - -Coming up with good debugging messages can be quite a challenge; and once -you have them, they can be a huge help for remote troubleshooting. Such -messages should be compiled out when the DEBUG symbol is not defined (that -is, by default they are not included). When you use dev_dbg() or pr_debug(), -that's automatic. Many subsystems have Kconfig options to turn on -DDEBUG. -A related convention uses VERBOSE_DEBUG to add dev_vdbg() messages to the -ones already enabled by DEBUG. - - - Chapter 14: Allocating memory - -The kernel provides the following general purpose memory allocators: -kmalloc(), kzalloc(), kcalloc(), and vmalloc(). Please refer to the API -documentation for further information about them. - -The preferred form for passing a size of a struct is the following: - - p = kmalloc(sizeof(*p), ...); - -The alternative form where struct name is spelled out hurts readability and -introduces an opportunity for a bug when the pointer variable type is changed -but the corresponding sizeof that is passed to a memory allocator is not. - -Casting the return value which is a void pointer is redundant. The conversion -from void pointer to any other pointer type is guaranteed by the C programming -language. - - - Chapter 15: The inline disease - -There appears to be a common misperception that gcc has a magic "make me -faster" speedup option called "inline". While the use of inlines can be -appropriate (for example as a means of replacing macros, see Chapter 12), it -very often is not. Abundant use of the inline keyword leads to a much bigger -kernel, which in turn slows the system as a whole down, due to a bigger -icache footprint for the CPU and simply because there is less memory -available for the pagecache. Just think about it; a pagecache miss causes a -disk seek, which easily takes 5 miliseconds. There are a LOT of cpu cycles -that can go into these 5 miliseconds. - -A reasonable rule of thumb is to not put inline at functions that have more -than 3 lines of code in them. An exception to this rule are the cases where -a parameter is known to be a compiletime constant, and as a result of this -constantness you *know* the compiler will be able to optimize most of your -function away at compile time. For a good example of this later case, see -the kmalloc() inline function. - -Often people argue that adding inline to functions that are static and used -only once is always a win since there is no space tradeoff. While this is -technically correct, gcc is capable of inlining these automatically without -help, and the maintenance issue of removing the inline when a second user -appears outweighs the potential value of the hint that tells gcc to do -something it would have done anyway. - - - Chapter 16: Function return values and names - -Functions can return values of many different kinds, and one of the -most common is a value indicating whether the function succeeded or -failed. Such a value can be represented as an error-code integer -(-Exxx = failure, 0 = success) or a "succeeded" boolean (0 = failure, -non-zero = success). - -Mixing up these two sorts of representations is a fertile source of -difficult-to-find bugs. If the C language included a strong distinction -between integers and booleans then the compiler would find these mistakes -for us... but it doesn't. To help prevent such bugs, always follow this -convention: - - If the name of a function is an action or an imperative command, - the function should return an error-code integer. If the name - is a predicate, the function should return a "succeeded" boolean. - -For example, "add work" is a command, and the add_work() function returns 0 -for success or -EBUSY for failure. In the same way, "PCI device present" is -a predicate, and the pci_dev_present() function returns 1 if it succeeds in -finding a matching device or 0 if it doesn't. - -All EXPORTed functions must respect this convention, and so should all -public functions. Private (static) functions need not, but it is -recommended that they do. - -Functions whose return value is the actual result of a computation, rather -than an indication of whether the computation succeeded, are not subject to -this rule. Generally they indicate failure by returning some out-of-range -result. Typical examples would be functions that return pointers; they use -NULL or the ERR_PTR mechanism to report failure. - - - Chapter 17: Don't re-invent the kernel macros - -The header file include/linux/kernel.h contains a number of macros that -you should use, rather than explicitly coding some variant of them yourself. -For example, if you need to calculate the length of an array, take advantage -of the macro - - #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) - -Similarly, if you need to calculate the size of some structure member, use - - #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) - -There are also min() and max() macros that do strict type checking if you -need them. Feel free to peruse that header file to see what else is already -defined that you shouldn't reproduce in your code. - - - Chapter 18: Editor modelines and other cruft - -Some editors can interpret configuration information embedded in source files, -indicated with special markers. For example, emacs interprets lines marked -like this: - --*- mode: c -*- - -Or like this: - -/* -Local Variables: -compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c" -End: -*/ - -Vim interprets markers that look like this: - -/* vim:set sw=8 noet */ - -Do not include any of these in source files. People have their own personal -editor configurations, and your source files should not override them. This -includes markers for indentation and mode configuration. People may use their -own custom mode, or may have some other magic method for making indentation -work correctly. - - - - Appendix I: References - -The C Programming Language, Second Edition -by Brian W. Kernighan and Dennis M. Ritchie. -Prentice Hall, Inc., 1988. -ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback). -URL: http://cm.bell-labs.com/cm/cs/cbook/ - -The Practice of Programming -by Brian W. Kernighan and Rob Pike. -Addison-Wesley, Inc., 1999. -ISBN 0-201-61586-X. -URL: http://cm.bell-labs.com/cm/cs/tpop/ - -GNU manuals - where in compliance with K&R and this text - for cpp, gcc, -gcc internals and indent, all available from http://www.gnu.org/manual/ - -WG14 is the international standardization working group for the programming -language C, URL: http://www.open-std.org/JTC1/SC22/WG14/ - -Kernel CodingStyle, by greg@kroah.com at OLS 2002: -http://www.kroah.com/linux/talks/ols_2002_kernel_codingstyle_talk/html/ - --- -Last updated on 2007-July-13. - diff --git a/config/release/3rdparty/syslinux/doc/SubmittingPatches.txt b/config/release/3rdparty/syslinux/doc/SubmittingPatches.txt deleted file mode 100644 index dd764a7abf..0000000000 --- a/config/release/3rdparty/syslinux/doc/SubmittingPatches.txt +++ /dev/null @@ -1,568 +0,0 @@ -I don't have specific submission guidelines for Syslinux, but the ones -that appropriate to the Linux kernel are certainly good enough for -Syslinux. - -In particular, however, I appreciate if patches sent follow the -standard Linux submission format, as I can automatically import them -into git, retaining description and author information. Thus, this -file from the Linux kernel might be useful. - - - ----------------------------------------------------------------------- - - - - How to Get Your Change Into the Linux Kernel - or - Care And Operation Of Your Linus Torvalds - - - -For a person or company who wishes to submit a change to the Linux -kernel, the process can sometimes be daunting if you're not familiar -with "the system." This text is a collection of suggestions which -can greatly increase the chances of your change being accepted. - -Read Documentation/SubmitChecklist for a list of items to check -before submitting code. If you are submitting a driver, also read -Documentation/SubmittingDrivers. - - - --------------------------------------------- -SECTION 1 - CREATING AND SENDING YOUR CHANGE --------------------------------------------- - - - -1) "diff -up" ------------- - -Use "diff -up" or "diff -uprN" to create patches. - -All changes to the Linux kernel occur in the form of patches, as -generated by diff(1). When creating your patch, make sure to create it -in "unified diff" format, as supplied by the '-u' argument to diff(1). -Also, please use the '-p' argument which shows which C function each -change is in - that makes the resultant diff a lot easier to read. -Patches should be based in the root kernel source directory, -not in any lower subdirectory. - -To create a patch for a single file, it is often sufficient to do: - - SRCTREE= linux-2.6 - MYFILE= drivers/net/mydriver.c - - cd $SRCTREE - cp $MYFILE $MYFILE.orig - vi $MYFILE # make your change - cd .. - diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch - -To create a patch for multiple files, you should unpack a "vanilla", -or unmodified kernel source tree, and generate a diff against your -own source tree. For example: - - MYSRC= /devel/linux-2.6 - - tar xvfz linux-2.6.12.tar.gz - mv linux-2.6.12 linux-2.6.12-vanilla - diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ - linux-2.6.12-vanilla $MYSRC > /tmp/patch - -"dontdiff" is a list of files which are generated by the kernel during -the build process, and should be ignored in any diff(1)-generated -patch. The "dontdiff" file is included in the kernel tree in -2.6.12 and later. For earlier kernel versions, you can get it -from . - -Make sure your patch does not include any extra files which do not -belong in a patch submission. Make sure to review your patch -after- -generated it with diff(1), to ensure accuracy. - -If your changes produce a lot of deltas, you may want to look into -splitting them into individual patches which modify things in -logical stages. This will facilitate easier reviewing by other -kernel developers, very important if you want your patch accepted. -There are a number of scripts which can aid in this: - -Quilt: -http://savannah.nongnu.org/projects/quilt - -Andrew Morton's patch scripts: -http://www.zip.com.au/~akpm/linux/patches/ -Instead of these scripts, quilt is the recommended patch management -tool (see above). - - - -2) Describe your changes. - -Describe the technical detail of the change(s) your patch includes. - -Be as specific as possible. The WORST descriptions possible include -things like "update driver X", "bug fix for driver X", or "this patch -includes updates for subsystem X. Please apply." - -If your description starts to get long, that's a sign that you probably -need to split up your patch. See #3, next. - - - -3) Separate your changes. - -Separate _logical changes_ into a single patch file. - -For example, if your changes include both bug fixes and performance -enhancements for a single driver, separate those changes into two -or more patches. If your changes include an API update, and a new -driver which uses that new API, separate those into two patches. - -On the other hand, if you make a single change to numerous files, -group those changes into a single patch. Thus a single logical change -is contained within a single patch. - -If one patch depends on another patch in order for a change to be -complete, that is OK. Simply note "this patch depends on patch X" -in your patch description. - -If you cannot condense your patch set into a smaller set of patches, -then only post say 15 or so at a time and wait for review and integration. - - - -4) Style check your changes. - -Check your patch for basic style violations, details of which can be -found in Documentation/CodingStyle. Failure to do so simply wastes -the reviewers time and will get your patch rejected, probably -without even being read. - -At a minimum you should check your patches with the patch style -checker prior to submission (scripts/checkpatch.pl). You should -be able to justify all violations that remain in your patch. - - - -5) Select e-mail destination. - -Look through the MAINTAINERS file and the source code, and determine -if your change applies to a specific subsystem of the kernel, with -an assigned maintainer. If so, e-mail that person. - -If no maintainer is listed, or the maintainer does not respond, send -your patch to the primary Linux kernel developer's mailing list, -linux-kernel@vger.kernel.org. Most kernel developers monitor this -e-mail list, and can comment on your changes. - - -Do not send more than 15 patches at once to the vger mailing lists!!! - - -Linus Torvalds is the final arbiter of all changes accepted into the -Linux kernel. His e-mail address is . -He gets a lot of e-mail, so typically you should do your best to -avoid- -sending him e-mail. - -Patches which are bug fixes, are "obvious" changes, or similarly -require little discussion should be sent or CC'd to Linus. Patches -which require discussion or do not have a clear advantage should -usually be sent first to linux-kernel. Only after the patch is -discussed should the patch then be submitted to Linus. - - - -6) Select your CC (e-mail carbon copy) list. - -Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org. - -Other kernel developers besides Linus need to be aware of your change, -so that they may comment on it and offer code review and suggestions. -linux-kernel is the primary Linux kernel developer mailing list. -Other mailing lists are available for specific subsystems, such as -USB, framebuffer devices, the VFS, the SCSI subsystem, etc. See the -MAINTAINERS file for a mailing list that relates specifically to -your change. - -Majordomo lists of VGER.KERNEL.ORG at: - - -If changes affect userland-kernel interfaces, please send -the MAN-PAGES maintainer (as listed in the MAINTAINERS file) -a man-pages patch, or at least a notification of the change, -so that some information makes its way into the manual pages. - -Even if the maintainer did not respond in step #4, make sure to ALWAYS -copy the maintainer when you change their code. - -For small patches you may want to CC the Trivial Patch Monkey -trivial@kernel.org managed by Adrian Bunk; which collects "trivial" -patches. Trivial patches must qualify for one of the following rules: - Spelling fixes in documentation - Spelling fixes which could break grep(1) - Warning fixes (cluttering with useless warnings is bad) - Compilation fixes (only if they are actually correct) - Runtime fixes (only if they actually fix things) - Removing use of deprecated functions/macros (eg. check_region) - Contact detail and documentation fixes - Non-portable code replaced by portable code (even in arch-specific, - since people copy, as long as it's trivial) - Any fix by the author/maintainer of the file (ie. patch monkey - in re-transmission mode) -URL: - - - -7) No MIME, no links, no compression, no attachments. Just plain text. - -Linus and other kernel developers need to be able to read and comment -on the changes you are submitting. It is important for a kernel -developer to be able to "quote" your changes, using standard e-mail -tools, so that they may comment on specific portions of your code. - -For this reason, all patches should be submitting e-mail "inline". -WARNING: Be wary of your editor's word-wrap corrupting your patch, -if you choose to cut-n-paste your patch. - -Do not attach the patch as a MIME attachment, compressed or not. -Many popular e-mail applications will not always transmit a MIME -attachment as plain text, making it impossible to comment on your -code. A MIME attachment also takes Linus a bit more time to process, -decreasing the likelihood of your MIME-attached change being accepted. - -Exception: If your mailer is mangling patches then someone may ask -you to re-send them using MIME. - -See Documentation/email-clients.txt for hints about configuring -your e-mail client so that it sends your patches untouched. - -8) E-mail size. - -When sending patches to Linus, always follow step #7. - -Large changes are not appropriate for mailing lists, and some -maintainers. If your patch, uncompressed, exceeds 40 kB in size, -it is preferred that you store your patch on an Internet-accessible -server, and provide instead a URL (link) pointing to your patch. - - - -9) Name your kernel version. - -It is important to note, either in the subject line or in the patch -description, the kernel version to which this patch applies. - -If the patch does not apply cleanly to the latest kernel version, -Linus will not apply it. - - - -10) Don't get discouraged. Re-submit. - -After you have submitted your change, be patient and wait. If Linus -likes your change and applies it, it will appear in the next version -of the kernel that he releases. - -However, if your change doesn't appear in the next version of the -kernel, there could be any number of reasons. It's YOUR job to -narrow down those reasons, correct what was wrong, and submit your -updated change. - -It is quite common for Linus to "drop" your patch without comment. -That's the nature of the system. If he drops your patch, it could be -due to -* Your patch did not apply cleanly to the latest kernel version. -* Your patch was not sufficiently discussed on linux-kernel. -* A style issue (see section 2). -* An e-mail formatting issue (re-read this section). -* A technical problem with your change. -* He gets tons of e-mail, and yours got lost in the shuffle. -* You are being annoying. - -When in doubt, solicit comments on linux-kernel mailing list. - - - -11) Include PATCH in the subject - -Due to high e-mail traffic to Linus, and to linux-kernel, it is common -convention to prefix your subject line with [PATCH]. This lets Linus -and other kernel developers more easily distinguish patches from other -e-mail discussions. - - - -12) Sign your work - -To improve tracking of who did what, especially with patches that can -percolate to their final resting place in the kernel through several -layers of maintainers, we've introduced a "sign-off" procedure on -patches that are being emailed around. - -The sign-off is a simple line at the end of the explanation for the -patch, which certifies that you wrote it or otherwise have the right to -pass it on as a open-source patch. The rules are pretty simple: if you -can certify the below: - - Developer's Certificate of Origin 1.1 - - By making a contribution to this project, I certify that: - - (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - - (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - - (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - - (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. - -then you just add a line saying - - Signed-off-by: Random J Developer - -using your real name (sorry, no pseudonyms or anonymous contributions.) - -Some people also put extra tags at the end. They'll just be ignored for -now, but you can do this to mark internal company procedures or just -point out some special detail about the sign-off. - - -13) When to use Acked-by: - -The Signed-off-by: tag indicates that the signer was involved in the -development of the patch, or that he/she was in the patch's delivery path. - -If a person was not directly involved in the preparation or handling of a -patch but wishes to signify and record their approval of it then they can -arrange to have an Acked-by: line added to the patch's changelog. - -Acked-by: is often used by the maintainer of the affected code when that -maintainer neither contributed to nor forwarded the patch. - -Acked-by: is not as formal as Signed-off-by:. It is a record that the acker -has at least reviewed the patch and has indicated acceptance. Hence patch -mergers will sometimes manually convert an acker's "yep, looks good to me" -into an Acked-by:. - -Acked-by: does not necessarily indicate acknowledgement of the entire patch. -For example, if a patch affects multiple subsystems and has an Acked-by: from -one subsystem maintainer then this usually indicates acknowledgement of just -the part which affects that maintainer's code. Judgement should be used here. - When in doubt people should refer to the original discussion in the mailing -list archives. - - -14) The canonical patch format - -The canonical patch subject line is: - - Subject: [PATCH 001/123] subsystem: summary phrase - -The canonical patch message body contains the following: - - - A "from" line specifying the patch author. - - - An empty line. - - - The body of the explanation, which will be copied to the - permanent changelog to describe this patch. - - - The "Signed-off-by:" lines, described above, which will - also go in the changelog. - - - A marker line containing simply "---". - - - Any additional comments not suitable for the changelog. - - - The actual patch (diff output). - -The Subject line format makes it very easy to sort the emails -alphabetically by subject line - pretty much any email reader will -support that - since because the sequence number is zero-padded, -the numerical and alphabetic sort is the same. - -The "subsystem" in the email's Subject should identify which -area or subsystem of the kernel is being patched. - -The "summary phrase" in the email's Subject should concisely -describe the patch which that email contains. The "summary -phrase" should not be a filename. Do not use the same "summary -phrase" for every patch in a whole patch series (where a "patch -series" is an ordered sequence of multiple, related patches). - -Bear in mind that the "summary phrase" of your email becomes -a globally-unique identifier for that patch. It propagates -all the way into the git changelog. The "summary phrase" may -later be used in developer discussions which refer to the patch. -People will want to google for the "summary phrase" to read -discussion regarding that patch. - -A couple of example Subjects: - - Subject: [patch 2/5] ext2: improve scalability of bitmap searching - Subject: [PATCHv2 001/207] x86: fix eflags tracking - -The "from" line must be the very first line in the message body, -and has the form: - - From: Original Author - -The "from" line specifies who will be credited as the author of the -patch in the permanent changelog. If the "from" line is missing, -then the "From:" line from the email header will be used to determine -the patch author in the changelog. - -The explanation body will be committed to the permanent source -changelog, so should make sense to a competent reader who has long -since forgotten the immediate details of the discussion that might -have led to this patch. - -The "---" marker line serves the essential purpose of marking for patch -handling tools where the changelog message ends. - -One good use for the additional comments after the "---" marker is for -a diffstat, to show what files have changed, and the number of inserted -and deleted lines per file. A diffstat is especially useful on bigger -patches. Other comments relevant only to the moment or the maintainer, -not suitable for the permanent changelog, should also go here. -Use diffstat options "-p 1 -w 70" so that filenames are listed from the -top of the kernel source tree and don't use too much horizontal space -(easily fit in 80 columns, maybe with some indentation). - -See more details on the proper patch format in the following -references. - - - - ------------------------------------ -SECTION 2 - HINTS, TIPS, AND TRICKS ------------------------------------ - -This section lists many of the common "rules" associated with code -submitted to the kernel. There are always exceptions... but you must -have a really good reason for doing so. You could probably call this -section Linus Computer Science 101. - - - -1) Read Documentation/CodingStyle - -Nuff said. If your code deviates too much from this, it is likely -to be rejected without further review, and without comment. - -One significant exception is when moving code from one file to -another -- in this case you should not modify the moved code at all in -the same patch which moves it. This clearly delineates the act of -moving the code and your changes. This greatly aids review of the -actual differences and allows tools to better track the history of -the code itself. - -Check your patches with the patch style checker prior to submission -(scripts/checkpatch.pl). The style checker should be viewed as -a guide not as the final word. If your code looks better with -a violation then its probably best left alone. - -The checker reports at three levels: - - ERROR: things that are very likely to be wrong - - WARNING: things requiring careful review - - CHECK: things requiring thought - -You should be able to justify all violations that remain in your -patch. - - - -2) #ifdefs are ugly - -Code cluttered with ifdefs is difficult to read and maintain. Don't do -it. Instead, put your ifdefs in a header, and conditionally define -'static inline' functions, or macros, which are used in the code. -Let the compiler optimize away the "no-op" case. - -Simple example, of poor code: - - dev = alloc_etherdev (sizeof(struct funky_private)); - if (!dev) - return -ENODEV; - #ifdef CONFIG_NET_FUNKINESS - init_funky_net(dev); - #endif - -Cleaned-up example: - -(in header) - #ifndef CONFIG_NET_FUNKINESS - static inline void init_funky_net (struct net_device *d) {} - #endif - -(in the code itself) - dev = alloc_etherdev (sizeof(struct funky_private)); - if (!dev) - return -ENODEV; - init_funky_net(dev); - - - -3) 'static inline' is better than a macro - -Static inline functions are greatly preferred over macros. -They provide type safety, have no length limitations, no formatting -limitations, and under gcc they are as cheap as macros. - -Macros should only be used for cases where a static inline is clearly -suboptimal [there a few, isolated cases of this in fast paths], -or where it is impossible to use a static inline function [such as -string-izing]. - -'static inline' is preferred over 'static __inline__', 'extern inline', -and 'extern __inline__'. - - - -4) Don't over-design. - -Don't try to anticipate nebulous future cases which may or may not -be useful: "Make it as simple as you can, and no simpler." - - - ----------------------- -SECTION 3 - REFERENCES ----------------------- - -Andrew Morton, "The perfect patch" (tpp). - - -Jeff Garzik, "Linux kernel patch submission format". - - -Greg Kroah-Hartman, "How to piss off a kernel subsystem maintainer". - - - - - -NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people! - - -Kernel Documentation/CodingStyle: - - -Linus Torvalds's mail on the canonical patch format: - --- diff --git a/config/release/3rdparty/syslinux/doc/comboot.txt b/config/release/3rdparty/syslinux/doc/comboot.txt deleted file mode 100644 index 04d5deb893..0000000000 --- a/config/release/3rdparty/syslinux/doc/comboot.txt +++ /dev/null @@ -1,1012 +0,0 @@ - - COMBOOT and COM32 files - - -Syslinux supports simple standalone programs, using a file format -similar to DOS ".com" files. A 32-bit version, called COM32, is also -provided. A simple API provides access to a limited set of filesystem -and console functions. - - - ++++ COMBOOT file format ++++ - -A COMBOOT file is a raw binary file containing 16-bit code. It should -be linked to run at offset 0x100, and contain no absolute segment -references. It is run in 16-bit real mode. - -A COMBOOT image can be written to be compatible with MS-DOS. Such a -file will usually have extension ".com". A COMBOOT file which is not -compatible with MS-DOS will usually have extension ".cbt". - -Before running the program, Syslinux sets up the following fields in -the Program Segment Prefix (PSP), a structure at offset 0 in the -program segment: - - Offset Size Meaning - 0 word Contains an INT 20h instruction - 2 word Contains the paragraph (16-byte "segment" address) at - the end of memory available to the program. - 128 byte Length of the command line arguments, including the leading - space but not including the final CR character. - 129 127b Command line arguments, starting with a space and ending - with a CR character (ASCII 13). - -The program is allowed to use memory between the PSP paragraph (which -all the CS, DS, ES and SS registers point to at program start) and the -paragraph value given at offset 2. - -On startup, SP is set up to point to the end of the 64K segment, at -0xfffe. Under DOS it is possible for SP to contain a smaller -value if memory is very tight; this is never the case under Syslinux. - -The program should make no assumptions about what segment address it -will be loaded at; instead it should look at the segment registers on -program startup. Both DOS and Syslinux will guarantee CS == DS == ES -== SS on program start; the program should not assume anything about -the values of FS or GS. - -To exit, a program can either execute a near RET (which will jump to -offset 0 which contains an INT 20h instruction, terminating the -program), or execute INT 20h or INT 21h AH=00h or INT 21h AH=4Ch. -If compatiblity with Syslinux 1.xx is desired, use INT 20h. - - - ++++ COM32R file format ++++ - -A COM32R file is a raw binary file containing 32-bit code. It should -be self-relocating, as it will be loaded by the Syslinux core at any -4K aligned address. It will be run in flat-memory 32-bit protected -mode. Under Syslinux, it will be run in CPL 0, however, since it may -be possible to create a COM32 execution engine that would run under -something like Linux DOSEMU, it is recommended that the code does not -assume CPL 0 unless absolutely necessary. - -A COM32R program must start with the byte sequence B8 FE 4C CD 21 (mov -eax,21cd4cfeh) as a magic number. - -The COM32R format replaces the earlier COM32 format, which was linked -to a fixed address (0x101000). - -A COM32R file should have extension ".c32". - -On startup, CS will be set up as a flat 32-bit code segment, and DS == -ES == SS will be set up as the equivalent flat 32-bit data segment. -FS and GS are reserved for future use and are currently initialized to -zero. A COM32R image should not assume any particular values of -segment selectors. - -ESP is set up at the end of available memory and also serves as -notification to the program how much memory is available. - -The following arguments are passed to the program on the stack: - - Address Size Meaning - [ESP] dword Return (termination) address - [ESP+4] dword Number of additional arguments (currently 8) - [ESP+8] dword Pointer to the command line arguments (null-terminated string) - [ESP+12] dword Pointer to INT call helper function - [ESP+16] dword Pointer to low memory bounce buffer - [ESP+20] dword Size of low memory bounce buffer - [ESP+24] dword Pointer to FAR call helper function (new in 2.05) - [ESP+28] dword Pointer to CDECL helper function (new in 3.54) - [ESP+32] dword Amount of memory controlled by the Syslinux core (new in 3.74) - [ESP+36] dword Pointer to the filename of the com32 module (new in 3.86) - [ESP+40] dword Pointer to protected-mode functions (new in 4.00) - -The libcom32 startup code loads this into a structure named __com32, -defined in : - -extern struct com32_sys_args { - uint32_t cs_sysargs; - char *cs_cmdline; - void __cdecl(*cs_intcall)(uint8_t, const com32sys_t *, com32sys_t *); - void *cs_bounce; - uint32_t cs_bounce_size; - void __cdecl(*cs_farcall)(uint32_t, const com32sys_t *, com32sys_t *); - int __cdecl(*cs_cfarcall)(uint32_t, const void *, uint32_t); - uint32_t cs_memsize; - const char *cs_name; - const struct com32_pmapi *cs_pm; -} __com32; - -The intcall helper function can be used to issue BIOS or Syslinux API -calls, and takes the interrupt number as first argument. The second -argument is a pointer to the input register definition, an instance of -the following structure (available in ): - -typedef union { - uint32_t l; - uint16_t w[2]; - uint8_t b[4]; -} reg32_t; - -typedef struct { - uint16_t gs; /* Offset 0 */ - uint16_t fs; /* Offset 2 */ - uint16_t es; /* Offset 4 */ - uint16_t ds; /* Offset 6 */ - - reg32_t edi; /* Offset 8 */ - reg32_t esi; /* Offset 12 */ - reg32_t ebp; /* Offset 16 */ - reg32_t _unused_esp; /* Offset 20 */ - reg32_t ebx; /* Offset 24 */ - reg32_t edx; /* Offset 28 */ - reg32_t ecx; /* Offset 32 */ - reg32_t eax; /* Offset 36 */ - - reg32_t eflags; /* Offset 40 */ -} com32sys_t; - -The third argument is a pointer to the output register definition, an -instance of the same structure. The third argument can also be zero -(NULL). - -Since BIOS or Syslinux API calls can generally only manipulate data -below address 0x100000, a "bounce buffer" in low memory, at least 64K -in size, is available, to copy data in and out. - -The farcall helper function behaves similarly, but takes as its first -argument the CS:IP (in the form (CS << 16) + IP) of procedure to be -invoked via a FAR CALL. - -The cfarcall helper function takes (CS << 16)+IP, a pointer to a stack -frame, a size of that stack frame, and returns the return value of EAX -(which may need to be appropriate truncated by the user.) - -Starting in version 4.00, some of these API calls are available as -protected-mode function calls, using the regparm(3) calling convention -(the first three argumetns in EAX, EDX, ECX; the rest on the stack.) -Those functions are defined in struct com32_pmapi, defined in -. - - - ++++ SYSLINUX API CALLS +++ - -Syslinux provides the following API calls. Syslinux 1.xx only -supported INT 20h - terminate program. [] indicates the first version -of Syslinux which supported this feature (correctly.) - -NOTE: Most of the API functionality is still experimental. Expect to -find bugs. - - - ++++ DOS-COMPATIBLE API CALLS ++++ - -INT 20h [1.48] Terminate program -INT 21h AH=00h [2.00] Terminate program -INT 21h AH=4Ch [2.00] Terminate program - - All of these terminate the program. - - -INT 21h AH=01h [2.01] Get Key with Echo - - Reads a key from the console input, with echo to the console - output. The read character is returned in AL. Extended - characters received from the keyboard are returned as NUL (00h) - + the extended character code. - - -INT 21h AH=02h [2.01] Write Character - - Writes a character in DL to the console (video and serial) - output. - - -INT 21h AH=04h [2.01] Write Character to Serial Port - - Writes a character in DL to the serial console output - (if enabled.) If no serial port is configured, this routine - does nothing. - - -INT 21h AH=08h [2.09] Get Key without Echo - - Reads a key fron the console input, without echoing it to the - console output. The read character is returned in AL. - - -INT 21h AH=09h [2.01] Write DOS String to Console - - Writes a DOS $-terminated string in DS:DX to the console. - - -INT 21h AH=0Bh [2.00] Check Keyboard - - Returns AL=FFh if there is a keystroke waiting (which can then - be read with INT 21h, AH=01h or AH=08h), otherwise AL=00h. - - -INT 21h AH=30h [2.00] Check DOS Version - - This function returns AX=BX=CX=DX=0, corresponding to a - hypothetical "DOS 0.0", but the high parts of EAX-EBX-ECX-EDX - spell "SYSLINUX": - - EAX=59530000h EBX=4C530000h ECX=4E490000h EDX=58550000h - - This function can thus be used to distinguish running on - Syslinux from running on DOS. - - - ++++ SYSLINUX-SPECIFIC API CALLS ++++ - -Syslinux-specific API calls are executed using INT 22h, with a -function number in AX. INT 22h is used by DOS for internal purposes; -do not execute INT 22h under DOS. - -DOS-compatible function INT 21h, AH=30h can be used to detect if the -Syslinux API calls are available. - -Any register not specifically listed as modified is preserved; -however, future versions of Syslinux may add additional output -registers to existing calls. - -All calls return CF=0 on success, CF=1 on failure. The noted outputs -apply if CF=0 only unless otherwise noted. All calls clobber the -arithmetric flags (CF, PF, AF, ZF, SF and OF) but leave all other -flags unchanged unless otherwise noted. - - -AX=0001h [2.00] Get Version - - Input: AX 0001h - Output: AX number of INT 22h API functions available - CH Syslinux major version number - CL Syslinux minor version number - DL Syslinux derivative ID (e.g. 32h = PXELINUX) - ES:SI Syslinux version string - ES:DI Syslinux copyright string - - This API call returns the Syslinux version and API - information. - - Note: before version 3.86, the version string had a leading CR LF - and the copyright string had a leading space. The strings might - still contain trailing CR and/or LF. - - -AX=0002h [2.01] Write String - - Input: AX 0002h - ES:BX null-terminated string - Output: None - - Writes a null-terminated string on the console. - - -AX=0003h [2.01] Run command - - Input: AX 0003h - ES:BX null-terminated command string - Output: Does not return - - This API call terminates the program and executes the command - string as if the user had entered it at the Syslinux command - line. This API call does not return. - - -AX=0004h [2.01] Run default command - - Input: AX 0004h - Output: Does not return - - This API call terminates the program and executes the default - command string as if the user had pressed Enter alone on the - Syslinux command line. This API call does not return. - - -AX=0005h [2.00] Force text mode - - Input: AX 0005h - Output: None - - If the screen was in graphics mode (due to displaying a splash - screen using the command in a message file, or - similar), return to text mode. - - -AX=0006h [2.08] Open file - - Input: AX 0006h - ES:SI null-terminated filename - Output: SI file handle - EAX length of file in bytes, or -1 - CX file block size - - Open a file for reading. The exact syntax of the filenames - allowed depends on the particular Syslinux derivative. - - The Syslinux file system is block-oriented. The size of a - block will always be a power of two and no greater than 16K. - - Note: Syslinux considers a zero-length file to be nonexistent. - - In 3.70 or later, EAX can contain -1 indicating that the file - length is unknown. - - 32-BIT VERSION: - - int cs_pm->open_file(const char *filename, struct com32_filedata *data) - - filename - null-terminated filename - data - pointer to a file data buffer - - Returns the file handle, or -1 on failure. - The file data buffer contains block size and file size. - - -AX=0007h [2.08] Read file - - Input: AX 0007h - SI file handle - ES:BX buffer - CX number of blocks to read - Output: SI file handle, or 0 if EOF was reached - ECX number of bytes read [3.70] - - Read blocks from a file. Note that the file handle that is - returned in SI may not be the same value that was passed in. - - If end of file was reached (SI=0), the file was automatically - closed. - - In 3.70 or later, ECX returns the number of bytes read. This - will always be a multiple of the block size unless EOF is - reached. - - The address of the buffer (ES:BX) should be at least 512-byte - aligned. Syslinux guarantees at least this alignment for the - COMBOOT load segment or the COM32 bounce buffer. - - Keep in mind that a "file" may be a TFTP connection, and that - leaving a file open for an extended period of time may result - in a timeout. - - WARNING: Calling this function with an invalid file handle - will probably crash the system. - - 32-BIT VERSION: - - size_t cs_pm->read_file(uint16_t *handle, void *buf, size_t blocks) - - handle - file handle (input and output, set to zero on end of file) - buf - buffer to write to - blocks - number of blocks to read - - Returns number of bytes read, or 0 on failure. - - -AX=0008h [2.08] Close file - - Input: AX 0008h - SI file handle - Output: None - - Close a file before reaching the end of file. - - WARNING: Calling this function with an invalid file handle - will probably crash the system. - - 32-BIT VERSION: - - void cs_pm->close_file(uint16_t handle) - - handle - file handle to close - - -AX=0009h [2.00] Call PXE Stack [PXELINUX ONLY] - - Input: AX 0009h - BX PXE function number - ES:DI PXE parameter structure buffer - Output: AX PXE return status code - - Invoke an arbitrary PXE stack function. On SYSLINUX/ISOLINUX, - this function returns with an error (CF=1) and no action is - taken. On PXELINUX, this function always returns with CF=0 - indicating that the PXE stack was successfully invoked; check - the status code in AX and in the first word of the data buffer - to determine if the PXE call succeeded or not. - - The PXE stack will have the UDP stack OPEN; if you change that - you cannot call any of the file-related API functions, and - must restore UDP OPEN before returning to PXELINUX. - - PXELINUX reserves UDP port numbers from 49152 to 65535 for its - own use; port numbers below that range is available. - - -AX=000Ah [2.00] Get Derivative-Specific Information - - [SYSLINUX, EXTLINUX] - Input: AX 000Ah - CL 9 (to get a valid return in CL for all versions) - Output: AL 31h (SYSLINUX), 34h (EXTLINUX) - DL drive number - CL sector size as a power of 2 (9 = 512 bytes) [3.35] - CH mode [3.73] - 1 = CBIOS mode - 2 = EBIOS mode - ES:BX pointer to partition table entry (if DL >= 80h) - FS:SI pointer to initial ES:DI value [3.53] - GS:DI pointer to partition offset (QWORD) [4.00] - - Note: This function was broken in EXTLINUX 3.00-3.02. - - On boot, ES:DI is supposed to point to the BIOS $PnP - structure, although in practice most operating systems - will search for it in memory. However, preserving - this while chainloading is probably a good idea. - - Note that FS:SI is a pointer to a memory location - containing the original ES:DI value, not the value - itself. - - - [PXELINUX] - Input: AX 000Ah - Output: AL 32h (PXELINUX) - DX PXE API version detected (DH=major, DL=minor) - ECX Local IP number (network byte order) [3.85] - ES:BX pointer to PXENV+ or !PXE structure - FS:SI pointer to original stack with invocation record - GS:DI pointer to network information [4.00] - - Note: DX notes the API version detected by PXELINUX, - which may be more conservative than the actual version - available. For exact information examine the API - version entry in the PXENV+ structure, or the API - version entries in the ROMID structures pointed from - the !PXE structure. - - PXELINUX will use, and provide, the !PXE structure - over the PXENV+ structure. Examine the structure - signature to determine which particular structure was - provided. - - The FS:SI pointer points to the top of the original stack - provided by the PXE stack, with the following values - pushed at the time PXELINUX is started: - - [fs:si+0] GS <- top of stack - [fs:si+2] FS - [fs:si+4] ES - [fs:si+6] DS - [fs:si+8] EDI - [fs:si+12] ESI - [fs:si+16] EBP - [fs:si+20] - - [fs:si+24] EBX - [fs:si+28] EDX - [fs:si+32] ECX - [fs:si+36] EAX - [fs:si+40] EFLAGS - [fs:si+44] PXE return IP <- t.o.s. when PXELINUX invoked - [fs:si+46] PXE return CS - - GS:DI points to a structure of the following form: - - [gs:di+0] 4 - IPv4 - [gs:di+4] My IP - [gs:di+8] Boot server IP - [gs:di+12] Gateway IP - [gs:di+16] Netmask - - [ISOLINUX] - Input: AX 000Ah - Output: AL 33h (ISOLINUX) - DL drive number - CL 11 (sector size as a power of 2) [3.35] - CH mode [3.73] - 0 = El Torito - 1 = Hybrid (hard disk), CBIOS mode - 2 = Hybrid (hard disk), EBIOS mode - ES:BX pointer to El Torito spec packet - FS:SI pointer to initial ES:DI value [3.53] - GS:DI pointer to partition offset (QWORD) [4.00] - - Note: Some very broken El Torito implementations do - not provide the spec packet information. If so, ES:BX - may point to all zeroes or to garbage. Call INT 13h, - AX=4B01h to obtain the spec packet directly from the - BIOS if necessary. - - -AX=000Bh [2.00] Get Serial Console Configuration - - Input: AX 000Bh - Output: DX serial port I/O base (e.g. 3F8h = COM1...) - CX baud rate divisor (1 = 115200 bps, 2 = 57600 bps...) - BX flow control configuration bits (see syslinux.txt) - -> bit 15 is set if the video console is disabled - - If no serial port is configured, DX will be set to 0 and the - other registers are undefined. - - -AX=000Ch [2.00] Perform final cleanup - Input: AX 000Ch - DX derivative-specific flags (0000h = clean up all) - Output: None - - This routine performs any "final cleanup" the boot loader - would normally perform before loading a kernel, such as - unloading the PXE stack in the case of PXELINUX. AFTER - INVOKING THIS CALL, NO OTHER API CALLS MAY BE INVOKED, NOR MAY - THE PROGRAM TERMINATE AND RETURN TO THE BOOT LOADER. This - call basically tells the boot loader "get out of the way, I'll - handle it from here." - - For COM32 images, the boot loader will continue to provide - interrupt and BIOS call thunking services as long its memory - areas (0x0800-0xffff, 0x100000-0x100fff) are not overwritten. - MAKE SURE TO DISABLE INTERRUPTS, AND INSTALL NEW GDT AND IDTS - BEFORE OVERWRITING THESE MEMORY AREAS. - - The permissible values for DX is an OR of these values: - - SYSLINUX: 0000h Normal cleanup - - PXELINUX: 0000h Normal cleanup - 0003h Keep UNDI and PXE stacks loaded - - ISOLINUX: 0000h Normal cleanup - - EXTLINUX: 0000h Normal cleanup - - All other values are undefined, and may have different - meanings in future versions of Syslinux. - - -AX=000Dh [2.08] Cleanup and replace bootstrap code - Input: AX 000Dh - DX derivative-specific flags (see previous function) - EDI bootstrap code (linear address, can be in high memory) - ECX bootstrap code length in bytes (must fit in low mem) - EBX(!) initial value of EDX after bootstrap - ESI initial value of ESI after bootstrap - DS initial value of DS after bootstrap - Output: Does not return - - This routine performs final cleanup, then takes a piece of - code, copies it over the primary bootstrap at address 7C00h, - and jumps to it. This can be used to chainload boot sectors, - MBRs, bootstraps, etc. - - Normal boot sectors expect DL to contain the drive number, - and, for hard drives (DL >= 80h) DS:SI to contain a pointer to - the 16-byte partition table entry. The memory between - 600h-7FFh is available to put the partition table entry in. - - For PXELINUX, if the PXE stack is not unloaded, all registers - (except DS, ESI and EDX) and the stack will be set up as they - were set up by the PXE ROM. - - -AX=000Eh [2.11] Get configuration file name - Input: AX 0000Eh - Output: ES:BX null-terminated file name string - - Returns the name of the configuration file. Note that it is - possible that the configuration file doesn't actually exist. - - -AX=000Fh [3.00] Get IPAPPEND strings [PXELINUX] - Input: AX 000Fh - Output: CX number of strings (currently 2) - ES:BX pointer to an array of NEAR pointers in - the same segment, one for each of the above - strings - - Returns the same strings that the "ipappend" option would have - added to the command line, one for each bit of the "ipappend" - flag value, so entry 0 is the "ip=" string and entry 1 is the - "BOOTIF=" string. - - -AX=0010h [3.00] Resolve hostname [PXELINUX] - Input: AX 0010h - ES:BX pointer to null-terminated hostname - Output: EAX IP address of hostname (zero if not found) - - Queries the DNS server(s) for a specific hostname. If the - hostname does not contain a dot (.), the local domain name - is automatically appended. - - This function only return CF=1 if the function is not - supported. If the function is supported, but the hostname did - not resolve, it returns with CF=0, EAX=0. - - The IP address is returned in network byte order, i.e. if the - IP address is 1.2.3.4, EAX will contain 0x04030201. Note that - all uses of IP addresses in PXE are also in network byte order. - - -AX=0011h [3.05] Obsoleted in 3.80 - - -AX=0012h [3.50] Cleanup, shuffle and boot - Input: AX 0012h - DX derivative-specific flags (see function 000Ch) - ES:DI shuffle descriptor list (must be in low memory) - CX number of shuffle descriptors - EBX(!) initial value of EDX after bootstrap - ESI initial value of ESI after bootstrap - DS initial value of DS after bootstrap - EBP CS:IP of routine to jump to - Output: Does not return - (if CX is too large the routine returns with CF=1) - - This routine performs final cleanup, then performs a sequence - of copies, and jumps to a specified real mode entry point. - This is a more general version of function 000Dh, which can - also be used to load other types of programs. - - The copies must not touch memory below address 7C00h. - - ES:DI points to a list of CX descriptors each of the form: - - Offset Size Meaning - 0 dword destination address - 4 dword source address - 8 dword length in bytes - - The copies are overlap-safe, like memmove(). - - Starting in version 3.50, if the source address is -1 - (FFFFFFFFh) then the block specified by the destination - address and the length is set to all zero. - - Starting in version 3.50, if the destination address is -1 - (FFFFFFFFh) then the data block is loaded as a new set of - descriptors, and processing is continued (and unprocessed - descriptors are lost, this is thus typically only used as the - last descriptor in a block.) The block must still fit in the - internal descriptor buffer (see function 0011h), but can, of - course, itself chain another block. - - - Normal boot sectors expect DL to contain the drive number, - and, for hard drives (DL >= 80h) DS:SI to contain a pointer to - the 16-byte partition table entry. The memory between - 600h-7FFh is available to put the partition table entry in. - - For PXELINUX, if the PXE stack is not unloaded, all registers - (except DS, ESI and EDX) and the stack will be set up as they - were set up by the PXE ROM. - - This interface was probably broken before version 3.50. - - -AX=0013h [3.08] Idle loop call - Input: AX 0013h - Output: None - - Call this routine while sitting in an idle loop. It performs - any periodic activities required by the filesystem code. At - the moment, this is a no-op on all derivatives except - PXELINUX, where it executes PXE calls to answer ARP queries. - - Starting with version 3.10, this API call harmlessly returns - failure (CF=1) if invoked on a platform which does not need - idle calls. Additionally, it's safe to call this API call on - previous Syslinux versions (2.00 or later); it will just - harmlessly fail. Thus, if this call returns failure (CF=1), - it means that there is no technical reason to call this - function again, although doing so is of course safe. - - -AX=0014h [3.10] Local boot [PXELINUX, ISOLINUX] - Input: AX 0014h - DX Local boot parameter - Output: Does not return - - This function invokes the equivalent of the "localboot" - configuration file option. The parameter in DX is the same - parameter as would be entered after "localboot" in the - configuration file; this parameter is derivative-specific -- - see syslinux.txt for the definition. - - -AX=0015h [3.10] Get feature flags - Input: AX 0015h - Output: ES:BX pointer to flags in memory - CX number of flag bytes - - This function reports whether or not this Syslinux version and - derivative supports specific features. Keep in mind that - future versions might have more bits; remember to treat any - bits beyond the end of the array (as defined by the value in - CX) as zero. - - Currently the following feature flag is defined: - - Byte Bit Definition - ---------------------------------------------------- - 0 0 Local boot (AX=0014h) supported - 1 Idle loop call (AX=0013h) is a no-op - - All other flags are reserved. - - -AX=0016h [3.10] Run kernel image - Input: AX 0016h - DS:SI Filename of kernel image (zero-terminated string) - ES:BX Command line (zero-terminated string) - ECX IPAPPEND flags [PXELINUX] - EDX Type of file (since 3.50) - Output: Does not return if successful; returns with CF=1 if - the kernel image is not found. - - This function is similiar to AX=0003h Run command, except that - the filename and command line are treated as if specified in a - KERNEL and APPEND statement of a LABEL statement, which means: - - - The filename has to be exact; no variants are tried; - - No global APPEND statement is applied; - - ALLOWOPTIONS and IMPLICIT statements in the configuration - file do not apply. It is therefore important that the - COMBOOT module doesn't allow the end user to violate the - intent of the administrator. - - Additionally, this function returns with a failure if the file - doesn't exist, instead of returning to the command line. (It - may still return to the command line if the image is somehow - corrupt, however.) - - The file types are defined as follows: - - Equivalent - EDX Config Extensions Type of file - 0 KERNEL Determined by filename extension - 1 LINUX none Linux kernel image - 2 BOOT .bs .bin Bootstrap program - 3 BSS .bss Boot sector with patch [SYSLINUX] - 4 PXE .0 PXE Network Bootstrap Prog [PXELINUX] - 5 FDIMAGE .img Floppy disk image [ISOLINUX] - 6 COMBOOT .com .cbt 16-bit COMBOOT program - 7 COM32 .c32 COM32 program - 8 CONFIG Configuration file - - -AX=0017h [3.30] Report video mode change - Input: AX 0017h - BX Video mode flags - Bit 0: graphics mode - Bit 1: non-default mode - Bit 2: VESA mode - Bit 3: text functions not supported - CX For graphics modes, pixel columns - DX For graphics modes, pixel rows - Output: None - - This function is used to report video mode changes to - Syslinux. It does NOT actually change the video mode, but - rather, allows Syslinux to take appropriate action in response - to a video mode change. Modes that cannot be exited either - with the conventional BIOS mode set command (INT 10h, AH=00h) - or the VESA VBE mode set command (INT 10h, AX=4F02h) should - not be used. - - This function returns with a failure if BX contains any bits - which are undefined in the current version of Syslinux. - - The following bits in BX are currently defined: - - Bit 0: graphics mode - - Indicates that the mode is a graphics mode, as opposed - to a text mode. - - Bit 1: non-standard mode - - A non-standard mode is any mode except text mode and - graphics mode 0012h (VGA 640x480, 16 color.) - - Bit 2: VESA mode - - This mode is a VESA mode, and has to be exited with - the VESA VBE API (INT 10h, AX=4F02h) as opposed to the - conventional BIOS API (INT 10h, AH=00h). - - Bit 3: Text functions not supported - - This indicates that the BIOS text output functions - (INT 10h, AH=02h, 03h, 06h, 09h, 0Eh, 11h) don't work. - If this bit is set, Syslinux will reset the mode - before printing any characters on the screen. - - This is common for VESA modes. - - -AX=0018h [3.30] Query custom font - Input: AX 0018h - Output: AL Height of custom font in scan lines, or zero - ES:BX Pointer to custom font in memory - - This call queries if a custom display font has been loaded via - the "font" configuration file command. If no custom font has - been loaded, AL contains zero. - - -AX=0019h [3.50] Read disk [SYSLINUX, ISOLINUX, EXTLINUX] - Input: AX 0019h - EDX Sector number (LSW) - ESI Sector number (MSW) [4.00] - EDI Reserved - MUST BE ZERO - CX Sector count - ES:BX Buffer address - Output: None - - Read disk blocks from the active filesystem (partition); for - disks, sector number zero is the boot sector. For ISOLINUX, - this call reads the CD-ROM. - - For compatiblity with all systems, the buffer should - *neither* cross 64K boundaries, *nor* wrap around the segment. - - This routine reports "boot failed" (and does not return) on - disk error. - - Note: for ISOLINUX in hybrid mode, this call uses simulated - 2048-byte CD-ROM sector numbers. - - -AX=001Ah [3.50] Obsoleted in 3.80 - - -AX=001Bh [3.50] Obsoleted in 3.80 - - -AX=001Ch [3.60] Get pointer to auxilliary data vector - Input: AX 001Ch - Output: ES:BX Auxilliary data vector - CX Size of the ADV (currently 500 bytes) - - The auxillary data vector is a tagged data structure used - to carry a small amount of information (up to 500 bytes) from - one boot to another. - - -AX=001Dh [3.60] Write auxilliary data vector - Input: AX 001Dh - Output: None - - Write the auxilliary data vector back to disk. Returns - failure for non-disk-based derivatives unless the "auxdata" - configuration command is used to specify a disk location - (not yet implemented.) - - In a future version, PXELINUX may end up attempting to save - the ADV on the server via TFTP write. - - -AX=001Eh [3.74] Keyboard remapping table - Input: AX 001Eh - DX 0000h - all other values reserved - Output: AX format version (1) - CX length in bytes (256) - ES:BX pointer to keyboard table - - This call queries the keyboard remapping table. For the current - version, the format code is always 1 and the length is always - 256. This version can be updated simply by overwriting the version - in memory; this may not be true in the future. - - -AX=001Fh [3.74] Get current working directory - Input: AX 0001Fh - Output: ES:BX null-terminated directory name string - - Returns the current working directory. - - -AX=0020h [3.74] Obsoleted in 4.00 -AX=0021h [3.74] Obsoleted in 4.00 -AX=0022h [3.74] Obsoleted in 4.00 - - These three functions provided opendir/readdir/closedir - functionality in the late 3.xx series. They have been - replaced by the protected-mode interface. - - -AX=0023h [3.80] Get shuffler parameters - Input: AX 0023h - Output: CX size of shuffler "safe area" in bytes - Other registers reserved for future use - - This call gives the size of the required shuffler "safe area", - in bytes; for call 0024h. In the future, it may provide - additional parameters. - - -AX=0024h [3.80] Cleanup, shuffle and boot, raw version - Input: AX 0024h - DX derivative-specific flags (see function 000Ch) - EDI shuffle descriptor list safe area - ESI shuffle descriptor list source - ECX byte count of shuffle descriptor list - Output: Does not return - - This routine performs final cleanup, then performs a sequence - of copies, and jumps to a specified real mode entry point. - This is a more general version of function 000Dh, which can - also be used to load other types of programs. - - Unlike previous obsolete versions of this function, there are - no restrictions that copies must not touch memory below - address 7C00h. Either the shuffle descriptor list or the safe - area (or both) may be located in high memory. - - ESI points to a list of descriptors each of the form: - - Offset Size Meaning - 0 dword destination address - 4 dword source address (-1 = zero) - 8 dword length in bytes (0 = end of list) - - The copies are overlap-safe, like memmove(). - - Before actually executing the move list, the list is moved to - the address specified in EDI. The caller is responsibe to - ensure that the moved descriptor list plus a "safe area" - immediately afterwards (the size of which is specified by - function 0023h) is not disturbed by the copy sequence. It is, - however, safe to overwrite descriptors already consumed. - - If the source address is -1 (FFFFFFFFh) then the block - specified by the destination address and the length is set to - all zero. - - The list is terminated by an entry with length 0. For that - entry, the destination is used as an entry point, and the - source represents the type of entry point: - - 0 16-bit protected mode (dst is CS.base) - 1 Flat 32-bit protected mode (dst is EIP) - - This routine does not set up any GPR register state - whatsoever, including stack. It is the responsibility of the - caller to make sure the entry point provided sets up any - registers needed. - - For mode 0 (16-bit real mode), EAX will contain CR0 with bit 0 - masked out, suitable for loading into CR0 to immediately enter - real mode. Note: if real-mode entry is planned, - (CS.base & 0xfff0000f) should == 0 for compatibility with KVM, - and possibly other virtualization solutions. - - In both mode 0 and mode 1, the data segments will be loaded - with read/write data segments, matching the respective code - segment. For mode 0, B=0 and the limits will be 64K, for mode - 1, B=1 and the limits will be 4 GB. - - - ++++ 32-BIT ONLY API CALLS ++++ - -void *cs_pm->lmalloc(size_t bytes) - - Allocate a buffer in low memory (below 1 MB). - - -void cs_pm->lfree(void *ptr) - - Free a buffer allocated with cs_pm->lmalloc(). - - -DIR *cs_pm->opendir(const char *pathname) - - Open a directory. - - -struct dirent *cs_pm->readdir(DIR *dir) - - Read an entry from a directory. The entry is returned in a - static buffer. - - -int cs_pm->closedir(DIR *dir) - - Close a directory. diff --git a/config/release/3rdparty/syslinux/doc/distrib.txt b/config/release/3rdparty/syslinux/doc/distrib.txt deleted file mode 100644 index fa10a047a3..0000000000 --- a/config/release/3rdparty/syslinux/doc/distrib.txt +++ /dev/null @@ -1,29 +0,0 @@ -For creators of Linux distributions: - -Syslinux is a notoriously hard program to debug, since it runs outside -of any operating system, and has a tendency to expose BIOS and -hardware bugs on various systems. Therefore, I would appreciate if -you would resist the temptation of recompiling the Syslinux bootloader -itself (ldlinux.asm) if at all possible. If you do that, I will have -to refer any bug reports I receive back to the respective distributor. - -However, I have no such concerns about recompiling the installer -programs, and in fact, with both libc 5 and libc 6 in common use in -the Linux world today I understand if you wish to relink the -Linux-based installer against your system version of libc. Therefore -a special makefile targets "make installer" has been included with the -Syslinux distribution, starting with version 1.42. - -To rebuild the installer programs *only*, starting from a freshly -untarred distribution copy of Syslinux, do: - - make clean - make installer - -If you want to remove all intermediate files, including the ones -obtained from assembling ldlinux.asm and which are included in the -distribution, do "make spotless". - -I appreciate your assistance in this matter. - - H. Peter Anvin diff --git a/config/release/3rdparty/syslinux/doc/extlinux.txt b/config/release/3rdparty/syslinux/doc/extlinux.txt deleted file mode 100644 index 9b26701826..0000000000 --- a/config/release/3rdparty/syslinux/doc/extlinux.txt +++ /dev/null @@ -1,134 +0,0 @@ -EXTLINUX is a new Syslinux derivative, which boots from a Linux -ext2/ext3 filesystem. - -It works the same way as SYSLINUX (see doc/syslinux.txt), with a few -slight modifications. - -1. The installer is run on a *mounted* filesystem. Run the extlinux - installer on the directory in which you want extlinux installed: - - extlinux --install /boot - - Specify --install (-i) to install for the first time, or - --update (-U) to upgrade a previous installation. - - NOTE: this doesn't have to be the root directory of a filesystem. - If /boot is a filesystem, you can do: - - mkdir -p /boot/extlinux - extlinux --install /boot/extlinux - - ... to create a subdirectory and install extlinux in it. - /boot/extlinux is the recommended location for extlinux. - - -2. The configuration file is called "extlinux.conf", and is expected - to be found in the same directory as extlinux is installed in. - Since 4.00 "syslinux.cfg" is also tried if "extlinux.conf" is not - found. - - -3. Pathnames can be absolute or relative; if absolute (with a leading - slash), they are relative to the root of the filesystem on which - extlinux is installed (/boot in the example above), if relative, - they are relative to the extlinux directory. - - extlinux supports subdirectories, but the total path length is - limited to 511 characters. - - -4. EXTLINUX now supports symbolic links. However, extremely long - symbolic links might hit the pathname limit. Also, please note - that absolute symbolic links are interpreted from the root *of the - filesystem*, which might be different from how the running system - would interpret it (e.g. in the case of a separate /boot - partition.) Therefore, use relative symbolic links if at all - possible. - - -5. EXTLINUX now has "boot-once" support. The boot-once information is - stored in an on-disk datastructure, part of extlinux.sys, called - the "Auxillary Data Vector". The Auxilliary Data Vector is also - available to COMBOOT/COM32 modules that want to store small amounts - of information. - - To set the boot-once information, do: - - extlinux --once 'command' /boot/extlinux - - where 'command' is any command you could enter at the Syslinux - command line. It will be executed on the next boot and then - erased. - - To clear the boot-once information, do: - - extlinux --clear-once /boot/extlinux - - If EXTLINUX is used on a RAID-1, this is recommended, since under - certain circumstances a RAID-1 rebuild can "resurrect" the - boot-once information otherwise. - - To clear the entire Auxillary Data Vector, do: - - extlinux --reset-adv /boot/extlinux - - This will erase all data stored in the ADV, including boot-once. - - The --once, --clear-once, and --reset-adv commands can be combined - with --install or --update, if desired. The ADV is preserved - across updates, unless --reset-adv is specified. - - -Note that EXTLINUX installs in the filesystem partition like a -well-behaved bootloader :) Thus, it needs a master boot record in the -partition table; the mbr.bin shipped with Syslinux should work well. -To install it just do: - - cat mbr.bin > /dev/XXX - -... where /dev/XXX is the appropriate master device, e.g. /dev/hda, -and make sure the correct partition in set active. - - -If you have multiple disks in a software RAID configuration, the -preferred way to boot is: - -- Create a separate RAID-1 partition for /boot. Note that the Linux - RAID-1 driver can span as many disks as you wish. - -- Install the MBR on *each disk*, and mark the RAID-1 partition - active. - -- Run "extlinux --raid --install /boot" to install extlinux. This - will install it on all the drives in the RAID-1 set, which means - you can boot any combination of drives in any order. - - - -It is not required to re-run the extlinux installer after installing -new kernels. If you are using ext3 journalling, however, it might be -desirable to do so, since running the extlinux installer will flush -the log. Otherwise a dirty shutdown could cause some of the new -kernel image to still be in the log. This is a general problem for -boot loaders on journalling filesystems; it is not specific to -extlinux. The "sync" command does not flush the log on the ext3 -filesystem. - - -The Syslinux Project boot loaders support chain loading other -operating systems via a separate module, chain.c32 (located in -com32/modules/chain.c32). To use it, specify a LABEL in the -configuration file with KERNEL chain.c32 and APPEND [hd|fd] -[] - -For example: - -# Windows CE/ME/NT, a very dense operating system. -# Second partition (2) on the first hard disk (hd0); -# Linux would *typically* call this /dev/hda2 or /dev/sda2. -LABEL cement - KERNEL chain.c32 - APPEND hd0 2 - -See also doc/menu.txt. - diff --git a/config/release/3rdparty/syslinux/doc/gpt.txt b/config/release/3rdparty/syslinux/doc/gpt.txt deleted file mode 100644 index 090993207c..0000000000 --- a/config/release/3rdparty/syslinux/doc/gpt.txt +++ /dev/null @@ -1,69 +0,0 @@ - GPT boot protocol - -There are two ways to boot a GPT-formatted disk on a BIOS system. -Hybrid booting, and the new GPT-only booting protocol originally -proposed by the author, and later adopted by the T13 committee in -slightly modified form. - - - *** Hybrid booting *** - -Hybrid booting uses a standard MBR, and has bootable ("active") -partitions present, as partitions, in the GPT PMBR sector. This means -the PMBR, instead of containing only one "protective" partition (type -EE), may contain up to three partitions: a protective partition (EE) -*before* the active partition, the active partition, and a protective -partition (EE) *after* the active partition. The active partition is -limited to the first 2^32 sectors (2 TB) of the disk. - -All partitions, including the active partition, should have GPT -partition entries. Thus, changing which partition is active does NOT -change the GPT partition table. - -This is the only known way to boot Microsoft operating systems from a -GPT disk with BIOS firmware. - - - *** New protocol *** - -This defines the T13-approved protocol for GPT partitions with BIOS -firmware. It maintains backwards compatibility to the extent -possible. It is implemented by the file mbr/gptmbr.bin. - -The (P)MBR format is the normal PMBR specified in the UEFI -documentation, with the first 440 bytes used for the boot code. The -partition to be booted is marked by setting bit 2 in the GPT Partition -Entry Attributes field (offset 48); this bit is reserved by the UEFI -Forum for "Legacy BIOS Bootable". - - - -> The handover protocol - -The PMBR boot code loads the first sector of the bootable partition, -and passes in DL=, ES:DI=, sets EAX to -0x54504721 ("!GPT") and points DS:SI to a structure of the following -form: - - Offset Size Contents - --------------------------------------------------------- - 0 1 0x80 (this is a bootable partition) - 1 3 CHS of partition (using INT 13h geometry) - 4 1 0xED (partition type: synthetic) - 5 3 CHS of partition end - 8 4 Partition start LBA - 12 4 Partition end LBA - 16 4 Length of the GPT entry - 20 varies GPT partition entry - -The CHS information is optional; gptmbr.bin currently does *NOT* -calculate them, and just leaves them as zero. - -Bytes 0-15 matches the standard MBR handover (DS:SI points to the -partition entry), except that the information is provided -synthetically. The MBR-compatible fields are directly usable if they -are < 2 TB, otherwise these fields should contain 0xFFFFFFFF and the -OS will need to understand the GPT partition entry which follows the -MBR one. The "!GPT" magic number in EAX and the 0xED partition type -also informs the OS that the GPT partition information is present. - -Syslinux 4.00 and later fully implements this protocol. diff --git a/config/release/3rdparty/syslinux/doc/isolinux.txt b/config/release/3rdparty/syslinux/doc/isolinux.txt deleted file mode 100644 index 807c631154..0000000000 --- a/config/release/3rdparty/syslinux/doc/isolinux.txt +++ /dev/null @@ -1,102 +0,0 @@ - ISOLINUX - - A bootloader for Linux using ISO 9660/El Torito CD-ROMs - - Copyright 1994-2008 H. Peter Anvin - All Rights Reserved - -This program is provided under the terms of the GNU General Public -License, version 2 or, at your option, any later version. There is no -warranty, neither expressed nor implied, to the function of this -program. Please see the included file COPYING for details. - ----------------------------------------------------------------------- - -ISOLINUX is a boot loader for Linux/i386 that operates off ISO 9660/El -Torito CD-ROMs in "no emulation" mode. This avoids the need to create -an "emulation disk image" with limited space (for "floppy emulation") -or compatibility problems (for "hard disk emulation".) - -This documentation isn't here yet, but here is enough that you should -be able to test it out: - -Make sure you have a recent enough version of mkisofs. I recommend -mkisofs 1.13 (distributed with cdrecord 1.9), but 1.12 might work as -well (not tested.) - -To create an image, create a directory called "isolinux" (or, if you -prefer, "boot/isolinux") underneath the root directory of your ISO -image master file tree. Copy isolinux.bin, a config file called -"isolinux.cfg" (see syslinux.txt for details on the configuration -file), and all necessary files (kernels, initrd, display files, etc.) -into this directory, then use the following command to create your ISO -image (add additional options as appropriate, such as -J or -R): - - mkisofs -o \ - -b isolinux/isolinux.bin -c isolinux/boot.cat \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - - -(If you named the directory boot/isolinux that should of course be --b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat.) - -ISOLINUX resolves pathnames the following way: - -- A pathname consists of names separated by slashes, Unix-style. -- A leading / means it searches from the root directory; otherwise the - search is from the isolinux directory (think of this as the "current - directory".) -- . and .. in pathname searches are not supported. -- The maximum length of any pathname is 255 characters. - -Note that ISOLINUX only uses the "plain" ISO 9660 filenames, i.e. it -does not support Rock Ridge or Joliet filenames. It can still be used -on a disk which uses Rock Ridge and/or Joliet extensions, of course. -Under Linux, you can verify the plain filenames by mounting with the -"-o norock,nojoliet" option to the mount command. Note, however, that -ISOLINUX does support "long" (level 2) ISO 9660 plain filenames, so if -compatibility with short-names-only operating systems like MS-DOS is -not an issue, you can use the "-l" or "-iso-level 2" option to mkisofs -to generate long (up to 31 characters) plain filenames. - -ISOLINUX does not support discontiguous files, interleaved mode, or -logical block and sector sizes other than 2048. This should normally -not be a problem. - -ISOLINUX is by default built in two versions, one version with extra -debugging messages enabled. If you are having problems with ISOLINUX, -I would greatly appreciate if you could try out the debugging version -(isolinux-debug.bin) and let me know what it reports. The debugging -version does not include hybrid mode support (see below.) - - - ++++ NOTE ON THE CONFIG FILE DIRECTORY ++++ - -ISOLINUX will search for the config file directory in the order -/boot/isolinux, /isolinux, /. The first directory that exists is -used, even if it contains no files. Therefore, please make sure that -these directories don't exist if you don't want ISOLINUX to use them. - - - ++++ HYBRID CD-ROM/HARD DISK MODE ++++ - -Starting in version 3.72, ISOLINUX supports a "hybrid mode" which can -be booted from either CD-ROM or from a device which BIOS considers a -hard disk or ZIP disk, e.g. a USB key or similar. - -To enable this mode, the .iso image should be postprocessed with the -"isohybrid" script from the utils directory: - - isohybrid filename.iso - -This script creates the necessary additional information to be able to -boot in hybrid mode. It also pads out the image to an even multiple -of 1 MB. - -This image can then be copied using any raw disk writing tool (on Unix -systems, typically "dd" or "cat") to a USB disk, or written to a -CD-ROM using standard CD burning tools. - -The ISO 9660 filesystem is encapsulated in a partition (which starts -at offset zero, which may confuse some systems.) This makes it -possible for the operating system, once booted, to use the remainder -of the device for persistent storage by creating a second partition. diff --git a/config/release/3rdparty/syslinux/doc/keytab-lilo.txt b/config/release/3rdparty/syslinux/doc/keytab-lilo.txt deleted file mode 100644 index cdbea0f761..0000000000 --- a/config/release/3rdparty/syslinux/doc/keytab-lilo.txt +++ /dev/null @@ -1,85 +0,0 @@ -This is the documentation for the keytab-lilo.pl program. It was -taken verbatim from the LILO-20 README file; only this header was -added. - -LILO program code, documentation and auxiliary programs are -Copyright 1992-1997 Werner Almesberger. -All rights reserved. - -Redistribution and use in source and binary forms of parts of or the -whole original or derived work are permitted provided that the -original work is properly attributed to the author. The name of the -author may not be used to endorse or promote products derived from -this software without specific prior written permission. This work -is provided "as is" and without any express or implied warranties. - -To use a LILO keyboard table with Syslinux, specify the KBDMAP command -in syslinux.cfg, for example: - - kbdmap de.ktl - -============================================================================ - -Keyboard translation --------------------- - -The PC keyboard emits so-called scan codes, which are basically key -numbers. The BIOS then translates those scan codes to the character codes -of the characters printed on the key-caps. By default, the BIOS normally -assumes that the keyboard has a US layout. Once an operating system is -loaded, this operating system can use a different mapping. - -At boot time, LILO only has access to the basic services provided by the -BIOS and therefore receives the character codes for an US keyboard. It -provides a simple mechanism to re-map the character codes to what is -appropriate for the actual layout.* - - * The current mechanism isn't perfect, because it sits on top of the - scan code to character code translation performed by the BIOS. This - means that key combinations that don't produce any useful character on - the US keyboard will be ignored by LILO. The advantage of this approach - is its simplicity. - - -Compiling keyboard translation tables -- - - - - - - - - - - - - - - - - - - - -LILO obtains layout information from the keyboard translation tables Linux -uses for the text console. They are usually stored in -/usr/lib/kbd/keytables. LILO comes with a program keytab-lilo.pl that reads -those tables and generates a table suitable for use by the map installer. -keytab-lilo.pl invokes the program loadkeys to print the tables in a format -that is easy to parse.* - - * On some systems, only root can execute loadkeys. It is then necessary - to run keytab-lilo.pl as root too. - -keytab-lilo.pl is used as follows: - - keytab-lilo.pl [ -p = ] ... - [][.] ] - [][.] ] - - -p = - Specifies corrections ("patches") to the mapping obtained from the - translation table files. E.g. if pressing the upper case "A" should - yield an at sign, -p 65=64 would be used. The -p option can be - repeated any number of times. The codes can also be given as - hexadecimal or as octal numbers if they are prefixed with 0x or 0, - respectively. - The directory in which the file resides. The default path is - /usr/lib/kbd/keytables. - Usually the trailing .map, which is automatically added if - the file name doesn't contain dots. - Is the layout which specifies the translation by the - BIOS. If none is specified, us is assumed. - Is the actual layout of the keyboard. - -keytab-lilo.pl writes the resulting translation table as a binary string to -standard output. Such tables can be stored anywhere with any name, but the -suggested naming convention is /boot/.ktl ("Keyboard Table for Lilo"), -where is the name of the keyboard layout. - -Example: - -keytab-lilo.pl de >/boot/de.ktl diff --git a/config/release/3rdparty/syslinux/doc/mboot.txt b/config/release/3rdparty/syslinux/doc/mboot.txt deleted file mode 100644 index ef00ca5cc7..0000000000 --- a/config/release/3rdparty/syslinux/doc/mboot.txt +++ /dev/null @@ -1,26 +0,0 @@ - -mboot.c32 ---------- - -mboot.c32 is a 32-bit comboot module that allows Syslinux and its -variants to load and boot kernels that use the Multiboot standard -(e.g. the Xen virtual machine monitor, and the Fiasco and GNU Mach -microkernels). - -To load a multiboot kernel and modules in Syslinux, put mboot.c32 (from -com32/modules) in the boot directory, and load it as the "kernel" in the -configuration file. The command-line to pass to mboot.c32 is the kernel -command-line, followed by all the module command lines, separated with -'---'. For example, to load a Xen VMM, xenlinux and an initrd: - -DEFAULT mboot.c32 xen.gz dom0_mem=15000 nosmp noacpi --- linux.gz console=tty0 root=/dev/hda1 --- initrd.img - -or, as a choice in a menu: - -LABEL Xen - KERNEL mboot.c32 - APPEND xen.gz dom0_mem=15000 nosmp noacpi --- linux.gz console=tty0 root=/dev/hda1 --- initrd.img - -mboot.c32 requires version 2.12 or later of Syslinux. - -Tim Deegan, May 2005 diff --git a/config/release/3rdparty/syslinux/doc/memdisk.txt b/config/release/3rdparty/syslinux/doc/memdisk.txt deleted file mode 100644 index 0d6293d664..0000000000 --- a/config/release/3rdparty/syslinux/doc/memdisk.txt +++ /dev/null @@ -1,298 +0,0 @@ -[This documentation is rather crufty at the moment.] - -MEMDISK is meant to allow booting legacy operating systems via PXE, -and as a workaround for BIOSes where ISOLINUX image support doesn't -work. - -MEMDISK simulates a disk by claiming a chunk of high memory for the -disk and a (very small - 2K typical) chunk of low (DOS) memory for the -driver itself, then hooking the INT 13h (disk driver) and INT 15h -(memory query) BIOS interrupts. - -MEMDISK allows for an OS to detect the MEMDISK instance. (See the -"Additional technical information" section below.) - -To use it, type on the Syslinux command line: - -memdisk initrd=diskimg.img - -... where diskimg.img is the disk image you want to boot from. - -[Obviously, the memdisk binary as well as your disk image file need to -be present in the boot image directory.] - -... or add to your syslinux.cfg/pxelinux.cfg/isolinux.cfg something like: - -label dos - kernel memdisk - append initrd=dosboot.img - -Note the following: - -a) The disk image can be uncompressed or compressed with gzip or zip. - -b) If the disk image is less than 4,194,304 bytes (4096K, 4 MB) it is - assumed to be a floppy image and MEMDISK will try to guess its - geometry based on the size of the file. MEMDISK recognizes all the - standard floppy sizes as well as common extended formats: - - 163,840 bytes (160K) c=40 h=1 s=8 5.25" SSSD - 184,320 bytes (180K) c=40 h=1 s=9 5.25" SSSD - 327,680 bytes (320K) c=40 h=2 s=8 5.25" DSDD - 368,640 bytes (360K) c=40 h=2 s=9 5.25" DSDD - 655,360 bytes (640K) c=80 h=2 s=8 3.5" DSDD - 737,280 bytes (720K) c=80 h=2 s=9 3.5" DSDD - 1,222,800 bytes (1200K) c=80 h=2 s=15 5.25" DSHD - 1,474,560 bytes (1440K) c=80 h=2 s=18 3.5" DSHD - 1,638,400 bytes (1600K) c=80 h=2 s=20 3.5" DSHD (extended) - 1,720,320 bytes (1680K) c=80 h=2 s=21 3.5" DSHD (extended) - 1,763,328 bytes (1722K) c=82 h=2 s=21 3.5" DSHD (extended) - 1,784,832 bytes (1743K) c=83 h=2 s=21 3.5" DSHD (extended) - 1,802,240 bytes (1760K) c=80 h=2 s=22 3.5" DSHD (extended) - 1,884,160 bytes (1840K) c=80 h=2 s=23 3.5" DSHD (extended) - 1,966,080 bytes (1920K) c=80 h=2 s=24 3.5" DSHD (extended) - 2,949,120 bytes (2880K) c=80 h=2 s=36 3.5" DSED - 3,194,880 bytes (3120K) c=80 h=2 s=39 3.5" DSED (extended) - 3,276,800 bytes (3200K) c=80 h=2 s=40 3.5" DSED (extended) - 3,604,480 bytes (3520K) c=80 h=2 s=44 3.5" DSED (extended) - 3,932,160 bytes (3840K) c=80 h=2 s=48 3.5" DSED (extended) - - A small perl script is included in the MEMDISK directory which can - determine the geometry that MEMDISK would select for other sizes; - in general MEMDISK will correctly detect most physical extended - formats used, with 80 cylinders or slightly more. - - If the image is 4 MB or larger, it is assumed to be a hard disk - image, and should typically have an MBR and a partition table. It - may optionally have a DOSEMU geometry header; in which case the - header is used to determine the C/H/S geometry of the disk. - Otherwise, the geometry is determined by examining the partition - table, so the entire image should be partitioned for proper - operation (it may be divided between multiple partitions, however.) - - You can also specify the geometry manually with the following command - line options: - - c=# Specify number of cylinders (max 1024[*]) - h=# Specify number of heads (max 256[*]) - s=# Specify number of sectors (max 63) - floppy[=#] The image is a floppy image[**] - harddisk[=#] The image is a hard disk image[**] - iso The image is an El Torito ISO9660 image (drive 0xE0) - - # represents a decimal number. - - [*] MS-DOS only allows max 255 heads, and only allows 255 cylinders - on floppy disks. - - [**] Normally MEMDISK emulates the first floppy or hard disk. This - can be overridden by specifying an index, e.g. floppy=1 will - simulate fd1 (B:). This may not work on all operating systems - or BIOSes. - -c) The disk is normally writable (although, of course, there is - nothing backing it up, so it only lasts until reset.) If you want, - you can mimic a write-protected disk by specifying the command line - option: - - ro Disk is readonly - -d) MEMDISK normally uses the BIOS "INT 15h mover" API to access high - memory. This is well-behaved with extended memory managers which load - later. Unfortunately it appears that the "DOS boot disk" from - WinME/XP *deliberately* crash the system when this API is invoked. - The following command-line options tells MEMDISK to enter protected - mode directly, whenever possible: - - raw Use raw access to protected mode memory. - - bigraw Use raw access to protected mode memory, and leave the - CPU in "big real" mode afterwards. - - int Use plain INT 15h access to protected memory. This assumes - that anything which hooks INT 15h knows what it is doing. - - safeint Use INT 15h access to protected memory, but invoke - INT 15h the way it was *before* MEMDISK was loaded. - This is the default since version 3.73. - -e) MEMDISK by default supports EDD/EBIOS on hard disks, but not on - floppy disks. This can be controlled with the options: - - edd Enable EDD/EBIOS - noedd Disable EDD/EBIOS - -f) The following option can be used to pause to view the messages: - - pause Wait for a keypress right before booting - -g) The following option can be used to set the real-mode stack size. - The default is 512 bytes, but if there is a failure it might be - interesting to set it to something larger: - - stack=size Set the stack to "size" bytes - -h) Some systems without a floppy drive have been known to have - problems with floppy images. To avoid that those problems, first - of all make sure you don't have a floppy drive configured on the - BIOS screen. If there is no option to configure that, or that - doesn't work, you can use the option: - - nopass Hide all real drives of the same type (floppy or hard disk) - nopassany Hide all real drives (floppy and hard disk) - -i) The following standard Linux option will mark memory as reserved. - Please note that the Syslinux core already loads MEMDISK and its - initrd below this point: - - mem=size Mark available memory above this point as Reserved. - - -Some interesting things to note: - -If you're using MEMDISK to boot DOS from a CD-ROM (using ISOLINUX), -you might find the generic El Torito CD-ROM driver by Gary Tong and -Bart Lagerweij useful. It is now included with the Syslinux -distribution, in the dosutil directory. See the file -dosutil/eltorito.txt for more information. - -Similarly, if you're booting DOS over the network using PXELINUX, you -can use the "keeppxe" option and use the generic PXE (UNDI) NDIS -network driver, which is part of the PROBOOT.EXE distribution from -Intel: - - http://www.intel.com/support/network/adapter/1000/software.htm - - -Additional technical information: - -Starting with version 2.08, MEMDISK now supports an installation check -API. This works as follows: - - EAX = 454D08xxh ("ME") (08h = parameter query) - ECX = 444Dxxxxh ("MD") - EDX = 5349xxnnh ("IS") (nn = drive #) - EBX = 3F4Bxxxxh ("K?") - INT 13h - -If drive nn is a MEMDISK, the registers will contain: - - EAX = 4D21xxxxh ("!M") - ECX = 4D45xxxxh ("EM") - EDX = 4944xxxxh ("DI") - EBX = 4B53xxxxh ("SK") - - ES:DI -> MEMDISK info structures - -The low parts of EAX/ECX/EDX/EBX have the normal return values for INT -13h, AH=08h, i.e. information of the disk geometry etc. - -See Ralf Brown's interrupt list, -http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html or -http://www.ctyme.com/rbrown.htm, for a detailed description. - -The MEMDISK info structure currently contains: - - [ES:DI] word Total size of structure (currently 30 bytes) - [ES:DI+2] byte MEMDISK minor version - [ES:DI+3] byte MEMDISK major version - [ES:DI+4] dword Pointer to MEMDISK data in high memory - [ES:DI+8] dword Size of MEMDISK data in sectors - [ES:DI+12] 16:16 Far pointer to command line - [ES:DI+16] 16:16 Old INT 13h pointer - [ES:DI+20] 16:16 Old INT 15h pointer - [ES:DI+24] word Amount of DOS memory before MEMDISK loaded - [ES:DI+26] byte Boot loader ID - [ES:DI+27] byte Sector size as a power of 2 - (If zero, assume 512-byte sectors) - [ES:DI+28] word If nonzero, offset (vs ES) to installed DPT - This pointer+16 contains the original INT 1Eh - -Sizes of this structure: - -3.71+ 30 bytes Added DPT pointer -3.00-3.70 27 bytes Added boot loader ID -pre-3.00 26 bytes - -In addition, the following fields are available at [ES:0]: - - [ES:0] word Offset of INT 13h routine (segment == ES) - [ES:2] word Offset of INT 15h routine (segment == ES) - -The program mdiskchk.c in the sample directory is an example on how -this API can be used. - -The following code can be used to "disable" MEMDISK. Note that it -does not free the handler in DOS memory, and that running this from -DOS will probably crash your machine (DOS doesn't like drives suddenly -disappearing from underneath.) This is also not necessarily the best -method for this. - - mov eax, 454D0800h - mov ecx, 444D0000h - mov edx, 53490000h - mov dl,drive_number - mov ebx, 3F4B0000h - int 13h - - shr eax, 16 - cmp ax, 4D21h - jne not_memdisk - shr ecx, 16 - cmp cx, 4D45h - jne not_memdisk - shr edx, 16 - cmp dx, 4944h - jne not_memdisk - shr ebx, 16 - cmp bx, 4B53h - jne not_memdisk - - cli - mov bx,[es:0] ; INT 13h handler offset - mov eax,[es:di+16] ; Old INT 13h handler - mov byte [es:bx], 0EAh ; FAR JMP - mov [es:bx+1], eax - - mov bx,[es:2] ; INT 15h handler offset - mov eax,[es:di+20] ; Old INT 15h handler - mov byte [es:bx], 0EAh ; FAR JMP - mov [es:bx+1], eax - sti - -MEMDISK supports the Win9x "safe hook" structure for OS detection. -(See "Safe Master Boot Record INT 13h Hook Routines," available at -http://www.osronline.com/ddkx/w98ddk/storage_5l6g.htm as of -December 7th, 2009.) An OS driver can take a look at the INTerrupt table -and try to walk along the chain of those hooks that implement the "safe hook" -structure. For each hook discovered, a vendor can be identified and the OS -driver can take appropriate action. The OS driver can mark the "flags" field -of the "safe hook" to indicate that the driver has reviewed it already. This -prevents accidental re-detection, for example. - -MEMDISK adds one additional extension field to the "safe hook" structure, a -pointer to a special MEMDISK structure called the "mBFT." The mBFT is the -"MEMDISK Boot Firmware Table" (akin to the iSCSI iBFT and the AoE aBFT). An -OS driver looking at MEMDISK's "safe hook" should know that this field will -be present based on the fact that MEMDISK is the vendor identifier. - -The mBFT is little more than an ACPI table to prefix MEMDISK's traditional -MEMDISK info structure (the "MDI"). The ACPI table's details are: - - OEM ID. . . .: MEMDSK - OEM Table ID : Syslinux - -There is a 1-byte checksum field which covers the length of the mBFT all -the way through to the end of the MEMDISK info structure. - -There is also a physical pointer to the "safe hook" structure associated -with the MEMDISK instance. An OS driver might use the following logic: - - 1. Walk INT 13h "safe hook" chain as far as possible, marking hooks as - having been reviewed. For MEMDISK hooks, the driver then follows the - pointer to the mBFT and gathers the RAM disk details from the included - MDI. - 2. The OS driver scans low memory for valid mBFTs. MEMDISK instances that - have been "disconnected" from the INT 13h "safe hook" chain can be thus - discovered. Looking at their associated "safe hook" structure will - reveal if they were indeed reviewed by the previous stage. diff --git a/config/release/3rdparty/syslinux/doc/menu.txt b/config/release/3rdparty/syslinux/doc/menu.txt deleted file mode 100644 index 620527e69a..0000000000 --- a/config/release/3rdparty/syslinux/doc/menu.txt +++ /dev/null @@ -1,585 +0,0 @@ -There are two menu systems included with Syslinux, the advanced menu -system, and the simple menu system. - - -+++ THE ADVANCED MENU SYSTEM +++ - -The advanced menu system, written by Murali Krishnan Ganapathy, is -located in the menu/ subdirectly. It allows the user to create -hierarchial submenus, dynamic options, checkboxes, and just about -anything you want. It requires that the menu is compiled from a -simple C file, see menu/simple.c and menu/complex.c for examples. - -The advanced menu system doesn't support serial console at this time. - -See menu/README for more information. - - -+++ THE SIMPLE MENU SYSTEM +++ - -The simple menu system is a single module located at -com32/modules/vesamenu.c32 (graphical) or com32/modules/menu.c32 (text -mode only). It uses the same configuration file as the regular -Syslinux command line, and displays all the LABEL statements. - -To use the menu system, simply make sure [vesa]menu.c32 is in the -appropriate location for your boot medium (the same directory as the -configuration file for SYSLINUX, EXTLINUX and ISOLINUX, and the same -directory as pxelinux.0 for PXELINUX), and put the following options -in your configuration file: - -UI menu.c32 - - -There are a few menu additions to the configuration file, all starting -with the keywords MENU or TEXT; like the rest of the Syslinux config -file language, it is case insensitive: - - -MENU TITLE title - - Give the menu a title. The title is presented at the top of - the menu. - - -MENU HIDDEN - - Do not display the actual menu unless the user presses a key. - All that is displayed is a timeout message. - - -MENU HIDDENKEY key[,key...] command... - - If they key used to interrupt MENU HIDDEN is , then - execute the specified command instead of displaying the menu. - - Currently, the following key names are recognized: - - Backspace, Tab, Enter, Esc, Space, F1..F12, Up, Down, Left, - Right, PgUp, PgDn, Home, End, Insert, Delete - - ... in addition to all single characters plus the syntax ^X - for Ctrl-X. Note that single characters are treated as case - sensitive, so a different command can be bound to "A" than - "a". One can bind the same command to multiple keys by giving - a comma-separated list of keys: - - menu hiddenkey A,a key_a_command - - -MENU CLEAR - - Clear the screen when exiting the menu, instead of leaving the - menu displayed. For vesamenu, this means the graphical - background is still displayed without the menu itself for as - long as the screen remains in graphics mode. - - -MENU SHIFTKEY - - Exit the menu system immediately unless either the Shift or Alt - key is pressed, or Caps Lock or Scroll Lock is set. - - -MENU SEPARATOR - - Insert an empty line in the menu. - - -MENU LABEL label - - (Only valid after a LABEL statement.) - Changes the label displayed for a specific entry. This allows - you to have a label that isn't suitable for the command line, - for example: - - # Soft Cap Linux - LABEL softcap - MENU LABEL Soft Cap ^Linux 9.6.36 - KERNEL softcap-9.6.36.bzi - APPEND whatever - - # A very dense operating system - LABEL brick - MENU LABEL ^Windows CE/ME/NT - KERNEL chain.c32 - APPEND hd0 2 - - The ^ symbol in a MENU LABEL statement defines a hotkey. - The hotkey will be highlighted in the menu and will move the - menu cursor immediately to that entry. - - Reusing hotkeys is disallowed, subsequent entries will not be - highlighted, and will not work. - - Keep in mind that the LABELs, not MENU LABELs, must be unique, - or odd things will happen to the command-line. - - -MENU INDENT count - - (Only valid after a LABEL statement.) - Will add "count" spaces in front of the displayed menu entry. - - -MENU DISABLE - - (Only valid after a LABEL statement.) - Makes the entry unselectable. This allows you to make a - section in your menu with different options below it. - for example: - - # Entries for network boots - LABEL - - MENU LABEL Network: - MENU DISABLE - - # Soft Cap Linux - LABEL softcap - MENU LABEL Soft Cap ^Linux 9.6.36 - MENU INDENT 1 - KERNEL softcap-9.6.36.bzi - APPEND whatever - - # Dos 6.22 - LABEL dos - MENU LABEL ^Dos 6.22 - MENU INDENT 1 - KERNEL memdisk - APPEND initrd=dos622.imz - - # Separator - MENU SEPARATOR - - # Entries for local boots - LABEL - - MENU LABEL Local: - MENU DISABLE - - # Windows 2000 - LABEL w2k - MENU LABEL ^Windows 2000 - MENU INDENT 1 - KERNEL chain.c32 - APPEND hd0 1 - - # Windows XP - LABEL xp - MENU LABEL Windows ^XP - MENU INDENT 1 - KERNEL chain.c32 - APPEND hd0 2 - -MENU HIDE - - (Only valid after a LABEL statement.) - Suppresses a particular LABEL entry from the menu. - - -MENU DEFAULT - - (Only valid after a LABEL statement.) - - Indicates that this entry should be the default for this - particular submenu. See also the DEFAULT directive below. - - -TEXT HELP -Help text ... -... which can span multiple lines -ENDTEXT - - (Only valid after a LABEL statement.) - - Specifies a help text that should be displayed when a particular - selection is highlighted. - - -MENU PASSWD passwd - - (Only valid after a LABEL statement.) - - Sets a password on this menu entry. "passwd" can be either a - cleartext password or a password encrypted with one of the - following algorithms: - - MD5 (Signature: $1$) - SHA-1 (Signature: $4$) - SHA-2-256 (Signature: $5$) - SHA-2-512 (Signature: $6$) - - Use the included Perl scripts "sha1pass" or "md5pass" to - encrypt passwords. MD5 passwords are compatible with most - Unix password file utilities; SHA-1 passwords are probably - unique to Syslinux; SHA-2 passwords are compatible with very - recent Linux distributions. Obviously, if you don't encrypt - your passwords they will not be very secure at all. - - If you are using passwords, you want to make sure you also use - the settings "NOESCAPE 1", "PROMPT 0", and either set - "ALLOWOPTIONS 0" or use a master password (see below.) - - If passwd is an empty string, this menu entry can only be - unlocked with the master password. - - -MENU MASTER PASSWD passwd - - Sets a master password. This password can be used to boot any - menu entry, and is required for the [Tab] and [Esc] keys to - work. - - -MENU RESOLUTION height width - - Requests a specific screen resolution when in graphics mode. - The default is "640 480" corresponding to a resolution of - 640x480 pixels, which all VGA-compatible monitors should be - able to display. - - If the selected resolution is unavailable, the text mode menu - is displayed instead. - - -MENU BACKGROUND background - - For vesamenu.c32, sets the background image. The background - can either be a color (see MENU COLOR) or the name of an image - file, which should be the size of the screen (normally 640x480 - pixels, but see MENU RESOLUTION) and either in PNG, JPEG or - LSS16 format. - - -MENU BEGIN [tagname] -MENU END - - Begin/end a submenu. The entries between MENU BEGIN and MENU - END form a submenu, which is marked with a > mark on the right - hand of the screen. Submenus inherit the properties of their - parent menus, but can override them, and can thus have their - own backgrounds, master passwords, titles, timeouts, messages - and so forth. - - -MENU GOTO tagname - - (Only valid after a LABEL statement.) - - This label will transfer to the named submenu instead of - booting anything. To transfer to the top-level menu, specify - "menu goto .top". - - -MENU EXIT [tagname] - - (Only valid after a label statement inside MENU BEGIN ... - MENU END) - - Exit to the next higher menu, or, if tagname is specified, to - the named menu. - - -MENU QUIT - - (Only valid after a LABEL statement.) - - This label quits the menu system. - - WARNING: if MENU MASTER PASSWD or ALLOWOPTIONS 0 is set, this - will still allow exiting to the CLI; however, a separate MENU - PASSWD can of course be set for this label. - - -MENU START - - (Only valid inside MENU BEGIN ... MENU END) - - Indicates that the menu system should start at the menu being - defined instead of at the top-level menu. See also the - DEFAULT directive below. - - -DEFAULT label - - Set the global default. If "label" points into a submenu, - that menu becomes the start menu; in other words, this - directive has the same effect as both MENU DEFAULT and MENU - START. - - For backwards compatibility with earlier versions of Syslinux, - this directive is ignored unless the configuration file also - contains a UI directive. - - Note: the CLI accepts options after the label, or even a - non-label. The menu system does not support that. - - -MENU SAVE -MENU NOSAVE - - Remember the last entry selected and make that the default for - the next boot. A password-protected menu entry is *not* - saved. This requires the ADV data storage mechanism, which is - currently only implemented for EXTLINUX, although the other - Syslinux derivatives will accept the command (and ignore it.) - - NOTE: MENU SAVE stores the LABEL tag of the selected entry; - this mechanism therefore relies on LABEL tags being unique. - On the other hand, it handles changes in the configuration - file gracefully. - - NOTE: In software RAID-1 setups MENU SAVE only stores the - default label on the actual boot disk. This may lead to - inconsistent reads from the array, or unexpectedly change the - default label after array resynchronization or disk failure. - - The MENU SAVE information can be fully cleared with - "extlinux --reset-adv ". - - A MENU SAVE or MENU NOSAVE at the top of a (sub)menu affects - all entries underneath that (sub)menu except those that in - turn have MENU SAVE or MENU NOSAVE declared. This can be used - to only save certain entires when selected. - - -INCLUDE filename [tagname] -MENU INCLUDE filename [tagname] - - Include the contents of the configuration file filename at - this point. - - In the case of MENU INCLUDE, the included data is only seen by - the menu system; the core syslinux code does not parse this - command, so any labels defined in it are unavailable. - - If a tagname is included, the whole file is considered to have - been bracketed with a MENU BEGIN tagname ... MENU END pair, - and will therefore show up as a submenu. - - -MENU AUTOBOOT message - - Replaces the message "Automatic boot in # second{,s}...". The - symbol # is replaced with the number of seconds remaining. - The syntax "{singular,[dual,]plural}" can be used to conjugate - appropriately. - - -MENU TABMSG message - - Replaces the message "Press [Tab] to edit options". - - -MENU NOTABMSG message - - Takes the place of the TABMSG message if option editing is - disabled. Defaults to blank. - - -MENU PASSPROMPT message - - Replaces the message "Password required". - - -MENU COLOR element ansi foreground background shadow - - Sets the color of element "element" to the specified color - sequence: - - screen Rest of the screen - border Border area - title Title bar - unsel Unselected menu item - hotkey Unselected hotkey - sel Selection bar - hotsel Selected hotkey - disabled Disabled menu item - scrollbar Scroll bar - tabmsg Press [Tab] message - cmdmark Command line marker - cmdline Command line - pwdborder Password box border - pwdheader Password box header - pwdentry Password box contents - timeout_msg Timeout message - timeout Timeout counter - help Help text - msgXX Message (F-key) file attribute XX - - ... where XX is two hexadecimal digits (the "plain text" is 07). - - "ansi" is a sequence of semicolon-separated ECMA-48 Set - Graphics Rendition ([m) sequences: - - 0 reset all attributes to their defaults - 1 set bold - 4 set underscore (simulated with color on a color display) - 5 set blink - 7 set reverse video - 22 set normal intensity - 24 underline off - 25 blink off - 27 reverse video off - 30 set black foreground - 31 set red foreground - 32 set green foreground - 33 set brown foreground - 34 set blue foreground - 35 set magenta foreground - 36 set cyan foreground - 37 set white foreground - 38 set underscore on, set default foreground color - 39 set underscore off, set default foreground color - 40 set black background - 41 set red background - 42 set green background - 43 set brown background - 44 set blue background - 45 set magenta background - 46 set cyan background - 47 set white background - 49 set default background color - - These are used (a) in text mode, and (b) on the serial - console. - - "foreground" and "background" are color codes in #AARRGGBB - notation, where AA RR GG BB are hexadecimal digits for alpha - (opacity), red, green and blue, respectively. #00000000 - represents fully transparent, and #ffffffff represents opaque - white. - - "shadow" controls the handling of the graphical console text - shadow. Permitted values are "none" (no shadowing), "std" or - "standard" (standard shadowing - foreground pixels are - raised), "all" (both background and foreground raised), and - "rev" or "reverse" (background pixels are raised.) - - If any field is set to "*" or omitted (at the end of the line) - then that field is left unchanged. - - - The current defaults are: - - menu color screen 37;40 #80ffffff #00000000 std - menu color border 30;44 #40000000 #00000000 std - menu color title 1;36;44 #c00090f0 #00000000 std - menu color unsel 37;44 #90ffffff #00000000 std - menu color hotkey 1;37;44 #ffffffff #00000000 std - menu color sel 7;37;40 #e0000000 #20ff8000 all - menu color hotsel 1;7;37;40 #e0400000 #20ff8000 all - menu color disabled 1;30;44 #60cccccc #00000000 std - menu color scrollbar 30;44 #40000000 #00000000 std - menu color tabmsg 31;40 #90ffff00 #00000000 std - menu color cmdmark 1;36;40 #c000ffff #00000000 std - menu color cmdline 37;40 #c0ffffff #00000000 std - menu color pwdborder 30;47 #80ffffff #20ffffff std - menu color pwdheader 31;47 #80ff8080 #20ffffff std - menu color pwdentry 30;47 #80ffffff #20ffffff std - menu color timeout_msg 37;40 #80ffffff #00000000 std - menu color timeout 1;37;40 #c0ffffff #00000000 std - menu color help 37;40 #c0ffffff #00000000 std - menu color msg07 37;40 #90ffffff #00000000 std - - -MENU MSGCOLOR fg_filter bg_filter shadow - - Sets *all* the msgXX colors to a color scheme derived from the - fg_filter and bg_filter values. Background color zero is - always treated as transparent. The default corresponds to: - - menu msgcolor #90ffffff #80ffffff std - - This directive should come before any directive that - customizes individual msgXX colors. - - -MENU WIDTH 80 -MENU MARGIN 10 -MENU PASSWORDMARGIN 3 -MENU ROWS 12 -MENU TABMSGROW 18 -MENU CMDLINEROW 18 -MENU ENDROW -1 -MENU PASSWORDROW 11 -MENU TIMEOUTROW 20 -MENU HELPMSGROW 22 -MENU HELPMSGENDROW -1 -MENU HIDDENROW -2 -MENU HSHIFT 0 -MENU VSHIFT 0 - - These options control the layout of the menu on the screen. - The values above are the defaults. - - A negative value is relative to the calculated length of the - screen (25 for text mode, 28 for VESA graphics mode.) - - -F1 textfile [background] -... -F12 textfile [background] - - Displays full-screen help (also available at the command line.) - The same control code sequences as in the command line - interface are supported, although some are ignored. - - Additionally, a optional second argument allows a different - background image (see MENU BACKGROUND for supported formats) - to be displayed. - - -MENU HELP textfile [background] - - Creates a menu entry which, when selected, displays - full-screen help in the same way as the F-key help. - - -The menu system honours the TIMEOUT command; if TIMEOUT is specified -it will execute the ONTIMEOUT command if one exists, otherwise it will -pick the default menu option. WARNING: the timeout action will bypass -password protection even if one is set for the specified or default -entry! - -Normally, the user can press [Tab] to edit the menu entry, and [Esc] -to return to the Syslinux command line. However, if the configuration -file specifies ALLOWOPTIONS 0, these keys will be disabled, and if -MENU MASTER PASSWD is set, they require the master password. - -The simple menu system supports serial console, using the normal -SERIAL directive. However, it can be quite slow over a slow serial -link; you probably want to set your baudrate to 38400 or higher if -possible. It requires a Linux/VT220/ANSI-compatible terminal on the -other end. - - - +++ USING AN ALTERNATE CONFIGURATION FILE +++ - - -It is also possible to load a secondary configuration file, to get to -another menu. To do that, invoke menu.c32 with the name of the -secondary configuration file. - -LABEL othermenu - MENU LABEL Another Menu - KERNEL menu.c32 - APPEND othermenu.conf - -If you specify more than one file, they will all be read, in the order -specified. The dummy filename ~ (tilde) is replaced with the filename -of the main configuration file. - -# The file graphics.conf contains common color and layout commands for -# all menus. -LABEL othermenu - MENU LABEL Another Menu - KERNEL vesamenu.c32 - APPEND graphics.conf othermenu.conf - -# Return to the main menu -LABEL mainmenu - MENU LABEL Return to Main Menu - KERNEL vesamenu.c32 - APPEND graphics.conf ~ - -See also the MENU INCLUDE directive above. diff --git a/config/release/3rdparty/syslinux/doc/pxelinux.txt b/config/release/3rdparty/syslinux/doc/pxelinux.txt deleted file mode 100644 index 69c1a6451d..0000000000 --- a/config/release/3rdparty/syslinux/doc/pxelinux.txt +++ /dev/null @@ -1,432 +0,0 @@ - PXELINUX - - A bootloader for Linux using the PXE network booting protocol - - Copyright 1994-2008 H. Peter Anvin - All Rights Reserved - -This program is provided under the terms of the GNU General Public -License, version 2 or, at your option, any later version. There is no -warranty, neither expressed nor implied, to the function of this -program. Please see the included file COPYING for details. - ----------------------------------------------------------------------- - -PXELINUX is a Syslinux derivative, for booting Linux off a network -server, using a network ROM conforming to the Intel PXE (Pre-Execution -Environment) specification. PXELINUX is *not* a program that is -intended to be flashed or burned into a PROM on the network card; if -you want that, check out Etherboot (http://www.etherboot.org/). -Etherboot 5.4 or later can also be used to create a PXE-compliant boot -PROM for many network cards. - - - ++++ HOW TO CONFIGURE PXELINUX ++++ - -PXELINUX operates in many ways like SYSLINUX. If you are not familiar -with SYSLINUX, read syslinux.txt first, since this documentation only -explains the differences. - -On the TFTP server, create the directory "/tftpboot", and copy the -following files to it: - - pxelinux.0 - from the Syslinux distribution - - any kernel or initrd images you want to boot - -Finally, create the directory "/tftpboot/pxelinux.cfg". The -configuration file (equivalent of syslinux.cfg -- see syslinux.txt for -the options here) will live in this directory. Because more than one -system may be booted from the same server, the configuration file name -depends on the IP address of the booting machine. PXELINUX will -search for its config file on the boot server in the following way: - - First, it will search for the config file using the client UUID, if - one is provided by the PXE stack (note, some BIOSes don't have a - valid UUID, and you might end up with something like all 1's.) This is - in the standard UUID format using lower case hexadecimal digits, e.g. - b8945908-d6a6-41a9-611d-74a6ab80b83d. - - Next, it will search for the config file using the hardware type - (using its ARP type code) and address, all in lower case hexadecimal - with dash separators; for example, for an Ethernet (ARP type 1) - with address 88:99:AA:BB:CC:DD it would search for the filename - 01-88-99-aa-bb-cc-dd. - - Next, it will search for the config file using its own IP address - in upper case hexadecimal, e.g. 192.0.2.91 -> C000025B - (you can use the included progam "gethostip" to compute the - hexadecimal IP address for any host.) - - If that file is not found, it will remove one hex digit and try - again. Ultimately, it will try looking for a file named "default" - (in lower case). - - As an example, if the boot file name is /mybootdir/pxelinux.0, the - UUID is b8945908-d6a6-41a9-611d-74a6ab80b83d, the Ethernet MAC - address is 88:99:AA:BB:CC:DD and the IP address 192.0.2.91, it will - try: - - /mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d - /mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd - /mybootdir/pxelinux.cfg/C000025B - /mybootdir/pxelinux.cfg/C000025 - /mybootdir/pxelinux.cfg/C00002 - /mybootdir/pxelinux.cfg/C0000 - /mybootdir/pxelinux.cfg/C000 - /mybootdir/pxelinux.cfg/C00 - /mybootdir/pxelinux.cfg/C0 - /mybootdir/pxelinux.cfg/C - /mybootdir/pxelinux.cfg/default - - ... in that order. - -Note that all filename references are relative to the directory -pxelinux.0 lives in. PXELINUX generally requires that filenames -(including any relative path) are 127 characters or shorter in length. - -Starting in release 3.20, PXELINUX will no longer apply a built-in -default if it cannot find any configuration file at all; instead it -will reboot after the timeout interval has expired. This keeps a -machine from getting stuck indefinitely due to a boot server failure. - -Starting in release 3.50, PXELINUX displays network information at -the boot prompt pressing . - -PXELINUX does not support MTFTP, and I have no plans of doing so, as -MTFTP is inherently broken for files more than 65535 packets (about -92 MB) in size. It is of course possible to use MTFTP for the initial -boot, if you have such a setup. MTFTP server setup is beyond the -scope of this document. - - - ++++ gPXE-ENHANCED VARIANTS ++++ - -gPXE can be used to enhance PXELINUX's functionality to also include -HTTP transfers, greatly increasing load speed and allowing for standard -HTTP scripts to present PXELINUX's configuration file. pxelinux.0 is -the plain variant. gpxelinux.0 (included as of 3.70) is gPXE's -undionly.kkpxe, pxelinux.0 and a script to run pxelinux.0. gpxelinuxk.0 -(included as of 4.04) is gPXE's undionly.kpxe, pxelinux.0 and a script -to run pxelinux.0. gpxelinuxk.0 should only be used with systems that -are incompatible with gpxelinux.0 as it prevents certain functionality -from working (LOCALBOOT with a type not equal to -1) and is incompatible -with certain hardware, PXE stacks and network setups. - - - ++++ SETTING UP THE TFTP SERVER ++++ - -PXELINUX currently requires that the boot server has a TFTP server -which supports the "tsize" TFTP option (RFC 1784/RFC 2349). The -"tftp-hpa" TFTP server, which support options, is available at: - - http://www.kernel.org/pub/software/network/tftp/ - ftp://www.kernel.org/pub/software/network/tftp/ - -... and on any kernel.org mirror (see http://www.kernel.org/mirrors/). - -Another TFTP server which supports this is atftp by Jean-Pierre -Lefebvre: - - ftp://ftp.mamalinux.com/pub/atftp/ - -If your boot server is running Windows (and you can't fix that), try -tftpd32 by Philippe Jounin (you need version 2.11 or later; previous -versions had a bug which made it incompatible with PXELINUX): - - http://tftpd32.jounin.net/ - - - ++++ SETTING UP THE DHCP SERVER ++++ - -The PXE protocol uses a very complex set of extensions to DHCP or -BOOTP. However, most PXE implementations -- this includes all Intel -ones version 0.99n and later -- seem to be able to boot in a -"conventional" DHCP/TFTP configuration. Assuming you don't have to -support any very old or otherwise severely broken clients, this is -probably the best configuration unless you already have a PXE boot -server on your network. - -A sample DHCP setup, using the "conventional TFTP" configuration, -would look something like the following, using ISC dhcp 2.0 dhcpd.conf -syntax: - - allow booting; - allow bootp; - - # Standard configuration directives... - - option domain-name ""; - option subnet-mask ; - option broadcast-address ; - option domain-name-servers ; - option routers ; - - # Group the PXE bootable hosts together - group { - # PXE-specific configuration directives... - next-server ; - filename "/tftpboot/pxelinux.0"; - - # You need an entry like this for every host - # unless you're using dynamic addresses - host { - hardware ethernet ; - fixed-address ; - } - } - -Note that if your particular TFTP daemon runs under chroot (tftp-hpa -will do this if you specify the -s (secure) option; this is highly -recommended), you almost certainly should not include the /tftpboot -prefix in the filename statement. - -If this does not work for your configuration, you probably should set -up a "PXE boot server" on port 4011 of your TFTP server; a free PXE -boot server is available at: - - http://www.kano.org.uk/projects/pxe/ - -With such a boot server defined, your DHCP configuration should look -the same except for an "option dhcp-class-identifier" ("option -vendor-class-identifier" if you are using DHCP 3.0): - - allow booting; - allow bootp; - - # Standard configuration directives... - - option domain-name ""; - option subnet-mask ; - option broadcast-address ; - option domain-name-servers ; - option routers ; - - # Group the PXE bootable hosts together - group { - # PXE-specific configuration directives... - option dhcp-class-identifier "PXEClient"; - next-server ; - - # You need an entry like this for every host - # unless you're using dynamic addresses - host { - hardware ethernet ; - fixed-address ; - } - } - -Here, the boot file name is obtained from the PXE server. - -If the "conventional TFTP" configuration doesn't work on your clients, -and setting up a PXE boot server is not an option, you can attempt the -following configuration. It has been known to boot some -configurations correctly; however, there are no guarantees: - - allow booting; - allow bootp; - - # Standard configuration directives... - - option domain-name ""; - option subnet-mask ; - option broadcast-address ; - option domain-name-servers ; - option routers ; - - # Group the PXE bootable hosts together - group { - # PXE-specific configuration directives... - option dhcp-class-identifier "PXEClient"; - option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff; - next-server ; - filename "/tftpboot/pxelinux.0"; - - # You need an entry like this for every host - # unless you're using dynamic addresses - host { - hardware ethernet ; - fixed-address ; - } - } - -Note that this *will not* boot some clients that *will* boot with the -"conventional TFTP" configuration; Intel Boot Client 3.0 and later are -known to fall into this category. - - - ++++ SPECIAL DHCP OPTIONS ++++ - -PXELINUX (starting with version 1.62) supports the following -nonstandard DHCP options, which depending on your DHCP server you may -be able to use to customize the specific behaviour of PXELINUX. See -RFC 5071 for some additional information about these options. - -Option 208 pxelinux.magic - - Earlier versions of PXELINUX required this to be set to - F1:00:74:7E (241.0.116.126) for PXELINUX to - recognize any special DHCP options whatsoever. As of - PXELINUX 3.55, this option is deprecated and is no longer - required. - -Option 209 pxelinux.configfile - - Specifies the PXELINUX configuration file name. - -Option 210 pxelinux.pathprefix - - Specifies the PXELINUX common path prefix, instead of - deriving it from the boot file name. This almost certainly - needs to end in whatever character the TFTP server OS uses - as a pathname separator, e.g. slash (/) for Unix. - -Option 211 pxelinux.reboottime - - Specifies, in seconds, the time to wait before reboot in the - event of TFTP failure. 0 means wait "forever" (in reality, - it waits approximately 136 years.) - -ISC dhcp 3.0 supports a rather nice syntax for specifying custom -options; you can use the following syntax in dhcpd.conf if you are -running this version of dhcpd: - - option space pxelinux; - option pxelinux.magic code 208 = string; - option pxelinux.configfile code 209 = text; - option pxelinux.pathprefix code 210 = text; - option pxelinux.reboottime code 211 = unsigned integer 32; - - NOTE: In earlier versions of PXELINUX, this would only work as a - "site-option-space". Since PXELINUX 2.07, this will work both as a - "site-option-space" (unencapsulated) and as a "vendor-option-space" - (type 43 encapsulated.) This may avoid messing with the - dhcp-parameter-request-list, as detailed below. - -Then, inside your PXELINUX-booting group or class (whereever you have -the PXELINUX-related options, such as the filename option), you can -add, for example: - - # Always include the following lines for all PXELINUX clients - site-option-space "pxelinux"; - option pxelinux.magic f1:00:74:7e; - if exists dhcp-parameter-request-list { - # Always send the PXELINUX options (specified in hexadecimal) - option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3); - } - # These lines should be customized to your setup - option pxelinux.configfile "configs/common"; - option pxelinux.pathprefix "/tftpboot/pxelinux/files/"; - option pxelinux.reboottime 30; - filename "/tftpboot/pxelinux/pxelinux.bin"; - -Note that the configfile is relative to the pathprefix: this will look -for a config file called /tftpboot/pxelinux/files/configs/common on -the TFTP server. - -The "option dhcp-parameter-request-list" statement forces the DHCP -server to send the PXELINUX-specific options, even though they are not -explicitly requested. Since the DHCP request is done before PXELINUX -is loaded, the PXE client won't know to request them. - -Using ISC dhcp 3.0 you can create a lot of these strings on the fly. -For example, to use the hexadecimal form of the hardware address as -the configuration file name, you could do something like: - - site-option-space "pxelinux"; - option pxelinux.magic f1:00:74:7e; - if exists dhcp-parameter-request-list { - # Always send the PXELINUX options (specified in hexadecimal) - option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3); - } - option pxelinux.configfile = - concat("pxelinux.cfg/", binary-to-ascii(16, 8, ":", hardware)); - filename "/tftpboot/pxelinux.bin"; - -If you used this from a client whose Ethernet address was -58:FA:84:CF:55:0E, this would look for a configuration file named -"/tftpboot/pxelinux.cfg/1:58:fa:84:cf:55:e". - - - ++++ ALTERNATE TFTP SERVERS ++++ - -PXELINUX supports the following special pathname conventions: - -::filename - - Suppresses the common filename prefix, i.e. passes the string - "filename" unmodified to the server. - -IP address::filename (e.g. 192.0.2.1::filename) - - Suppresses the common filename prefix, *and* sends a request - to an alternate TFTP server. Instead of an IP address, a - DNS name can be used. It will be assumed to be fully - qualified if it contains dots; otherwise the local domain as - reported by the DHCP server (option 15) will be added. - -:: was chosen because it is unlikely to conflict with operating system -usage. However, if you happen to have an environment for which the -special treatment of :: is a problem, please contact the Syslinux -mailing list. - - - ++++ SOME NOTES ++++ - -If the boot fails, PXELINUX (unlike SYSLINUX) will not wait forever; -rather, if it has not received any input for approximately five -minutes after displaying an error message, it will reset the machine. -This allows an unattended machine to recover in case it had bad enough -luck of trying to boot at the same time the TFTP server goes down. - -Lots of PXE stacks, especially old ones, have various problems of -varying degrees of severity. Please see: - - http://syslinux.zytor.com/hardware.php - -... for a list of currently known hardware problems, with workarounds -if known. - - - ++++ KEEPING THE PXE STACK AROUND ++++ - -Normally, PXELINUX will unload the PXE and UNDI stacks before invoking -the kernel. In special circumstances (for example, when using MEMDISK -to boot an operating system with an UNDI network driver) it might be -desirable to keep the PXE stack in memory. If the option "keeppxe" -is given on the kernel command line, PXELINUX will keep the PXE and -UNDI stacks in memory. (If you don't know what this means, you -probably don't need it.) - - - ++++ PROBLEMS WITH YOUR PXE STACK ++++ - -There are a number of extremely broken PXE stacks in the field. The -gPXE project (formerly known as Etherboot) provides an open-source PXE -stack that works with a number of cards, and which can be loaded from -a CD-ROM, USB key, or floppy if desired. - -Information on gPXE is available from: - - http://www.etherboot.org/ - -... and ready-to-use ROM or disk images from: - - http://www.rom-o-matic.net/ - -Some cards, like may systems with the SiS 900, has a PXE stack which -works just barely well enough to load a single file, but doesn't -handle the more advanced items required by PXELINUX. If so, it is -possible to use the built-in PXE stack to load gPXE, which can then -load PXELINUX. See: - - http://www.etherboot.org/wiki/pxechaining - - - ++++ CURRENTLY KNOWN PROBLEMS ++++ - -The following problems are known with PXELINUX, so far: - -+ The error recovery routine doesn't work quite right. For right now, - it just does a hard reset - seems good enough. -+ We should probably call the UDP receive function in the keyboard - entry loop, so that we answer ARP requests. -+ Boot sectors/disk images are not supported yet. - -If you have additional problems, please contact the Syslinux mailing -list (see syslinux.txt for the address.) diff --git a/config/release/3rdparty/syslinux/doc/rfc5071.txt b/config/release/3rdparty/syslinux/doc/rfc5071.txt deleted file mode 100644 index 68f6f5a84e..0000000000 --- a/config/release/3rdparty/syslinux/doc/rfc5071.txt +++ /dev/null @@ -1,787 +0,0 @@ - - - - - - -Network Working Group D. Hankins -Request for Comments: 5071 ISC -Category: Informational December 2007 - - - Dynamic Host Configuration Protocol Options Used by PXELINUX - -Status of This Memo - - This memo provides information for the Internet community. It does - not specify an Internet standard of any kind. Distribution of this - memo is unlimited. - -Abstract - - This document describes the use by PXELINUX of some DHCP Option Codes - numbering from 208-211. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Hankins Informational [Page 1] - -RFC 5071 PXELINUX Options December 2007 - - -Table of Contents - - 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 - 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 - 3. MAGIC Option . . . . . . . . . . . . . . . . . . . . . . . . . 4 - 3.1. Description . . . . . . . . . . . . . . . . . . . . . . . 4 - 3.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 5 - 3.3. Applicability . . . . . . . . . . . . . . . . . . . . . . 5 - 3.4. Response to RFC 3942 . . . . . . . . . . . . . . . . . . . 5 - 4. Configuration File Option . . . . . . . . . . . . . . . . . . 5 - 4.1. Description . . . . . . . . . . . . . . . . . . . . . . . 5 - 4.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 6 - 4.3. Applicability . . . . . . . . . . . . . . . . . . . . . . 6 - 4.4. Response to RFC 3942 . . . . . . . . . . . . . . . . . . . 6 - 4.5. Client and Server Behaviour . . . . . . . . . . . . . . . 6 - 5. Path Prefix Option . . . . . . . . . . . . . . . . . . . . . . 7 - 5.1. Description . . . . . . . . . . . . . . . . . . . . . . . 7 - 5.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 7 - 5.3. Applicability . . . . . . . . . . . . . . . . . . . . . . 7 - 5.4. Response to RFC 3942 . . . . . . . . . . . . . . . . . . . 8 - 5.5. Client and Server Behaviour . . . . . . . . . . . . . . . 8 - 6. Reboot Time Option . . . . . . . . . . . . . . . . . . . . . . 9 - 6.1. Description . . . . . . . . . . . . . . . . . . . . . . . 9 - 6.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . 9 - 6.3. Applicability . . . . . . . . . . . . . . . . . . . . . . 10 - 6.4. Response to RFC 3942 . . . . . . . . . . . . . . . . . . . 10 - 6.5. Client and Server Behaviour . . . . . . . . . . . . . . . 10 - 7. Specification Conformance . . . . . . . . . . . . . . . . . . 11 - 8. Security Considerations . . . . . . . . . . . . . . . . . . . 11 - 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 - 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 - 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 - 11.1. Normative References . . . . . . . . . . . . . . . . . . . 12 - 11.2. Informative References . . . . . . . . . . . . . . . . . . 12 - - - - - - - - - - - - - - - - - -Hankins Informational [Page 2] - -RFC 5071 PXELINUX Options December 2007 - - -1. Introduction - - PXE, the Preboot eXecution Environment, is a first-stage network - bootstrap agent. PXE is loaded out of firmware on the client host, - and performs DHCP [3] queries to obtain an IP address. - - Once on the network, it loads a second-stage bootstrap agent as - configured by DHCP header and option contents. - - PXELINUX is one such second-stage bootstrap agent. Once PXE has - passed execution to it, PXELINUX seeks its configuration from a cache - of DHCP options supplied to the PXE first-stage agent, and then takes - action based upon those options. - - Most frequently, this implies loading via Trivial File Transfer - Protocol (TFTP) [6] one or more images that are decompressed into - memory, then executed to pass execution to the final Host Operating - System. - - PXELINUX uses DHCP options 208-211 to govern parts of this bootstrap - process, but these options are not requested by the PXE DHCP client - at the time it acquires its lease. At that time, the PXE bootloader - has no knowledge that PXELINUX is going to be in use, and even so, - would have no way to know what option(s) PXELINUX might digest. - Local installations that serve this PXELINUX image to its clients - must also configure their DHCP servers to provide these options even - though they are not on the DHCP Parameter Request List [4]. - - These options are: - - o "MAGIC" - 208 - An option whose presence and content verifies to - the PXELINUX bootloader that the options numbered 209-211 are for - the purpose as described herein. - - o "ConfigFile" - 209 - Configures the path/filename component of the - configuration file's location, which this bootloader should use to - configure itself. - - o "PathPrefix" - 210 - Configures a value to be prepended to the - ConfigFile to discern the directory location of the file. - - o "RebootTime" - 211 - Configures a timeout after which the - bootstrap program will reboot the system (most likely returning it - to PXE). - - Historically, these option codes numbering from 208-211 were - designated 'Site Local', but after publication of RFC3942 [8], they - were made available for allocation as new standard DHCP options. - - - -Hankins Informational [Page 3] - -RFC 5071 PXELINUX Options December 2007 - - - This document marks these codes as assigned. - - This direct assignment of option code values in the option - definitions below is unusual as it is not mentioned in DHCP Option - Code assignment guidelines [5]. This document's Option Code - assignments are done within RFC 3942's provisions for documenting - prior use of option codes within the new range (128-223 inclusive). - -2. Terminology - - o "first-stage bootloader" - Although a given bootloading order may - have many stages, such as where a BIOS boots a DOS Boot Disk, - which then loads a PXE executable, it is, in this example, only - the PXE executable that this document describes as the "first- - stage bootloader" -- in essence, this is the first stage of - booting at which DHCP is involved. - - o "second-stage bootloader" - This describes a program loaded by the - first-stage bootloader at the behest of the DHCP server. - - o "bootloader" and "network bootstrap agent" - These are synonyms, - excepting that "bootloader" is intentionally vague in that its - next form of bootstrapping may not in fact involve network - resources. - - The key words "MAY", "MUST", "MUST NOT", "SHOULD", and "SHOULD NOT" - in this document are to be interpreted as described in RFC 2119 [2]. - -3. MAGIC Option - -3.1. Description - - If this option is provided to the PXE bootloader, then the value is - checked by PXELINUX to match the octet string f1:00:74:7e. If this - matches, then PXELINUX bootloaders will also consume options 209-211, - as described below. Otherwise, they are ignored. - - This measure was intended to ensure that, as the 'Site Local' option - space is not allocated from a central authority, no conflict would - result in a PXELINUX bootloader improperly digesting options intended - for another purpose. - - - - - - - - - - -Hankins Informational [Page 4] - -RFC 5071 PXELINUX Options December 2007 - - -3.2. Packet Format - - The MAGIC Option format is as follows: - - Code Length m1 m2 m3 m4 - +--------+--------+--------+--------+--------+--------+ - | 208 | 4 | 0xF1 | 0x00 | 0x74 | 0x7E | - +--------+--------+--------+--------+--------+--------+ - - The code for this option is 208. The length is always four. - -3.3. Applicability - - This option is absolutely inapplicable to any other purpose. - -3.4. Response to RFC 3942 - - The option code 208 will be adopted for this purpose and immediately - deprecated. Future standards action may return this option to an - available status should it be necessary. - - A collision of the use of this option is harmless (at least from - PXELINUX' point of view) by design: if it does not match the - aforementioned magic value, the PXELINUX bootloader will take no - special action. - - The PXELINUX project will deprecate the use of this option; future - versions of the software will not evaluate its contents. - - It is reasonable to utilize this option code for another purpose, but - it is recommended to do this at a later time, given the desire to - avoid potential collisions in legacy user bases. - -4. Configuration File Option - -4.1. Description - - Once the PXELINUX executable has been entered from the PXE - bootloader, it evaluates this option and loads a file of that name - via TFTP. The contents of this file serve to configure PXELINUX in - its next stage of bootloading (specifying boot image names, - locations, boot-time flags, text to present the user in menu - selections, etc). - - In the absence of this option, the PXELINUX agent will search the - TFTP server (as determined by PXE prior to this stage) for a config - file of several default names. - - - - -Hankins Informational [Page 5] - -RFC 5071 PXELINUX Options December 2007 - - -4.2. Packet Format - - The Configuration File Option format is as follows: - - Code Length Config-file... - +--------+--------+--------+--------+--------+--------+ - | 209 | n | c1 | c2 | ... | c(n) | - +--------+--------+--------+--------+--------+--------+ - - The code for this option is 209. The Config-file (c1..c(n)) is an - NVT-ASCII [1] printable string; it is not terminated by a zero or any - other value. - -4.3. Applicability - - Any bootloader, PXE or otherwise, that makes use of a separate - configuration file rather than containing all configurations within - DHCP options (which may be impossible due to the limited space - available for DHCP options) may conceivably make use of this option. - -4.4. Response to RFC 3942 - - The code 209 will be adopted for this purpose. - -4.5. Client and Server Behaviour - - The Config File Option MUST be supplied by the DHCP server if it - appears on the Parameter Request List, but MUST also be supplied if - the server administrator believed it would later be useful to the - client (such as because the server is configured to offer a second- - stage boot image, which they know will make use of it). The option - MUST NOT be supplied if no value has been configured for it, or if a - value of zero length has been configured. - - The DHCP client MUST only cache this option in a location the second- - stage bootloader may access. - - The second-stage bootloader MUST, in concert with other DHCP options - and fields, use this option's value as a filename to be loaded via - TFTP and read for further second-stage-loader-specific configuration - parameters. The format and content of such a file is specific to the - second-stage bootloader, and as such, is out of scope of this - document. - - - - - - - - -Hankins Informational [Page 6] - -RFC 5071 PXELINUX Options December 2007 - - -5. Path Prefix Option - -5.1. Description - - In PXELINUX' case, it is often the case that several different - environments would have the same TFTP path prefix, but would have - different filenames (for example: hosts' bootloader images and config - files may be kept in a directory structure derived from their Media - Access Control (MAC) address). Consequently, it was deemed - worthwhile to deliver a TFTP path prefix configuration option, so - that these two things could be configured separately in a DHCP Server - configuration: the prefix and the possibly host-specific file - location. - - The actual filename that PXELINUX requests from its TFTP server is - derived by prepending this value to the Config File Option above. - Once this config file is loaded and during processing, any TFTP file - paths specified within it are similarly processed -- prepending the - contents of this option. - -5.2. Packet Format - - The Path Prefix Option format is as follows: - - Code Length Path-Prefix... - +--------+--------+--------+--------+--------+--------+ - | 210 | n | p1 | p2 | ... | p(n) | - +--------+--------+--------+--------+--------+--------+ - - The code for this option is 210. The Path Prefix is an NVT-ASCII - printable string; it is not terminated by zero or any other value. - -5.3. Applicability - - This option came into existence because server administrators found - it useful to configure the prefix and suffix of the config file path - separately. A group of different PXE booting clients may use the - same path prefix, but different filenames, or vice versa. - - The 'shortcut' this represents is worthwhile, but it is questionable - whether that needs to manifest itself on the protocol wire. - - - - - - - - - - -Hankins Informational [Page 7] - -RFC 5071 PXELINUX Options December 2007 - - - It only becomes interesting from a protocol standpoint if other - options are adopted that prefix this value as well -- performing a - kind of string compression is highly beneficial to the limited - available DHCP option space. - - But it's clearly inapplicable to any current use of, e.g., the - FILENAME header contents or the DHCP Boot File Name option (#67). - Use of these fields is encoded on firmware of thousands of devices - that can't or are not likely to be upgraded. Altering any behaviour - here is likely to cause severe compatibility problems. - - Although compression of the TFTP-loaded configuration file contents - is not a compelling factor, contrived configurations using these - values may also exist: where each of a large variety of different - clients load the same configuration file, with the same contents, but - due to a differently configured path prefix actually load different - images. Whether this sort of use is truly needed remains unproven. - -5.4. Response to RFC 3942 - - The code 210 will be adopted for this purpose. - -5.5. Client and Server Behaviour - - The Path Prefix option MUST be supplied by the DHCP server if it - appears on the Parameter Request List, but MUST also be supplied if - the server administrator believed it would later be useful to the - client (such as because the server is configured to offer a second- - stage boot image that they know will make use of it). The option - MUST NOT be supplied if no value has been configured for it, or if a - value of zero length has been configured. - - The DHCP client MUST only cache this option in a location where the - second-stage bootloader may access it. - - The second-stage bootloader MUST prepend this option's value, if any, - to the contents of the ConfigFile option prior to obtaining the - resulting value via TFTP, or the default 'Config File Search Path', - which the second-stage bootloader iterates in the absence of a Config - File Option. The client MAY prepend the value to other configuration - directives within that file once it has been loaded. The client MUST - NOT prepend this option's value to any other DHCP option contents or - field, unless explicitly stated in a document describing that option - or field. - - - - - - - -Hankins Informational [Page 8] - -RFC 5071 PXELINUX Options December 2007 - - -6. Reboot Time Option - -6.1. Description - - Should PXELINUX be executed, and then for some reason, be unable to - reach its TFTP server to continue bootstrapping, the client will, by - default, reboot itself after 300 seconds have passed. This may be - too long, too short, or inappropriate behaviour entirely, depending - on the environment. - - By configuring a non-zero value in this option, admins can inform - PXELINUX of which specific timeout is desired. The client will - reboot itself if it fails to achieve its configured network resources - within the specified number of seconds. - - This reboot will run through the system's normal boot-time execution - path, most likely leading it back to PXE and therefore PXELINUX. So, - in the general case, this is akin to returning the client to the DHCP - INIT state. - - By configuring zero, the feature is disabled, and instead the client - chooses to remove itself from the network and wait indefinitely for - operator intervention. - - It should be stressed that this is in no way related to configuring a - lease time. The perceived transition to INIT state is due to client - running state -- reinitializing itself -- not due to lease timer - activity. That is, it is not safe to assume that a PXELINUX client - will abandon its lease when this timer expires. - -6.2. Packet Format - - The Reboot Time Option format is as follows: - - Code Length - +--------+--------+--------+--------+--------+--------+ - | 211 | 4 | Reboot Time | - +--------+--------+--------+--------+--------+--------+ - - The code for this option is 211. The length is always four. The - Reboot Time is a 32-bit (4 byte) integer in network byte order. - - - - - - - - - - -Hankins Informational [Page 9] - -RFC 5071 PXELINUX Options December 2007 - - -6.3. Applicability - - Any network bootstrap program in any sufficiently complex networking - environment could conceivably enter into such a similar condition, - either due to having its IP address stolen out from under it by a - rogue client on the network, by being moved between networks where - its PXE-derived DHCP lease is no longer valid, or any similar means. - - It seems desirable for any network bootstrap agent to implement an - ultimate timeout for it to start over. - - The client may, for example, get different working configuration - parameters from a different DHCP server upon restarting. - -6.4. Response to RFC 3942 - - The code 211 will be adopted for this purpose. - -6.5. Client and Server Behaviour - - The Reboot Time Option MUST be supplied by the DHCP server if it - appears on the Parameter Request List, but MUST also be supplied if - the server administrator believed it would later be useful to the - client (such as because the server is configured to offer a second- - stage boot image that they know will make use of it). The option - MUST NOT be supplied if no value has been configured for it, or if it - contains a value of zero length. - - The DHCP client MUST only cache this option in a location the second- - stage bootloader may access. - - If the value of this option is nonzero, the second-stage bootloader - MUST schedule a timeout: after a number of seconds equal to this - option's value have passed, the second-stage bootloader MUST reboot - the system, ultimately returning the path of execution back to the - first-stage bootloader. It MUST NOT reboot the system once the - thread of execution has been passed to the host operating system (at - which point, this timeout is effectively obviated). - - If the value of this option is zero, the second-stage bootloader MUST - NOT schedule such a timeout at all. Any second-stage bootloader that - finds it has encountered excessive timeouts attempting to obtain its - host operating system SHOULD disconnect itself from the network to - wait for operator intervention, but MAY continue to attempt to - acquire the host operating system indefinitely. - - - - - - -Hankins Informational [Page 10] - -RFC 5071 PXELINUX Options December 2007 - - -7. Specification Conformance - - To conform to this specification, clients and servers MUST implement - the Configuration File, Path Prefix, and Reboot Time options as - directed. - - The MAGIC option MAY NOT be implemented, as it has been deprecated. - -8. Security Considerations - - PXE and PXELINUX allow any entity acting as a DHCP server to execute - arbitrary code upon a system. At present, no PXE implementation is - known to implement authentication mechanisms [7] so that PXE clients - can be sure they are receiving configuration information from the - correct, authoritative DHCP server. - - The use of TFTP by PXE and PXELINUX also lacks any form of - cryptographic signature -- so a 'Man in the Middle' attack may lead - to an attacker's code being executed on the client system. Since - this is not an encrypted channel, any of the TFTP loaded data may - also be exposed (such as in loading a "RAMDISK" image, which contains - /etc/passwd or similar information). - - The use of the Ethernet MAC Address as the client's unique identity - may allow an attacker who takes on that identity to gain - inappropriate access to a client system's network resources by being - given by the DHCP server whatever 'keys' are required, in fact, to be - the target system (to boot up as though it were the target). - - Great care should be taken to secure PXE and PXELINUX installations, - such as by using IP firewalls, to reduce or eliminate these concerns. - - A nearby attacker might feed a "Reboot Time" option value of 1 second - to a mass of unsuspecting clients, to effect a Denial Of Service - (DoS) upon the DHCP server, but then again it may just as easily - supply these clients with rogue second-stage bootloaders that simply - transmit a flood of packets. - - This document in and by itself provides no security, nor does it - impact existing DCHP security as described in RFC 2131 [3]. - -9. IANA Considerations - - IANA has done the following: - - 1. Moved DHCPv4 Option code 208 from 'Tentatively Assigned' to - 'Assigned', referencing this document. IANA has marked this same - option code, 208, as Deprecated. - - - -Hankins Informational [Page 11] - -RFC 5071 PXELINUX Options December 2007 - - - 2. Moved DHCPv4 Option code 209 from 'Tentatively Assigned' to - 'Assigned', referencing this document. - - 3. Moved DHCPv4 Option code 210 from 'Tentatively Assigned' to - 'Assigned', referencing this document. - - 4. Moved DHCPv4 Option code 211 from 'Tentatively Assigned' to - 'Assigned', referencing this document. - -10. Acknowledgements - - These options were designed and implemented for the PXELINUX project - by H. Peter Anvin, and he was instrumental in producing this - document. Shane Kerr has also provided feedback that has improved - this document. - -11. References - -11.1. Normative References - - [1] Postel, J. and J. Reynolds, "Telnet Protocol Specification", - STD 8, RFC 854, May 1983. - - [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement - Levels", BCP 14, RFC 2119, March 1997. - - [3] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, - March 1997. - - [4] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor - Extensions", RFC 2132, March 1997. - - [5] Droms, R., "Procedures and IANA Guidelines for Definition of New - DHCP Options and Message Types", BCP 43, RFC 2939, - September 2000. - -11.2. Informative References - - [6] Sollins, K., "The TFTP Protocol (Revision 2)", STD 33, RFC 1350, - July 1992. - - [7] Droms, R. and W. Arbaugh, "Authentication for DHCP Messages", - RFC 3118, June 2001. - - [8] Volz, B., "Reclassifying Dynamic Host Configuration Protocol - version 4 (DHCPv4) Options", RFC 3942, November 2004. - - - - - -Hankins Informational [Page 12] - -RFC 5071 PXELINUX Options December 2007 - - -Author's Address - - David W. Hankins - Internet Systems Consortium, Inc. - 950 Charter Street - Redwood City, CA 94063 - US - - Phone: +1 650 423 1307 - EMail: David_Hankins@isc.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Hankins Informational [Page 13] - -RFC 5071 PXELINUX Options December 2007 - - -Full Copyright Statement - - Copyright (C) The IETF Trust (2007). - - This document is subject to the rights, licenses and restrictions - contained in BCP 78, and except as set forth therein, the authors - retain all their rights. - - This document and the information contained herein are provided on an - "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS - OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND - THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -Intellectual Property - - The IETF takes no position regarding the validity or scope of any - Intellectual Property Rights or other rights that might be claimed to - pertain to the implementation or use of the technology described in - this document or the extent to which any license under such rights - might or might not be available; nor does it represent that it has - made any independent effort to identify any such rights. Information - on the procedures with respect to rights in RFC documents can be - found in BCP 78 and BCP 79. - - Copies of IPR disclosures made to the IETF Secretariat and any - assurances of licenses to be made available, or the result of an - attempt made to obtain a general license or permission for the use of - such proprietary rights by implementers or users of this - specification can be obtained from the IETF on-line IPR repository at - http://www.ietf.org/ipr. - - The IETF invites any interested party to bring to its attention any - copyrights, patents or patent applications, or other proprietary - rights that may cover technology that may be required to implement - this standard. Please address the information to the IETF at - ietf-ipr@ietf.org. - - - - - - - - - - - - -Hankins Informational [Page 14] - diff --git a/config/release/3rdparty/syslinux/doc/sdi.txt b/config/release/3rdparty/syslinux/doc/sdi.txt deleted file mode 100644 index cf9b73f4c2..0000000000 --- a/config/release/3rdparty/syslinux/doc/sdi.txt +++ /dev/null @@ -1,149 +0,0 @@ - SDI files - - -Syslinux supports 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. diff --git a/config/release/3rdparty/syslinux/doc/syslinux.txt b/config/release/3rdparty/syslinux/doc/syslinux.txt deleted file mode 100644 index 07d5df9ab9..0000000000 --- a/config/release/3rdparty/syslinux/doc/syslinux.txt +++ /dev/null @@ -1,790 +0,0 @@ - The Syslinux Project - - A suite of bootloaders for Linux - - Copyright 1994-2011 H. Peter Anvin and contributors - -This program is provided under the terms of the GNU General Public -License, version 2 or, at your option, any later version. There is no -warranty, neither expressed nor implied, to the function of this -program. Please see the included file COPYING for details. - ----------------------------------------------------------------------- - - Syslinux now has a home page at http://syslinux.zytor.com/ - ----------------------------------------------------------------------- - -The Syslinux suite contains the following boot loaders -("derivatives"), for their respective boot media: - - SYSLINUX - MS-DOS/Windows FAT filesystem - PXELINUX - PXE network booting - ISOLINUX - ISO9660 CD-ROM - EXTLINUX - Linux ext2/ext3 filesystem - -For historical reasons, some of the sections in this document applies -to the FAT loader (SYSLINUX) only; see pxelinux.txt, isolinux.txt and -extlinux.txt for what differs in these versions. The all-caps term -"SYSLINUX" generally refers to the FAT loader, whereas "Syslinux" -refers to the project as a whole. - -Help with cleaning up the docs would be greatly appreciated. - - - ++++ Options ++++ - -These are the options common to all versions of Syslinux: - - -s Safe, slow, stupid; uses simpler code that boots better - -f Force installing - -r Raid mode. If boot fails, tell the BIOS to boot the next - device in the boot sequence (usually the next hard disk) - instead of stopping with an error message. - This is useful for RAID-1 booting. - -These are only in the Windows version: - - -m Mbr; install a bootable MBR sector to the beginning of the - drive. - -a Active; marks the partition used active (=bootable) - - - ++++ CREATING A BOOTABLE LINUX FLOPPY +++ - -In order to create a bootable Linux floppy using SYSLINUX, prepare a -normal MS-DOS formatted floppy. Copy one or more Linux kernel files to -it, then execute the DOS command: - - syslinux [-sfrma][-d directory] a: [bootsecfile] - -(or whichever drive letter is appropriate; the [] meaning optional.) - -Use "syslinux.com" (in the dos subdirectory of the distribution) for -plain DOS (MS-DOS, DR-DOS, PC-DOS, FreeDOS...) or Win9x/ME. - -Use "syslinux.exe" (in the win32 subdirectory of the distribution) for -WinNT/2000/XP. - -Under Linux, execute the command: - - syslinux [-sfr][-d directory][-o offset] /dev/fd0 - -(or, again, whichever device is the correct one.) - -This will alter the boot sector on the disk and copy a file named -LDLINUX.SYS into its root directory (or a subdirectory, if the -d -option is specified.) - -The -s option, if given, will install a "safe, slow and stupid" -version of SYSLINUX. This version may work on some very buggy BIOSes -on which SYSLINUX would otherwise fail. If you find a machine on -which the -s option is required to make it boot reliably, please send -as much info about your machine as you can, and include the failure -mode. - -The -o option is used with a disk image file and specifies the byte -offset of the filesystem image in the file. - -For the DOS and Windows installers, the -m and -a options can be used -on hard drives to write a Master Boot Record (MBR), and to mark the -specific partition active. - -If the Shift or Alt keys are held down during boot, or the Caps or Scroll -locks are set, Syslinux will display a LILO-style "boot:" prompt. The -user can then type a kernel file name followed by any kernel parameters. -The Syslinux loader does not need to know about the kernel file in -advance; all that is required is that it is a file located in the root -directory on the disk. - -There are two versions of the Linux installer; one in the "mtools" -directory which requires no special privilege (other than write -permission to the device where you are installing) but requires the -mtools program suite to be available, and one in the "unix" directory -which requires root privilege. - - - ++++ CONFIGURATION FILE ++++ - -All options here apply to PXELINUX, ISOLINUX and EXTLINUX as well as -SYSLINUX unless otherwise noted. See the respective .txt files. - -All the configurable defaults in SYSLINUX can be changed by putting a -file called "syslinux.cfg" in the root directory of the boot disk. - -Starting with version 3.35, the configuration file can also be in -either the /boot/syslinux or /syslinux directories (searched in that -order.) If that is the case, then all filenames are assumed to be -relative to that same directory, unless preceded with a slash or -backslash. - -The configuration file is a text file in either UNIX or DOS format, -containing one or more of the following items, each on its own line with -optional leading whitespace. Case is insensitive for keywords; upper -case is used here to indicate that a word should be typed verbatim. - -#comment - A comment line. - -INCLUDE filename - Inserts the contents of another file at this point in the - configuration file. Files can currently be nested up to 16 - levels deep, but it is not guaranteed that more than 8 levels - will be supported in the future. - -DEFAULT kernel options... - Sets the default command line. If Syslinux boots automatically, - it will act just as if the entries after DEFAULT had been typed - in at the "boot:" prompt. - - If no configuration file is present, or no DEFAULT entry is - present in the config file, an error message is displayed and - the boot: prompt is shown. - -UI module options... - Selects a specific user interface module (typically menu.c32 - or vesamenu.c32). The command-line interface treats this as a - directive that overrides the DEFAULT and PROMPT directives. - -APPEND options... - Add one or more options to the kernel command line. These are - added both for automatic and manual boots. The options are - added at the very beginning of the kernel command line, - usually permitting explicitly entered kernel options to override - them. This is the equivalent of the LILO "append" option. - -IPAPPEND flag_val [PXELINUX only] - The IPAPPEND option is available only on PXELINUX. The - flag_val is an OR of the following options: - - 1: indicates that an option of the following format - should be generated and added to the kernel command line: - - ip=::: - - ... based on the input from the DHCP/BOOTP or PXE boot server. - - NOTE: The use of this option is no substitute for running a - DHCP client in the booted system. Without regular renewals, - the lease acquired by the PXE BIOS will expire, making the - IP address available for reuse by the DHCP server. - - 2: indicates that an option of the following format - should be generated and added to the kernel command line: - - BOOTIF= - - ... in dash-separated hexadecimal with leading hardware type - (same as for the configuration file; see pxelinux.txt.) - - This allows an initrd program to determine from which - interface the system booted. - - 4: indicates that an option of the following format - should be generated and added to the kernel command line: - - SYSUUID= - - ... in lower case hexadecimal in the format normally used for - UUIDs (same as for the configuration file; see pxelinux.txt.) - -LABEL label - KERNEL image - APPEND options... - IPAPPEND flag_val [PXELINUX only] - Indicates that if "label" is entered as the kernel to boot, - Syslinux should instead boot "image", and the specified APPEND - and IPAPPEND options should be used instead of the ones - specified in the global section of the file (before the first - LABEL command.) The default for "image" is the same as - "label", and if no APPEND is given the default is to use the - global entry (if any). - - Starting with version 3.62, the number of LABEL statements is - virtually unlimited. - - Note that LILO uses the syntax: - image = mykernel - label = mylabel - append = "myoptions" - - ... whereas Syslinux uses the syntax: - label mylabel - kernel mykernel - append myoptions - - Note: The "kernel" doesn't have to be a Linux kernel; it can - be a boot sector or a COMBOOT file (see below.) - - Since version 3.32 label names are no longer mangled into DOS - format (for SYSLINUX.) - - The following commands are available after a LABEL statement: - - LINUX image - Linux kernel image (default) - BOOT image - Bootstrap program (.bs, .bin) - BSS image - BSS image (.bss) - PXE image - PXE Network Bootstrap Program (.0) - FDIMAGE image - Floppy disk image (.img) - COMBOOT image - COMBOOT program (.com, .cbt) - COM32 image - COM32 program (.c32) - CONFIG image - New configuration file - Using one of these keywords instead of KERNEL forces the - filetype, regardless of the filename. - - CONFIG means restart the boot loader using a different - configuration file. The configuration file is read, the - working directory is changed (if specified via an APPEND), then - the configuration file is parsed. - - APPEND - - Append nothing. APPEND with a single hyphen as argument in a - LABEL section can be used to override a global APPEND. - - LOCALBOOT type - Attempt a different local boot method. The special value -1 - causes the boot loader to report failure to the BIOS, which, on - recent BIOSes, should mean that the next boot device in the - boot sequence should be activated. Values other than those - documented may produce undesired results. - - On PXELINUX, "type" 0 means perform a normal boot. "type" 4 - will perform a local boot with the Universal Network Driver - Interface (UNDI) driver still resident in memory. Finally, - "type" 5 will perform a local boot with the entire PXE - stack, including the UNDI driver, still resident in memory. - All other values are undefined. If you don't know what the - UNDI or PXE stacks are, don't worry -- you don't want them, - just specify 0. - - On ISOLINUX, the "type" specifies the local drive number to - boot from; 0x00 is the primary floppy drive and 0x80 is the - primary hard drive. - - INITRD initrd_file - Starting with version 3.71, an initrd can be specified in a - separate statement (INITRD) instead of as part of the APPEND - statement; this functionally appends "initrd=initrd_file" to - the kernel command line. - - It supports multiple filenames separated by commas. - This is mostly useful for initramfs, which can be composed of - multiple separate cpio or cpio.gz archives. - Note: all files except the last one are zero-padded to a - 4K page boundary. This should not affect initramfs. - -IMPLICIT flag_val - If flag_val is 0, do not load a kernel image unless it has been - explicitly named in a LABEL statement. The default is 1. - -ALLOWOPTIONS flag_val - If flag_val is 0, the user is not allowed to specify any - arguments on the kernel command line. The only options - recognized are those specified in an APPEND statement. The - default is 1. - -TIMEOUT timeout - Indicates how long to wait at the boot: prompt until booting - automatically, in units of 1/10 s. The timeout is cancelled as - soon as the user types anything on the keyboard, the assumption - being that the user will complete the command line already - begun. A timeout of zero will disable the timeout completely, - this is also the default. - -TOTALTIMEOUT timeout - Indicates how long to wait until booting automatically, in - units of 1/10 s. This timeout is *not* cancelled by user - input, and can thus be used to deal with serial port glitches - or "the user walked away" type situations. A timeout of zero - will disable the timeout completely, this is also the default. - - Both TIMEOUT and TOTALTIMEOUT can be used together, for - example: - - # Wait 5 seconds unless the user types something, but - # always boot after 15 minutes. - TIMEOUT 50 - TOTALTIMEOUT 9000 - -ONTIMEOUT kernel options... - Sets the command line invoked on a timeout. Normally this is - the same thing as invoked by "DEFAULT". If this is specified, - then "DEFAULT" is used only if the user presses to - boot. - -ONERROR kernel options... - If a kernel image is not found (either due to it not existing, - or because IMPLICIT is set), run the specified command. The - faulty command line is appended to the specified options, so - if the ONERROR directive reads as: - - ONERROR xyzzy plugh - - ... and the command line as entered by the user is: - - foo bar baz - - ... Syslinux will execute the following as if entered by the - user: - - xyzzy plugh foo bar baz - -SERIAL port [[baudrate] flowcontrol] - Enables a serial port to act as the console. "port" is a - number (0 = /dev/ttyS0 = COM1, etc.) or an I/O port address - (e.g. 0x3F8); if "baudrate" is omitted, the baud rate defaults - to 9600 bps. The serial parameters are hardcoded to be 8 - bits, no parity, 1 stop bit. - - "flowcontrol" is a combination of the following bits: - 0x001 - Assert DTR - 0x002 - Assert RTS - 0x008 - Enable interrupts - 0x010 - Wait for CTS assertion - 0x020 - Wait for DSR assertion - 0x040 - Wait for RI assertion - 0x080 - Wait for DCD assertion - 0x100 - Ignore input unless CTS asserted - 0x200 - Ignore input unless DSR asserted - 0x400 - Ignore input unless RI asserted - 0x800 - Ignore input unless DCD asserted - - All other bits are reserved. - - Typical values are: - - 0 - No flow control (default) - 0x303 - Null modem cable detect - 0x013 - RTS/CTS flow control - 0x813 - RTS/CTS flow control, modem input - 0x023 - DTR/DSR flow control - 0x083 - DTR/DCD flow control - - For the SERIAL directive to be guaranteed to work properly, it - should be the first directive in the configuration file. - - NOTE: "port" values from 0 to 3 means the first four serial - ports detected by the BIOS. They may or may not correspond to - the legacy port values 0x3F8, 0x2F8, 0x3E8, 0x2E8. - - Enabling interrupts (setting the 0x008 bit) may give better - responsiveness without setting the NOHALT option, but could - potentially cause problems with buggy BIOSes. - -NOHALT flag_val - If flag_val is 1, don't halt the processor while idle. - Halting the processor while idle significantly reduces the - power consumption, but can cause poor responsiveness to the - serial console, especially when using scripts to drive the - serial console, as opposed to human interaction. - -CONSOLE flag_val - If flag_val is 0, disable output to the normal video console. - If flag_val is 1, enable output to the video console (this is - the default.) - - Some BIOSes try to forward this to the serial console and - sometimes make a total mess thereof, so this option lets you - disable the video console on these systems. - -FONT filename - Load a font in .psf format before displaying any output - (except the copyright line, which is output as ldlinux.sys - itself is loaded.) Syslinux only loads the font onto the - video card; if the .psf file contains a Unicode table it is - ignored. This only works on EGA and VGA cards; hopefully it - should do nothing on others. - -KBDMAP keymap - Install a simple keyboard map. The keyboard remapper used is - *very* simplistic (it simply remaps the keycodes received from - the BIOS, which means that only the key combinations relevant - in the default layout -- usually U.S. English -- can be - mapped) but should at least help people with AZERTY keyboard - layout and the locations of = and , (two special characters - used heavily on the Linux kernel command line.) - - The included program keytab-lilo.pl from the LILO distribution - can be used to create such keymaps. The file keytab-lilo.txt - contains the documentation for this program. - -DISPLAY filename - Displays the indicated file on the screen at boot time (before - the boot: prompt, if displayed). Please see the section below - on DISPLAY files. - - NOTE: If the file is missing, this option is simply ignored. - -SAY message - Prints the message on the screen. - -PROMPT flag_val - If flag_val is 0, display the boot: prompt only if the Shift or Alt - key is pressed, or Caps Lock or Scroll lock is set (this is the - default). If flag_val is 1, always display the boot: prompt. - -NOESCAPE flag_val - If flag_val is set to 1, ignore the Shift/Alt/Caps Lock/Scroll - Lock escapes. Use this (together with PROMPT 0) to force the - default boot alternative. - -NOCOMPLETE flag_val - If flag_val is set to 1, the Tab key does not display labels - at the boot: prompt. - -F1 filename -F2 filename - ...etc... -F9 filename -F10 filename -F11 filename -F12 filename - Displays the indicated file on the screen when a function key is - pressed at the boot: prompt. This can be used to implement - pre-boot online help (presumably for the kernel command line - options.) Please see the section below on DISPLAY files. - - When using the serial console, press to get to - the help screens, e.g. <2> to get to the F2 screen. - For F10-F12, hit , B, C. For - compatibility with earlier versions, F10 can also be entered as - 0. - -Blank lines are ignored. - -Note that the configuration file is not completely decoded. Syntax -different from the one described above may still work correctly in this -version of Syslinux, but may break in a future one. - - - ++++ DISPLAY FILE FORMAT ++++ - -DISPLAY and function-key help files are text files in either DOS or UNIX -format (with or without ). In addition, the following special codes -are interpreted: - - = = ASCII 12 - Clear the screen, home the cursor. Note that the screen is - filled with the current display color. - - = = ASCII 15 - Set the display colors to the specified background and - foreground colors, where and are hex digits, - corresponding to the standard PC display attributes: - - 0 = black 8 = dark grey - 1 = dark blue 9 = bright blue - 2 = dark green a = bright green - 3 = dark cyan b = bright cyan - 4 = dark red c = bright red - 5 = dark purple d = bright purple - 6 = brown e = yellow - 7 = light grey f = white - - Picking a bright color (8-f) for the background results in the - corresponding dark color (0-7), with the foreground flashing. - - Colors are not visible over the serial console. - -filename = = ASCII 24 - If a VGA display is present, enter graphics mode and display - the graphic included in the specified file. The file format - is an ad hoc format called LSS16; the included Perl program - "ppmtolss16" can be used to produce these images. This Perl - program also includes the file format specification. - - The image is displayed in 640x480 16-color mode. Once in - graphics mode, the display attributes (set by code - sequences) work slightly differently: the background color is - ignored, and the foreground colors are the 16 colors specified - in the image file. For that reason, ppmtolss16 allows you to - specify that certain colors should be assigned to specific - color indicies. - - Color indicies 0 and 7, in particular, should be chosen with - care: 0 is the background color, and 7 is the color used for - the text printed by Syslinux itself. - - = = ASCII 25 - If we are currently in graphics mode, return to text mode. - -.. .. = ASCII 16-23 - These codes can be used to select which modes to print a - certain part of the message file in. Each of these control - characters select a specific set of modes (text screen, - graphics screen, serial port) for which the output is actually - displayed: - - Character Text Graph Serial - ------------------------------------------------------ - = = ASCII 16 No No No - = = ASCII 17 Yes No No - = = ASCII 18 No Yes No - = = ASCII 19 Yes Yes No - = = ASCII 20 No No Yes - = = ASCII 21 Yes No Yes - = = ASCII 22 No Yes Yes - = = ASCII 23 Yes Yes Yes - - For example: - - Text modeGraphics modeSerial port - - ... will actually print out which mode the console is in! - - = = ASCII 26 - End of file (DOS convention). - - = = ASCII 7 - Beep the speaker. - - - ++++ COMMAND LINE KEYSTROKES ++++ - -The command line prompt supports the following keystrokes: - - boot specified command line - erase one character - erase the whole line - display the current Syslinux version - erase one word - force text mode - list matching labels -.. help screens (if configured) - equivalent to F1..F10 - interrupt boot in progress - interrupt boot in progress - display network information (PXELINUX only) - - - ++++ COMBOOT IMAGES AND OTHER OPERATING SYSTEMS ++++ - -This version of Syslinux supports chain loading of other operating -systems (such as MS-DOS and its derivatives, including Windows 95/98), -as well as COMBOOT-style standalone executables (a subset of DOS .COM -files; see separate section below.) - -Chain loading requires the boot sector of the foreign operating system -to be stored in a file in the root directory of the filesystem. -Because neither Linux kernels, boot sector images, nor COMBOOT files -have reliable magic numbers, Syslinux will look at the file extension. -The following extensions are recognized (case insensitive): - - none or other Linux kernel image - .0 PXE bootstrap program (NBP) [PXELINUX only] - .bin "CD boot sector" [ISOLINUX only] - .bs Boot sector [SYSLINUX only] - .bss Boot sector, DOS superblock will be patched in [SYSLINUX only] - .c32 COM32 image (32-bit COMBOOT) - .cbt COMBOOT image (not runnable from DOS) - .com COMBOOT image (runnable from DOS) - .img Disk image [ISOLINUX only] - -For filenames given on the command line, Syslinux will search for the -file by adding extensions in the order listed above if the plain -filename is not found. Filenames in KERNEL statements must be fully -qualified. - -If this is specified with one of the keywords LINUX, BOOT, BSS, -FDIMAGE, COMBOOT, COM32, or CONFIG instead of KERNEL, the filetype is -considered to be the one specified regardless of the filename. - - - ++++ BOOTING DOS (OR OTHER SIMILAR OPERATING SYSTEMS) ++++ - -This section applies to SYSLINUX only, not to PXELINUX or ISOLINUX. -See isolinux.txt for an equivalent procedure for ISOLINUX. - -This is the recommended procedure for creating a SYSLINUX disk that -can boot either DOS or Linux. This example assumes the drive is A: in -DOS and /dev/fd0 in Linux; for other drives, substitute the -appropriate drive designator. - - ---- Linux procedure ---- - -1. Make a DOS bootable disk. This can be done either by specifying - the /s option when formatting the disk in DOS, or by running the - DOS command SYS (this can be done under DOSEMU if DOSEMU has - direct device access to the relevant drive): - - format a: /s - or - sys a: - -2. Boot Linux. Copy the DOS boot sector from the disk into a file: - - dd if=/dev/fd0 of=dos.bss bs=512 count=1 - -3. Run SYSLINUX on the disk: - - syslinux /dev/fd0 - -4. Mount the disk and copy the DOS boot sector file to it. The file - *must* have extension .bss: - - mount -t msdos /dev/fd0 /mnt - cp dos.bss /mnt - -5. Copy the Linux kernel image(s), initrd(s), etc to the disk, and - create/edit syslinux.cfg and help files if desired: - - cp vmlinux /mnt - cp initrd.gz /mnt - -6. Unmount the disk (if applicable.) - - umount /mnt - - ---- DOS/Windows procedure ---- - -To make this installation in DOS only, you need the utility copybs.com -(included with Syslinux) as well as the syslinux.com installer. If -you are on an WinNT-based system (WinNT, Win2k, WinXP or later), use -syslinux.exe instead. - -1. Make a DOS bootable disk. This can be done either by specifying - the /s option when formatting the disk in DOS, or by running the - DOS command SYS: - - format a: /s - or - sys a: - -2. Copy the DOS boot sector from the disk into a file. The file - *must* have extension .bss: - - copybs a: a:dos.bss - -3. Run SYSLINUX on the disk: - - syslinux a: - -4. Copy the Linux kernel image(s), initrd(s), etc to the disk, and - create/edit syslinux.cfg and help files if desired: - - copy vmlinux a: - copy initrd.gz a: - - - ++++ COMBOOT EXECUTABLES ++++ - -Syslinux supports simple standalone programs, using a file format -similar to DOS ".com" files. A 32-bit version, called COM32, is also -provided. A simple API provides access to a limited set of filesystem -and console functions. - -See the file comboot.txt for more information on COMBOOT and COM32 -programs. - - - ++++ NOVICE PROTECTION ++++ - -Syslinux will attempt to detect booting on a machine with too little -memory, which means the Linux boot sequence cannot complete. If so, a -message is displayed and the boot sequence aborted. Holding down the -Ctrl key while booting disables this feature. - -Any file that SYSLINUX uses can be marked hidden, system or readonly -if so is convenient; SYSLINUX ignores all file attributes. The -SYSLINUX installed automatically sets the readonly/hidden/system -attributes on LDLINUX.SYS. - - - ++++ NOTES ON BOOTABLE CD-ROMS ++++ - -SYSLINUX can be used to create bootdisk images for El -Torito-compatible bootable CD-ROMs. However, it appears that many -BIOSes are very buggy when it comes to booting CD-ROMs. Some users -have reported that the following steps are helpful in making a CD-ROM -that is bootable on the largest possible number of machines: - - a) Use the -s (safe, slow and stupid) option to SYSLINUX; - b) Put the boot image as close to the beginning of the - ISO 9660 filesystem as possible. - -A CD-ROM is so much faster than a floppy that the -s option shouldn't -matter from a speed perspective. - -Of course, you probably want to use ISOLINUX instead. See isolinux.txt. - - - ++++ BOOTING FROM A FAT FILESYSTEM PARTITION ON A HARD DISK ++++ - -SYSLINUX can boot from a FAT filesystem partition on a hard disk -(including FAT32). The installation procedure is identical to the -procedure for installing it on a floppy, and should work under either -DOS or Linux. To boot from a partition, SYSLINUX needs to be launched -from a Master Boot Record or another boot loader, just like DOS itself -would. - -Under DOS, you can install a standard simple MBR on the primary hard -disk by running the command: - - FDISK /MBR - -Then use the FDISK command to mark the appropriate partition active. - -A simple MBR, roughly on par with the one installed by DOS (but -unencumbered), is included in the SYSLINUX distribution. To install -it under Linux, simply type: - - cat mbr.bin > /dev/XXX - -... where /dev/XXX is the device you wish to install it on. - -Under DOS or Win32, you can install the SYSLINUX MBR with the -m -option to the SYSLINUX installer, and use the -a option to mark the -current partition active: - - syslinux -ma c: - -Note that this will also install SYSLINUX on the specified partition. - - - ++++ HARDWARE INFORMATION +++ - -I have started to maintain a web page of hardware with known -problems. There are, unfortunately, lots of broken hardware out -there; especially early PXE stacks (for PXELINUX) have lots of -problems. - -A list of problems, and workarounds (if known), is maintained at: - - http://syslinux.zytor.com/hardware.php - - - ++++ BOOT LOADER IDS USED ++++ - -The Linux boot protocol supports a "boot loader ID", a single byte -where the upper nybble specifies a boot loader family (3 = Syslinux) -and the lower nybble is version or, in the case of Syslinux, media: - - 0x31 (49) = SYSLINUX - 0x32 (50) = PXELINUX - 0x33 (51) = ISOLINUX - 0x34 (52) = EXTLINUX - -In recent versions of Linux, this ID is available as -/proc/sys/kernel/bootloader_type. - - - ++++ BUG REPORTS ++++ - -I would appreciate hearing of any problems you have with Syslinux. I -would also like to hear from you if you have successfully used Syslinux, -*especially* if you are using it for a distribution. - -If you are reporting problems, please include all possible information -about your system and your BIOS; the vast majority of all problems -reported turn out to be BIOS or hardware bugs, and I need as much -information as possible in order to diagnose the problems. - -There is a mailing list for discussion among Syslinux users and for -announcements of new and test versions. To join, or to browse the -archive, go to: - - http://www.zytor.com/mailman/listinfo/syslinux - -Please DO NOT send HTML messages or attachments to the mailing list -(including multipart/alternative or similar.) All such messages will -be bounced. diff --git a/config/release/3rdparty/syslinux/doc/usbkey.txt b/config/release/3rdparty/syslinux/doc/usbkey.txt deleted file mode 100644 index 33613d6963..0000000000 --- a/config/release/3rdparty/syslinux/doc/usbkey.txt +++ /dev/null @@ -1,47 +0,0 @@ -The proper mode to boot a USB key drive in is "USB-HDD". That is the -ONLY mode in which the C/H/S geometry encoded on the disk itself -doesn't have to match what the BIOS thinks it is. Since geometry on -USB drives is completely arbitrary, and can vary from BIOS to BIOS, -this is the only mode which will work in general. - -Some BIOSes have been reported (in particular, certain versions of the -Award BIOS) that cannot boot USB keys in "USB-HDD" mode. This is a -very serious BIOS bug, but it is unfortunately rather typical of the -kind of quality we're seeing out of major BIOS vendors these days. On -these BIOSes, you're generally stuck booting them in USB-ZIP mode. - -THIS MEANS THE FILESYSTEM IMAGE ON THE DISK HAS TO HAVE A CORRECT -ZIPDRIVE-COMPATIBLE GEOMETRY. - -A standard zipdrive (both the 100 MB and the 250 MB varieties) have a -"geometry" of 64 heads, 32 sectors, and are partitioned devices with a -single partition 4 (unlike most other media of this type which uses -partition 1.) The 100 MB variety has 96 cylinders, and the 250 MB -variety has 239 cylinders; but any number of cylinders will do as -appropriate for the size device you have. For example, if your device -reports when inserted into a Linux system: - -usb-storage: device found at 4 - Vendor: 32MB Model: HardDrive Rev: 1.88 - Type: Direct-Access ANSI SCSI revision: 02 -SCSI device sda: 64000 512-byte hdwr sectors (33 MB) - -... you would have 64000/(64*32) = 31.25 cylinders; round down to 31. - -The script "mkdiskimage" which is supplied with the syslinux -distribution can be used to initialize USB keys in a Zip-like fashion. -To do that, calculate the correct number of cylinders (31 in the -example above), and, if your USB key is /dev/sda (CHECK THE KERNEL -MESSAGES CAREFULLY - IF YOU ENTER THE WRONG DISK DRIVE IT CANNOT BE -RECOVERED), run: - - mkdiskimage -4 /dev/sda 0 64 32 - -(The 0 means automatically determine the size of the device, and -4 -means mimic a zipdisk by using partition 4.) - -Then you should be able to run - - syslinux /dev/sda4 - -... and mount /dev/sda4 and put your files on it as needed. diff --git a/config/release/3rdparty/syslinux/dos/syslinux.com b/config/release/3rdparty/syslinux/dos/syslinux.com deleted file mode 100755 index 49f62ef36b5eafaba74b541cae020512c83e98d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35364 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 diff --git a/config/release/3rdparty/md5sum/README b/packages/tools/syslinux/files/3rdparty/md5sum/README similarity index 100% rename from config/release/3rdparty/md5sum/README rename to packages/tools/syslinux/files/3rdparty/md5sum/README diff --git a/config/release/3rdparty/md5sum/md5sum.exe b/packages/tools/syslinux/files/3rdparty/md5sum/md5sum.exe similarity index 100% rename from config/release/3rdparty/md5sum/md5sum.exe rename to packages/tools/syslinux/files/3rdparty/md5sum/md5sum.exe diff --git a/config/release/INSTALL b/packages/tools/syslinux/files/INSTALL similarity index 100% rename from config/release/INSTALL rename to packages/tools/syslinux/files/INSTALL diff --git a/config/release/create_installstick b/packages/tools/syslinux/files/create_installstick similarity index 100% rename from config/release/create_installstick rename to packages/tools/syslinux/files/create_installstick diff --git a/config/release/create_installstick.bat b/packages/tools/syslinux/files/create_installstick.bat similarity index 100% rename from config/release/create_installstick.bat rename to packages/tools/syslinux/files/create_installstick.bat diff --git a/config/release/create_installstick.exe b/packages/tools/syslinux/files/create_installstick.exe similarity index 100% rename from config/release/create_installstick.exe rename to packages/tools/syslinux/files/create_installstick.exe diff --git a/config/release/create_virtualimage b/packages/tools/syslinux/files/create_virtualimage similarity index 100% rename from config/release/create_virtualimage rename to packages/tools/syslinux/files/create_virtualimage diff --git a/config/release/sample.conf/extlinux.conf b/packages/tools/syslinux/files/sample.conf/extlinux.conf similarity index 100% rename from config/release/sample.conf/extlinux.conf rename to packages/tools/syslinux/files/sample.conf/extlinux.conf diff --git a/config/release/sample.conf/grub.conf b/packages/tools/syslinux/files/sample.conf/grub.conf similarity index 100% rename from config/release/sample.conf/grub.conf rename to packages/tools/syslinux/files/sample.conf/grub.conf diff --git a/config/release/sample.conf/syslinux.cfg b/packages/tools/syslinux/files/sample.conf/syslinux.cfg similarity index 100% rename from config/release/sample.conf/syslinux.cfg rename to packages/tools/syslinux/files/sample.conf/syslinux.cfg diff --git a/config/release/sample.conf/syslinux_installer.cfg b/packages/tools/syslinux/files/sample.conf/syslinux_installer.cfg similarity index 100% rename from config/release/sample.conf/syslinux_installer.cfg rename to packages/tools/syslinux/files/sample.conf/syslinux_installer.cfg