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