Lines Matching +full:real +full:-
1 .. SPDX-License-Identifier: GPL-2.0
12 real-mode DOS as a mainstream operating system.
28 Protocol 2.02 (Kernel 2.4.0-test3-pre3) New command line protocol.
31 safe for systems which use the EBDA from SMM or 32-bit
35 Protocol 2.03 (Kernel 2.4.18-pre1) Explicitly makes the highest possible
54 Protocol 2.09 (Kernel 2.6.26) Added a field of 64-bit physical
68 Protocol 2.13 (Kernel 3.14) Support 32- and 64-bit flags being set in
69 xloadflags to support booting a 64-bit kernel from 32-bit
99 0A0000 +------------------------+
101 09A000 +------------------------+
103 | Stack/heap | For use by the kernel real-mode code.
104 098000 +------------------------+
105 | Kernel setup | The kernel real-mode code.
106 090200 +------------------------+
108 090000 +------------------------+
109 | Protected-mode kernel | The bulk of the kernel image.
110 010000 +------------------------+
111 | Boot loader | <- Boot sector entry point 0000:7C00
112 001000 +------------------------+
114 000800 +------------------------+
116 000600 +------------------------+
118 000000 +------------------------+
120 When using bzImage, the protected-mode kernel was relocated to
121 0x100000 ("high memory"), and the kernel real-mode block (boot sector,
127 It is desirable to keep the "memory ceiling" -- the highest point in
128 low memory touched by the boot loader -- as low as possible, since
146 | Protected-mode kernel |
147 100000 +------------------------+
149 0A0000 +------------------------+
153 X+10000 +------------------------+
154 | Stack/heap | For use by the kernel real-mode code.
155 X+08000 +------------------------+
156 | Kernel setup | The kernel real-mode code.
158 X +------------------------+
159 | Boot loader | <- Boot sector entry point 0000:7C00
160 001000 +------------------------+
162 000800 +------------------------+
164 000600 +------------------------+
166 000000 +------------------------+
171 The Real-Mode Kernel Header
179 real-mode code (boot sector and setup code) and then examine the
180 following header at offset 0x01f1. The real-mode code can total up to
191 01F4/4 2.04+(2) syssize The size of the 32-bit code in 16-byte paras
192 01F8/2 ALL ram_size DO NOT USE - for bootsect.S use only
200 020C/2 2.00+ start_sys_seg The load-low segment (0x1000) (obsolete)
208 0220/4 2.00+ bootsect_kludge DO NOT USE - for bootsect.S use only
212 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line
220 0240/8 2.07+ hardware_subarch_data Subarchitecture-specific data
223 0250/8 2.09+ setup_data 64-bit physical pointer to linked list
233 real value is 4.
239 (3) Ignored, but safe to set, for boot protocols 2.02-2.09.
247 Real-mode kernel must be located at 0x90000.
277 The size of the setup code in 512-byte sectors. If this field is
278 0, the real value is 4. The real-mode code consists of the boot
279 sector (always one 512-byte sector) plus the setup code.
299 The size of the protected-mode code in units of 16-byte paragraphs.
397 If set to a nonzero value, contains a pointer to a NUL-terminated
398 human-readable kernel version number string, less 0x200. This can
430 type_of_loader <- 0xE4
431 ext_loader_type <- 0x05
432 ext_loader_ver <- 0x23
438 (0x00 reserved for pre-2.00 bootloader)
440 2 bootsect-loader
446 8 U-Boot
451 D kexec-tools
456 <http://sebastian-plotz.blogspot.de>
474 - If 0, the protected-mode code is loaded at 0x10000.
475 - If 1, the protected-mode code is loaded at 0x100000.
479 - Used internally by the compressed kernel to communicate
482 - If 1, KASLR enabled.
483 - If 0, KASLR disabled.
487 - If 0, print early messages.
488 - If 1, suppress early messages.
498 - This flag is obsolete.
511 Protocol: 2.00-2.01
514 When using protocol 2.00 or 2.01, if the real mode kernel is not
517 the kernel command line) moved in addition to the real-mode kernel
523 if the real-mode code is loaded at 0x90000.
551 The 32-bit linear address of the initial ramdisk or ramfs. Leave at
580 Set this field to the offset (from the beginning of the real-mode
626 same 64K segment as the real-mode code itself.
672 If this field is nonzero, the protected-mode part of the kernel can
693 power-of-two alignment from kernel_alignment down to this alignment.
706 - If 1, this kernel has the legacy 64-bit entry point at 0x200.
710 - If 1, kernel/boot_params/cmdline/ramdisk can be above 4G.
714 - If 1, the kernel supports the 32-bit EFI handoff entry point
719 - If 1, the kernel supports the 64-bit EFI handoff entry point
724 - If 1, the kernel supports kexec EFI boot with EFI runtime support.
763 Type: write (subarch-dependent)
779 If non-zero then this field contains the offset from the beginning
780 of the protected-mode code to the payload.
806 The 64-bit physical pointer to NULL terminated single linked list of
818 Where, the next is a 64-bit physical pointer to the next node of
821 field; the data holds the real payload.
830 and because it has a 32-bit length field. However, it is important that
880 A non-relocatable kernel will unconditionally move itself and to run
942 a long time, for lack of alternatives and -- especially early on -- inertia.
944 available to a BIOS-based loader (setup_data is, though).
947 2-byte jump field, which doubles as a length field for the structure, combined
948 with the size of the "hole" in struct boot_params that a protected-mode loader
955 the kernel image, because it is .bss and has no image-provided content.
970 .long kernel_info_var_len_data - kernel_info
971 .long kernel_info_end - kernel_info
976 .long example_struct_end - example_struct
982 .long example_strings_end - example_strings
988 This way the kernel_info is self-contained blob.
991 Each variable size data header/magic can be any 4-character string,
1035 From boot protocol version 2.08 onwards the CRC-32 is calculated over
1050 The kernel command line is a null-terminated string. The maximum
1063 - At offset 0x0020 (word), "cmd_line_magic", enter the magic
1066 - At offset 0x0022 (word), "cmd_line_offset", enter the offset
1068 real-mode kernel).
1070 - The kernel command line *must* be within the memory region
1075 Memory Layout of The Real-Mode Code
1078 The real-mode code requires a stack/heap to be set up, as well as
1080 in the real-mode accessible memory in bottom megabyte.
1089 - When loading a zImage kernel ((loadflags & 0x01) == 0).
1090 - When loading a 2.01 or earlier boot protocol kernel.
1093 For the 2.00 and 2.01 boot protocols, the real-mode code
1096 real-mode code must be loaded at 0x90000.
1101 located in the same 64K segment as the real-mode setup code; it is
1105 The kernel command line should not be located below the real-mode
1112 As a sample configuration, assume the following layout of the real
1118 0x0000-0x7fff Real mode kernel
1119 0x8000-0xdfff Stack and heap
1120 0xe000-0xffff Kernel command line
1126 0x0000-0x7fff Real mode kernel
1127 0x8000-0x97ff Stack and heap
1128 0x9800-0x9fff Kernel command line
1133 unsigned long base_ptr; /* base address for real-mode segment */
1152 heap_end_ptr = heap_end - 0x200;
1173 /* A very old kernel MUST have its real-mode code
1177 /* Copy the real-mode kernel */
1186 (64-(setup_sects+1))*512);
1193 The 32-bit (non-real-mode) kernel starts at offset (setup_sects+1)*512
1194 in the kernel file (again, if setup_sects == 0 the real value is 4.)
1205 the entire 0x10000-0x90000 range of memory. This means it is pretty
1206 much a requirement for these kernels to load the real-mode part at
1218 Documentation/admin-guide/kernel-parameters.rst to make sure they will not
1240 obviously bootloader-dependent, and some boot loaders
1244 user-specified command line:
1248 is obviously bootloader-dependent.
1254 recommended that they are located *first*, before the user-specified
1255 or configuration-specified command line. Otherwise, "init=/bin/sh"
1263 located at *segment* offset 0x20 from the start of the real mode
1264 kernel. This means that if you loaded your real-mode kernel code at
1267 At entry, ds = es = ss should point to the start of the real-mode
1283 /* Set up the real-mode kernel stack */
1294 a demand-loaded module!
1311 A 16-bit real mode far subroutine invoked immediately before
1316 A 32-bit flat-mode routine *jumped* to immediately after the
1327 32-bit Boot Protocol
1331 LinuxBIOS, etc, and kexec, the 16-bit real mode setup code in kernel
1332 based on legacy BIOS can not be used, so a 32-bit boot protocol needs
1335 In 32-bit boot protocol, the first step in loading a Linux kernel
1346 boot_params as that of 16-bit boot protocol, the boot loader should
1348 described in chapter Documentation/arch/x86/zero-page.rst.
1351 32/64-bit kernel in the same way as that of 16-bit boot protocol.
1353 In 32-bit boot protocol, the kernel is started by jumping to the
1354 32-bit kernel entry point, which is the start address of loaded
1355 32/64-bit kernel.
1357 At entry, the CPU must be in 32-bit protected mode with paging
1365 64-bit Boot Protocol
1369 and we need a 64-bit boot protocol.
1371 In 64-bit boot protocol, the first step in loading a Linux kernel
1382 boot_params as that of 16-bit boot protocol, the boot loader should
1384 in chapter Documentation/arch/x86/zero-page.rst.
1387 64-bit kernel in the same way as that of 16-bit boot protocol, but
1390 In 64-bit boot protocol, the kernel is started by jumping to the
1391 64-bit kernel entry point, which is the start address of loaded
1392 64-bit kernel plus 0x200.
1394 At entry, the CPU must be in 64-bit mode with paging enabled.
1410 which is hdr->handover_offset bytes from the beginning of
1424 firmware, 'table' is the EFI system table - these are the first two
1426 UEFI specification. 'bp' is the boot loader-allocated boot params.
1430 - hdr.cmd_line_ptr
1431 - hdr.ramdisk_image (if applicable)
1432 - hdr.ramdisk_size (if applicable)
1444 [0] https://github.com/u-boot/u-boot/commit/ec80b4735a593961fe701cc3a5d717d4739b0fd0