• Home
  • Raw
  • Download

Lines Matching +full:mode +full:- +full:bootloader

2 		     ---------------------------
9 real-mode DOS as a mainstream operating system.
24 Protocol 2.02: (Kernel 2.4.0-test3-pre3) New command line protocol.
27 safe for systems which use the EBDA from SMM or 32-bit
31 Protocol 2.03: (Kernel 2.4.18-pre1) Explicitly makes the highest possible
32 initrd address available to the bootloader.
36 Protocol 2.05: (Kernel 2.6.20) Make protected mode kernel relocatable.
50 Protocol 2.09: (Kernel 2.6.26) Added a field of 64-bit physical
70 0A0000 +------------------------+
72 09A000 +------------------------+
74 | Stack/heap | For use by the kernel real-mode code.
75 098000 +------------------------+
76 | Kernel setup | The kernel real-mode code.
77 090200 +------------------------+
79 090000 +------------------------+
80 | Protected-mode kernel | The bulk of the kernel image.
81 010000 +------------------------+
82 | Boot loader | <- Boot sector entry point 0000:7C00
83 001000 +------------------------+
85 000800 +------------------------+
87 000600 +------------------------+
89 000000 +------------------------+
92 When using bzImage, the protected-mode kernel was relocated to
93 0x100000 ("high memory"), and the kernel real-mode block (boot sector,
99 It is desirable to keep the "memory ceiling" -- the highest point in
100 low memory touched by the boot loader -- as low as possible, since
118 | Protected-mode kernel |
119 100000 +------------------------+
121 0A0000 +------------------------+
125 X+10000 +------------------------+
126 | Stack/heap | For use by the kernel real-mode code.
127 X+08000 +------------------------+
128 | Kernel setup | The kernel real-mode code.
130 X +------------------------+
131 | Boot loader | <- Boot sector entry point 0000:7C00
132 001000 +------------------------+
134 000800 +------------------------+
136 000600 +------------------------+
138 000000 +------------------------+
144 **** THE REAL-MODE KERNEL HEADER
151 real-mode code (boot sector and setup code) and then examine the
152 following header at offset 0x01f1. The real-mode code can total up to
163 01F4/4 2.04+(2 syssize The size of the 32-bit code in 16-byte paras
164 01F8/2 ALL ram_size DO NOT USE - for bootsect.S use only
165 01FA/2 ALL vid_mode Video mode control
172 020C/2 2.00+ start_sys_seg The load-low segment (0x1000) (obsolete)
180 0220/4 2.00+ bootsect_kludge DO NOT USE - for bootsect.S use only
184 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line
192 0240/8 2.07+ hardware_subarch_data Subarchitecture-specific data
195 0250/8 2.09+ setup_data 64-bit physical pointer to linked list
208 (3) Ignored, but safe to set, for boot protocols 2.02-2.09.
216 Real-mode kernel must be located at 0x90000.
226 For each field, some are information from the kernel to the bootloader
227 ("read"), some are expected to be filled out by the bootloader
229 bootloader ("modify").
243 The size of the setup code in 512-byte sectors. If this field is
244 0, the real value is 4. The real-mode code consists of the boot
245 sector (always one 512-byte sector) plus the setup code.
261 The size of the protected-mode code in units of 16-byte paragraphs.
339 If set to a nonzero value, contains a pointer to a NUL-terminated
340 human-readable kernel version number string, less 0x200. This can
366 four bits for the bootloader version.
370 type_of_loader <- 0xE4
371 ext_loader_type <- 0x05
372 ext_loader_ver <- 0x23
376 0 LILO (0x00 reserved for pre-2.00 bootloader)
378 2 bootsect-loader (0x20, all other values reserved)
383 8 U-Boot
388 D kexec-tools
392 11 Minimal Linux Bootloader <http://sebastian-plotz.blogspot.de>
395 Please contact <hpa@zytor.com> if you need a bootloader ID
406 - If 0, the protected-mode code is loaded at 0x10000.
407 - If 1, the protected-mode code is loaded at 0x100000.
410 - Used internally by the compressed kernel to communicate
416 - If 0, print early messages.
417 - If 1, suppress early messages.
424 - If 0, reload the segment registers in the 32bit entry point.
425 - If 1, do not reload the segment registers in the 32bit entry point.
437 Protocol: 2.00-2.01
439 When using protocol 2.00 or 2.01, if the real mode kernel is not
442 the kernel command line) moved in addition to the real-mode kernel
448 if the real-mode code is loaded at 0x90000.
455 The address to jump to in protected mode. This defaults to the load
463 2. if a bootloader which does not install a hook loads a
472 The 32-bit linear address of the initial ramdisk or ramfs. Leave at
495 Set this field to the offset (from the beginning of the real-mode
535 same 64K segment as the real-mode code itself.
575 If this field is nonzero, the protected-mode part of the kernel can
594 power-of-two alignment from kernel_alignment down to this alignment.
604 - If 1, this kernel has the legacy 64-bit entry point at 0x200.
607 - If 1, kernel/boot_params/cmdline/ramdisk can be above 4G.
610 - If 1, the kernel supports the 32-bit EFI handoff entry point
614 - If 1, the kernel supports the 64-bit EFI handoff entry point
618 - If 1, the kernel supports kexec EFI boot with EFI runtime support.
639 This field allows the bootloader to inform the kernel we are in one
649 Type: write (subarch-dependent)
662 If non-zero then this field contains the offset from the beginning
663 of the protected-mode code to the payload.
685 The 64-bit physical pointer to NULL terminated single linked list of
697 Where, the next is a 64-bit physical pointer to the next node of
713 kernel. A relocating bootloader should attempt to load at this
716 A non-relocatable kernel will unconditionally move itself and to run
750 From boot protocol version 2.08 onwards the CRC-32 is calculated over
764 The kernel command line is a null-terminated string. The maximum
782 real-mode kernel).
789 **** MEMORY LAYOUT OF THE REAL-MODE CODE
791 The real-mode code requires a stack/heap to be set up, as well as
793 in the real-mode accessible memory in bottom megabyte.
802 - When loading a zImage kernel ((loadflags & 0x01) == 0).
803 - When loading a 2.01 or earlier boot protocol kernel.
805 -> For the 2.00 and 2.01 boot protocols, the real-mode code
808 real-mode code must be loaded at 0x90000.
813 located in the same 64K segment as the real-mode setup code; it is
817 The kernel command line should not be located below the real-mode
824 mode segment:
828 0x0000-0x7fff Real mode kernel
829 0x8000-0xdfff Stack and heap
830 0xe000-0xffff Kernel command line
834 0x0000-0x7fff Real mode kernel
835 0x8000-0x97ff Stack and heap
836 0x9800-0x9fff Kernel command line
840 unsigned long base_ptr; /* base address for real-mode segment */
859 heap_end_ptr = heap_end - 0x200;
880 /* A very old kernel MUST have its real-mode code
884 /* Copy the real-mode kernel */
893 (64-(setup_sects+1))*512);
899 The 32-bit (non-real-mode) kernel starts at offset (setup_sects+1)*512
911 the entire 0x10000-0x90000 range of memory. This means it is pretty
912 much a requirement for these kernels to load the real-mode part at
924 Documentation/admin-guide/kernel-parameters.rst to make sure they will not
927 vga=<mode>
928 <mode> here is either an integer (in C notation, either
942 the bootloader!
946 obviously bootloader-dependent, and some boot loaders
950 user-specified command line:
954 is obviously bootloader-dependent.
960 recommended that they are located *first*, before the user-specified
961 or configuration-specified command line. Otherwise, "init=/bin/sh"
968 located at *segment* offset 0x20 from the start of the real mode
969 kernel. This means that if you loaded your real-mode kernel code at
972 At entry, ds = es = ss should point to the start of the real-mode
988 /* Set up the real-mode kernel stack */
999 a demand-loaded module!
1015 A 16-bit real mode far subroutine invoked immediately before
1016 entering protected mode. The default routine disables NMI, so
1020 A 32-bit flat-mode routine *jumped* to immediately after the
1021 transition to protected mode, but before the kernel is
1031 **** 32-bit BOOT PROTOCOL
1034 LinuxBIOS, etc, and kexec, the 16-bit real mode setup code in kernel
1035 based on legacy BIOS can not be used, so a 32-bit boot protocol needs
1038 In 32-bit boot protocol, the first step in loading a Linux kernel
1049 boot_params as that of 16-bit boot protocol, the boot loader should
1051 described in zero-page.txt.
1054 32/64-bit kernel in the same way as that of 16-bit boot protocol.
1056 In 32-bit boot protocol, the kernel is started by jumping to the
1057 32-bit kernel entry point, which is the start address of loaded
1058 32/64-bit kernel.
1060 At entry, the CPU must be in 32-bit protected mode with paging
1068 **** 64-bit BOOT PROTOCOL
1070 For machine with 64bit cpus and 64bit kernel, we could use 64bit bootloader
1071 and we need a 64-bit boot protocol.
1073 In 64-bit boot protocol, the first step in loading a Linux kernel
1084 boot_params as that of 16-bit boot protocol, the boot loader should
1086 in zero-page.txt.
1089 64-bit kernel in the same way as that of 16-bit boot protocol, but
1092 In 64-bit boot protocol, the kernel is started by jumping to the
1093 64-bit kernel entry point, which is the start address of loaded
1094 64-bit kernel plus 0x200.
1096 At entry, the CPU must be in 64-bit mode with paging enabled.
1111 which is hdr->handover_offset bytes from the beginning of
1119 firmware, 'table' is the EFI system table - these are the first two
1121 UEFI specification. 'bp' is the boot loader-allocated boot params.