--- linux-2.4.18-pre1/Documentation/i386/boot.txt Sun Dec 9 01:12:01 2001 +++ linux/Documentation/i386/boot.txt Tue Jan 1 23:56:09 2002 @@ -2,7 +2,7 @@ ---------------------------- H. Peter Anvin - Last update 2001-12-09 + Last update 2002-01-01 On the i386 platform, the Linux kernel uses a rather complicated boot convention. This has evolved partially due to historical aspects, as @@ -31,8 +31,8 @@ BIOS entry points. zImage deprecated but still supported. -Protocol 2.03: (???) Explicitly makes the highest possible initrd address - available to the bootloader. +Protocol 2.03: (Kernel 2.4.18-pre1) Explicitly makes the highest possible + initrd address available to the bootloader. **** MEMORY LAYOUT @@ -68,7 +68,7 @@ 0x10000 and end of low memory. Unfortunately, in protocols 2.00 and 2.01 the command line is still required to live in the 0x9XXXX memory range, and that memory range is still overwritten by the early kernel. -The 2.02 protocol fixes that. +The 2.02 protocol resolves that problem. It is desirable to keep the "memory ceiling" -- the highest point in low memory touched by the boot loader -- as low as possible, since @@ -115,7 +115,8 @@ 0202/4 2.00+ header Magic signature "HdrS" 0206/2 2.00+ version Boot protocol version supported 0208/4 2.00+ realmode_swtch Boot loader hook (see below) -020C/4 2.00+ start_sys Points to kernel version string +020C/2 2.00+ start_sys The load-low segment (0x1000) (obsolete) +020E/2 2.00+ kernel_version Pointer to kernel version string 0210/1 2.00+ type_of_loader Boot loader identifier 0211/1 2.00+ loadflags Boot protocol option flags 0212/2 2.00+ setup_move_size Move to high memory size (used with hooks) @@ -144,6 +145,15 @@ setting fields in the header, you must make sure only to set fields supported by the protocol version in use. +The "kernel_version" field, if set to a nonzero value, contains a +pointer to a null-terminated human-readable kernel version number +string, less 0x200. This can be used to display the kernel version to +the user. This value should be less than (0x200*setup_sects). For +example, if this value is set to 0x1c00, the kernel version number +string can be found at offset 0x1e00 in the kernel file. This is a +valid value if and only if the "setup_sects" field contains the value +14 or higher. + Most boot loaders will simply load the kernel at its target address directly. Such boot loaders do not need to worry about filling in most of the fields in the header. The following fields should be @@ -163,6 +173,9 @@ 2 bootsect-loader 3 SYSLINUX 4 EtherBoot + + Please contact if you need a bootloader ID + value assigned. loadflags, heap_end_ptr: If the protocol version is 2.01 or higher, enter the