€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ!/translations/zh_CN/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/zh_TW/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/it_IT/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ja_JP/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ko_KR/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/pt_BR/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/sp_SP/arch/x86/boot”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ;/var/lib/git/docbuild/linux/Documentation/arch/x86/boot.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒThe Linux/x86 Boot Protocol”h]”hŒThe Linux/x86 Boot Protocol”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXƒOn the x86 platform, the Linux kernel uses a rather complicated boot convention. This has evolved partially due to historical aspects, as well as the desire in the early days to have the kernel itself be a bootable image, the complicated PC memory model and due to changed expectations in the PC industry caused by the effective demise of real-mode DOS as a mainstream operating system.”h]”hXƒOn the x86 platform, the Linux kernel uses a rather complicated boot convention. This has evolved partially due to historical aspects, as well as the desire in the early days to have the kernel itself be a bootable image, the complicated PC memory model and due to changed expectations in the PC industry caused by the effective demise of real-mode DOS as a mainstream operating system.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒGCurrently, the following versions of the Linux/x86 boot protocol exist.”h]”hŒGCurrently, the following versions of the Linux/x86 boot protocol exist.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KBuh1jhjubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒ Old kernels”h]”hŒ Old kernels”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"ubj&)�”}”(hhh]”hÞ)�”}”(hŒXzImage/Image support only. Some very early kernels may not even support a command line.”h]”hŒXzImage/Image support only. Some very early kernels may not even support a command line.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.00”h]”hŒ Protocol 2.00”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj[ubj&)�”}”(hhh]”hÞ)�”}”(hŒÛ(Kernel 1.3.73) Added bzImage and initrd support, as well as a formalized way to communicate between the boot loader and the kernel. setup.S made relocatable, although the traditional setup area still assumed writable.”h]”hŒÛ(Kernel 1.3.73) Added bzImage and initrd support, as well as a formalized way to communicate between the boot loader and the kernel. setup.S made relocatable, although the traditional setup area still assumed writable.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.01”h]”hŒ Protocol 2.01”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj’ubj&)�”}”(hhh]”hÞ)�”}”(hŒ-(Kernel 1.3.76) Added a heap overrun warning.”h]”hŒ-(Kernel 1.3.76) Added a heap overrun warning.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.02”h]”hŒ Protocol 2.02”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubj&)�”}”(hhh]”hÞ)�”}”(hX(Kernel 2.4.0-test3-pre3) New command line protocol. Lower the conventional memory ceiling. No overwrite of the traditional setup area, thus making booting safe for systems which use the EBDA from SMM or 32-bit BIOS entry points. zImage deprecated but still supported.”h]”hX(Kernel 2.4.0-test3-pre3) New command line protocol. Lower the conventional memory ceiling. No overwrite of the traditional setup area, thus making booting safe for systems which use the EBDA from SMM or 32-bit BIOS entry points. zImage deprecated but still supported.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.03”h]”hŒ Protocol 2.03”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒf(Kernel 2.4.18-pre1) Explicitly makes the highest possible initrd address available to the bootloader.”h]”hŒf(Kernel 2.4.18-pre1) Explicitly makes the highest possible initrd address available to the bootloader.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.04”h]”hŒ Protocol 2.04”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K&hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7ubj&)�”}”(hhh]”hÞ)�”}”(hŒ7(Kernel 2.6.14) Extend the syssize field to four bytes.”h]”hŒ7(Kernel 2.6.14) Extend the syssize field to four bytes.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K&hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.05”h]”hŒ Protocol 2.05”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjnubj&)�”}”(hhh]”hÞ)�”}”(hŒq(Kernel 2.6.20) Make protected mode kernel relocatable. Introduce relocatable_kernel and kernel_alignment fields.”h]”hŒq(Kernel 2.6.20) Make protected mode kernel relocatable. Introduce relocatable_kernel and kernel_alignment fields.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.06”h]”hŒ Protocol 2.06”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¥ubj&)�”}”(hhh]”hÞ)�”}”(hŒN(Kernel 2.6.22) Added a field that contains the size of the boot command line.”h]”hŒN(Kernel 2.6.22) Added a field that contains the size of the boot command line.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.07”h]”hŒ Protocol 2.07”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÜubj&)�”}”(hhh]”hÞ)�”}”(hŒ�(Kernel 2.6.24) Added paravirtualised boot protocol. Introduced hardware_subarch and hardware_subarch_data and KEEP_SEGMENTS flag in load_flags.”h]”hŒ�(Kernel 2.6.24) Added paravirtualised boot protocol. Introduced hardware_subarch and hardware_subarch_data and KEEP_SEGMENTS flag in load_flags.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.08”h]”hŒ Protocol 2.08”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒ�(Kernel 2.6.26) Added crc32 checksum and ELF format payload. Introduced payload_offset and payload_length fields to aid in locating the payload.”h]”hŒ�(Kernel 2.6.26) Added crc32 checksum and ELF format payload. Introduced payload_offset and payload_length fields to aid in locating the payload.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.09”h]”hŒ Protocol 2.09”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubj&)�”}”(hhh]”hÞ)�”}”(hŒd(Kernel 2.6.26) Added a field of 64-bit physical pointer to single linked list of struct setup_data.”h]”hŒd(Kernel 2.6.26) Added a field of 64-bit physical pointer to single linked list of struct setup_data.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.10”h]”hŒ Protocol 2.10”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�ubj&)�”}”(hhh]”hÞ)�”}”(hŒ¡(Kernel 2.6.31) Added a protocol for relaxed alignment beyond the kernel_alignment added, new init_size and pref_address fields. Added extended boot loader IDs.”h]”hŒ¡(Kernel 2.6.31) Added a protocol for relaxed alignment beyond the kernel_alignment added, new init_size and pref_address fields. Added extended boot loader IDs.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.11”h]”hŒ Protocol 2.11”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸ubj&)�”}”(hhh]”hÞ)�”}”(hŒK(Kernel 3.6) Added a field for offset of EFI handover protocol entry point.”h]”hŒK(Kernel 3.6) Added a field for offset of EFI handover protocol entry point.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.12”h]”hŒ Protocol 2.12”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjïubj&)�”}”(hhh]”hÞ)�”}”(hŒ…(Kernel 3.8) Added the xloadflags field and extension fields to struct boot_params for loading bzImage and ramdisk above 4G in 64bit.”h]”hŒ…(Kernel 3.8) Added the xloadflags field and extension fields to struct boot_params for loading bzImage and ramdisk above 4G in 64bit.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.13”h]”hŒ Protocol 2.13”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&ubj&)�”}”(hhh]”hÞ)�”}”(hŒu(Kernel 3.14) Support 32- and 64-bit flags being set in xloadflags to support booting a 64-bit kernel from 32-bit EFI”h]”hŒu(Kernel 3.14) Support 32- and 64-bit flags being set in xloadflags to support booting a 64-bit kernel from 32-bit EFI”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.14”h]”hŒ Protocol 2.14”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒ™BURNT BY INCORRECT COMMIT ae7e1238e68f2a472a125673ab506d49158c1889 ("x86/boot: Add ACPI RSDP address to setup_header") DO NOT USE!!! ASSUME SAME AS 2.13.”h]”hŒ�BURNT BY INCORRECT COMMIT ae7e1238e68f2a472a125673ab506d49158c1889 (“x86/boot: Add ACPI RSDP address to setup_headerâ€�) DO NOT USE!!! ASSUME SAME AS 2.13.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol 2.15”h]”hŒ Protocol 2.15”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”ubj&)�”}”(hhh]”hÞ)�”}”(hŒB(Kernel 5.5) Added the kernel_info and kernel_info.setup_type_max.”h]”hŒB(Kernel 5.5) Added the kernel_info and kernel_info.setup_type_max.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhhýubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhhÊh²hh³hÇh´NubhŒnote”“”)�”}”(hX^The protocol version number should be changed only if the setup header is changed. There is no need to update the version number if boot_params or kernel_info are changed. Additionally, it is recommended to use xloadflags (in this case the protocol version number should not be updated either) or kernel_info to communicate supported Linux kernel features to the boot loader. Due to very limited space available in the original setup header every update to it should be considered with great care. Starting from the protocol 2.15 the primary way to communicate things to the boot loader is the kernel_info.”h]”hÞ)�”}”(hX^The protocol version number should be changed only if the setup header is changed. There is no need to update the version number if boot_params or kernel_info are changed. Additionally, it is recommended to use xloadflags (in this case the protocol version number should not be updated either) or kernel_info to communicate supported Linux kernel features to the boot loader. Due to very limited space available in the original setup header every update to it should be considered with great care. Starting from the protocol 2.15 the primary way to communicate things to the boot loader is the kernel_info.”h]”hX^The protocol version number should be changed only if the setup header is changed. There is no need to update the version number if boot_params or kernel_info are changed. Additionally, it is recommended to use xloadflags (in this case the protocol version number should not be updated either) or kernel_info to communicate supported Linux kernel features to the boot loader. Due to very limited space available in the original setup header every update to it should be considered with great care. Starting from the protocol 2.15 the primary way to communicate things to the boot loader is the kernel_info.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KQhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhhÊh²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Memory Layout”h]”hŒ Memory Layout”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjøh²hh³hÇh´K]ubhÞ)�”}”(hŒjThe traditional memory map for the kernel loader, used for Image or zImage kernels, typically looks like::”h]”hŒiThe traditional memory map for the kernel loader, used for Image or zImage kernels, typically looks like:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hjøh²hubhŒ literal_block”“”)�”}”(hXB | | 0A0000 +------------------------+ | Reserved for BIOS | Do not use. Reserved for BIOS EBDA. 09A000 +------------------------+ | Command line | | Stack/heap | For use by the kernel real-mode code. 098000 +------------------------+ | Kernel setup | The kernel real-mode code. 090200 +------------------------+ | Kernel boot sector | The kernel legacy boot sector. 090000 +------------------------+ | Protected-mode kernel | The bulk of the kernel image. 010000 +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+”h]”hXB | | 0A0000 +------------------------+ | Reserved for BIOS | Do not use. Reserved for BIOS EBDA. 09A000 +------------------------+ | Command line | | Stack/heap | For use by the kernel real-mode code. 098000 +------------------------+ | Kernel setup | The kernel real-mode code. 090200 +------------------------+ | Kernel boot sector | The kernel legacy boot sector. 090000 +------------------------+ | Protected-mode kernel | The bulk of the kernel image. 010000 +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Kbhjøh²hubhÞ)�”}”(hX|When using bzImage, the protected-mode kernel was relocated to 0x100000 ("high memory"), and the kernel real-mode block (boot sector, setup, and stack/heap) was made relocatable to any address between 0x10000 and end of low memory. Unfortunately, in protocols 2.00 and 2.01 the 0x90000+ memory range is still used internally by the kernel; the 2.02 protocol resolves that problem.”h]”hX€When using bzImage, the protected-mode kernel was relocated to 0x100000 (“high memoryâ€�), and the kernel real-mode block (boot sector, setup, and stack/heap) was made relocatable to any address between 0x10000 and end of low memory. Unfortunately, in protocols 2.00 and 2.01 the 0x90000+ memory range is still used internally by the kernel; the 2.02 protocol resolves that problem.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kxhjøh²hubhÞ)�”}”(hXuIt is desirable to keep the "memory ceiling" -- the highest point in low memory touched by the boot loader -- as low as possible, since some newer BIOSes have begun to allocate some rather large amounts of memory, called the Extended BIOS Data Area, near the top of low memory. The boot loader should use the "INT 12h" BIOS call to verify how much low memory is available.”h]”hX}It is desirable to keep the “memory ceilingâ€� -- the highest point in low memory touched by the boot loader -- as low as possible, since some newer BIOSes have begun to allocate some rather large amounts of memory, called the Extended BIOS Data Area, near the top of low memory. The boot loader should use the “INT 12hâ€� BIOS call to verify how much low memory is available.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjøh²hubhÞ)�”}”(hX×Unfortunately, if INT 12h reports that the amount of memory is too low, there is usually nothing the boot loader can do but to report an error to the user. The boot loader should therefore be designed to take up as little space in low memory as it reasonably can. For zImage or old bzImage kernels, which need data written into the 0x90000 segment, the boot loader should make sure not to use memory above the 0x9A000 point; too many BIOSes will break above that point.”h]”hX×Unfortunately, if INT 12h reports that the amount of memory is too low, there is usually nothing the boot loader can do but to report an error to the user. The boot loader should therefore be designed to take up as little space in low memory as it reasonably can. For zImage or old bzImage kernels, which need data written into the 0x90000 segment, the boot loader should make sure not to use memory above the 0x9A000 point; too many BIOSes will break above that point.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K†hjøh²hubhÞ)�”}”(hŒqFor a modern bzImage kernel with boot protocol version >= 2.02, a memory layout like the following is suggested::”h]”hŒpFor a modern bzImage kernel with boot protocol version >= 2.02, a memory layout like the following is suggested:”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŽhjøh²hubj)�”}”(hX» ~ ~ | Protected-mode kernel | 100000 +------------------------+ | I/O memory hole | 0A0000 +------------------------+ | Reserved for BIOS | Leave as much as possible unused ~ ~ | Command line | (Can also be below the X+10000 mark) X+10000 +------------------------+ | Stack/heap | For use by the kernel real-mode code. X+08000 +------------------------+ | Kernel setup | The kernel real-mode code. | Kernel boot sector | The kernel legacy boot sector. X +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+ ... where the address X is as low as the design of the boot loader permits.”h]”hX» ~ ~ | Protected-mode kernel | 100000 +------------------------+ | I/O memory hole | 0A0000 +------------------------+ | Reserved for BIOS | Leave as much as possible unused ~ ~ | Command line | (Can also be below the X+10000 mark) X+10000 +------------------------+ | Stack/heap | For use by the kernel real-mode code. X+08000 +------------------------+ | Kernel setup | The kernel real-mode code. | Kernel boot sector | The kernel legacy boot sector. X +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+ ... where the address X is as low as the design of the boot loader permits.”…”�”}”hj_sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´K‘hjøh²hubeh}”(h]”Œ memory-layout”ah ]”h"]”Œ memory layout”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K]ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒThe Real-Mode Kernel Header”h]”hŒThe Real-Mode Kernel Header”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjuh²hh³hÇh´K¬ubhÞ)�”}”(hŒ§In the following text, and anywhere in the kernel boot sequence, "a sector" refers to 512 bytes. It is independent of the actual sector size of the underlying medium.”h]”hŒ«In the following text, and anywhere in the kernel boot sequence, “a sectorâ€� refers to 512 bytes. It is independent of the actual sector size of the underlying medium.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K®hjuh²hubhÞ)�”}”(hX@The first step in loading a Linux kernel should be to load the real-mode code (boot sector and setup code) and then examine the following header at offset 0x01f1. The real-mode code can total up to 32K, although the boot loader may choose to load only the first two sectors (1K) and then examine the bootup sector size.”h]”hX@The first step in loading a Linux kernel should be to load the real-mode code (boot sector and setup code) and then examine the following header at offset 0x01f1. The real-mode code can total up to 32K, although the boot loader may choose to load only the first two sectors (1K) and then examine the bootup sector size.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K²hjuh²hubhÞ)�”}”(hŒThe header looks like:”h]”hŒThe header looks like:”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¸hjuh²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj³ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj³ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj³ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K,uh1jhj³ubhŒthead”“”)�”}”(hhh]”j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/Size”h]”hŒ Offset/Size”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K»hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubj&)�”}”(hhh]”hÞ)�”}”(hŒProto”h]”hŒProto”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K»hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubj&)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K»hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubj&)�”}”(hhh]”hÞ)�”}”(hŒMeaning”h]”hŒMeaning”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K»hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01F1/1”h]”hŒ01F1/1”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K½hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQubj&)�”}”(hhh]”hÞ)�”}”(hŒALL(1)”h]”hŒALL(1)”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K½hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQubj&)�”}”(hhh]”hÞ)�”}”(hŒ setup_sects”h]”hŒ setup_sects”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K½hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQubj&)�”}”(hhh]”hÞ)�”}”(hŒ The size of the setup in sectors”h]”hŒ The size of the setup in sectors”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K½hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01F2/2”h]”hŒ01F2/2”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubj&)�”}”(hhh]”hÞ)�”}”(hŒ root_flags”h]”hŒ root_flags”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubj&)�”}”(hhh]”hÞ)�”}”(hŒ$If set, the root is mounted readonly”h]”hŒ$If set, the root is mounted readonly”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01F4/4”h]”hŒ01F4/4”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.04+(2)”h]”hŒ2.04+(2)”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒsyssize”h]”hŒsyssize”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒ,The size of the 32-bit code in 16-byte paras”h]”hŒ,The size of the 32-bit code in 16-byte paras”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01F8/2”h]”hŒ01F8/2”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÀhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÀhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubj&)�”}”(hhh]”hÞ)�”}”(hŒram_size”h]”hŒram_size”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÀhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubj&)�”}”(hhh]”hÞ)�”}”(hŒ$DO NOT USE - for bootsect.S use only”h]”hŒ$DO NOT USE - for bootsect.S use only”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÀhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01FA/2”h]”hŒ01FA/2”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÁhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjåubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÁhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjåubj&)�”}”(hhh]”hÞ)�”}”(hŒvid_mode”h]”hŒvid_mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÁhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjåubj&)�”}”(hhh]”hÞ)�”}”(hŒVideo mode control”h]”hŒVideo mode control”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÁhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01FC/2”h]”hŒ01FC/2”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubj&)�”}”(hhh]”hÞ)�”}”(hŒroot_dev”h]”hŒroot_dev”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubj&)�”}”(hhh]”hÞ)�”}”(hŒDefault root device number”h]”hŒDefault root device number”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÂhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ01FE/2”h]”hŒ01FE/2”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯ubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯ubj&)�”}”(hhh]”hÞ)�”}”(hŒ boot_flag”h]”hŒ boot_flag”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0xAA55 magic number”h]”hŒ0xAA55 magic number”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0200/2”h]”hŒ0200/2”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒjump”h]”hŒjump”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒJump instruction”h]”hŒJump instruction”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhj\ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0202/4”h]”hŒ0202/4”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy ubj&)�”}”(hhh]”hÞ)�”}”(hŒheader”h]”hŒheader”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy ubj&)�”}”(hhh]”hÞ)�”}”(hŒMagic signature "HdrS"”h]”hŒMagic signature “HdrSâ€�”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0206/2”h]”hŒ0206/2”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ ubj&)�”}”(hhh]”hÞ)�”}”(hŒversion”h]”hŒversion”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot protocol version supported”h]”hŒBoot protocol version supported”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0208/4”h]”hŒ0208/4”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhjF ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC ubj&)�”}”(hhh]”hÞ)�”}”(hŒrealmode_swtch”h]”hŒrealmode_swtch”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot loader hook (see below)”h]”hŒBoot loader hook (see below)”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÇhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ020C/2”h]”hŒ020C/2”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhj« ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¨ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¨ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ start_sys_seg”h]”hŒ start_sys_seg”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¨ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ(The load-low segment (0x1000) (obsolete)”h]”hŒ(The load-low segment (0x1000) (obsolete)”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ020E/2”h]”hŒ020E/2”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_version”h]”hŒkernel_version”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ Pointer to kernel version string”h]”hŒ Pointer to kernel version string”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0210/1”h]”hŒ0210/1”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhju ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr ubj&)�”}”(hhh]”hÞ)�”}”(hŒtype_of_loader”h]”hŒtype_of_loader”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot loader identifier”h]”hŒBoot loader identifier”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0211/1”h]”hŒ0211/1”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhjÚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj× ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj× ubj&)�”}”(hhh]”hÞ)�”}”(hŒ loadflags”h]”hŒ loadflags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj× ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot protocol option flags”h]”hŒBoot protocol option flags”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj× ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0212/2”h]”hŒ0212/2”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÌhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj< ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÌhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj< ubj&)�”}”(hhh]”hÞ)�”}”(hŒsetup_move_size”h]”hŒsetup_move_size”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÌhjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj< ubj&)�”}”(hhh]”hÞ)�”}”(hŒ*Move to high memory size (used with hooks)”h]”hŒ*Move to high memory size (used with hooks)”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÌhj„ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj< ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0214/4”h]”hŒ0214/4”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÍhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÍhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ code32_start”h]”hŒ code32_start”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÍhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡ ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot loader hook (see below)”h]”hŒBoot loader hook (see below)”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÍhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0218/4”h]”hŒ0218/4”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÎhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÎhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ ramdisk_image”h]”hŒ ramdisk_image”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÎhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ(initrd load address (set by boot loader)”h]”hŒ(initrd load address (set by boot loader)”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÎhjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ021C/4”h]”hŒ021C/4”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjk ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjk ubj&)�”}”(hhh]”hÞ)�”}”(hŒ ramdisk_size”h]”hŒ ramdisk_size”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjk ubj&)�”}”(hhh]”hÞ)�”}”(hŒ initrd size (set by boot loader)”h]”hŒ initrd size (set by boot loader)”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0220/4”h]”hŒ0220/4”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ ubj&)�”}”(hhh]”hÞ)�”}”(hŒbootsect_kludge”h]”hŒbootsect_kludge”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ ubj&)�”}”(hhh]”hÞ)�”}”(hŒ$DO NOT USE - for bootsect.S use only”h]”hŒ$DO NOT USE - for bootsect.S use only”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0224/2”h]”hŒ0224/2”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.01+”h]”hŒ2.01+”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5ubj&)�”}”(hhh]”hÞ)�”}”(hŒ heap_end_ptr”h]”hŒ heap_end_ptr”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5ubj&)�”}”(hhh]”hÞ)�”}”(hŒFree memory after setup end”h]”hŒFree memory after setup end”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0226/1”h]”hŒ0226/1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÒhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+(3)”h]”hŒ2.02+(3)”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÒhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšubj&)�”}”(hhh]”hÞ)�”}”(hŒext_loader_ver”h]”hŒext_loader_ver”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÒhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšubj&)�”}”(hhh]”hÞ)�”}”(hŒExtended boot loader version”h]”hŒExtended boot loader version”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÒhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0227/1”h]”hŒ0227/1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+(3)”h]”hŒ2.02+(3)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒext_loader_type”h]”hŒext_loader_type”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒExtended boot loader ID”h]”hŒExtended boot loader ID”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0228/4”h]”hŒ0228/4”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+”h]”hŒ2.02+”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒ cmd_line_ptr”h]”hŒ cmd_line_ptr”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒ)32-bit pointer to the kernel command line”h]”hŒ)32-bit pointer to the kernel command line”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ022C/4”h]”hŒ022C/4”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.03+”h]”hŒ2.03+”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubj&)�”}”(hhh]”hÞ)�”}”(hŒinitrd_addr_max”h]”hŒinitrd_addr_max”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubj&)�”}”(hhh]”hÞ)�”}”(hŒHighest legal initrd address”h]”hŒHighest legal initrd address”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0230/4”h]”hŒ0230/4”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.05+”h]”hŒ2.05+”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_alignment”h]”hŒkernel_alignment”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ+Physical addr alignment required for kernel”h]”hŒ+Physical addr alignment required for kernel”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0234/1”h]”hŒ0234/1”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K×hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.05+”h]”hŒ2.05+”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K×hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒrelocatable_kernel”h]”hŒrelocatable_kernel”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K×hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒ$Whether kernel is relocatable or not”h]”hŒ$Whether kernel is relocatable or not”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K×hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0235/1”h]”hŒ0235/1”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.10+”h]”hŒ2.10+”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒ min_alignment”h]”hŒ min_alignment”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒ$Minimum alignment, as a power of two”h]”hŒ$Minimum alignment, as a power of two”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0236/2”h]”hŒ0236/2”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÙhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.12+”h]”hŒ2.12+”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÙhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒ xloadflags”h]”hŒ xloadflags”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÙhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒBoot protocol option flags”h]”hŒBoot protocol option flags”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÙhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0238/4”h]”hŒ0238/4”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.06+”h]”hŒ2.06+”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒ cmdline_size”h]”hŒ cmdline_size”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒ'Maximum size of the kernel command line”h]”hŒ'Maximum size of the kernel command line”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ023C/4”h]”hŒ023C/4”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.07+”h]”hŒ2.07+”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubj&)�”}”(hhh]”hÞ)�”}”(hŒhardware_subarch”h]”hŒhardware_subarch”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubj&)�”}”(hhh]”hÞ)�”}”(hŒHardware subarchitecture”h]”hŒHardware subarchitecture”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0240/8”h]”hŒ0240/8”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.07+”h]”hŒ2.07+”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒubj&)�”}”(hhh]”hÞ)�”}”(hŒhardware_subarch_data”h]”hŒhardware_subarch_data”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒubj&)�”}”(hhh]”hÞ)�”}”(hŒSubarchitecture-specific data”h]”hŒSubarchitecture-specific data”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0248/4”h]”hŒ0248/4”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.08+”h]”hŒ2.08+”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒpayload_offset”h]”hŒpayload_offset”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒOffset of kernel payload”h]”hŒOffset of kernel payload”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ024C/4”h]”hŒ024C/4”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.08+”h]”hŒ2.08+”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒpayload_length”h]”hŒpayload_length”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒLength of kernel payload”h]”hŒLength of kernel payload”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0250/8”h]”hŒ0250/8”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kßhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.09+”h]”hŒ2.09+”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KßhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»ubj&)�”}”(hhh]”hÞ)�”}”(hŒ setup_data”h]”hŒ setup_data”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kßhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»ubj&)�”}”(hhh]”hÞ)�”}”(hŒ;64-bit physical pointer to linked list of struct setup_data”h]”hŒ;64-bit physical pointer to linked list of struct setup_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kßhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0258/8”h]”hŒ0258/8”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Káhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.10+”h]”hŒ2.10+”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Káhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ pref_address”h]”hŒ pref_address”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KáhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒPreferred loading address”h]”hŒPreferred loading address”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Káhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0260/4”h]”hŒ0260/4”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kâhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.10+”h]”hŒ2.10+”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KâhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”hÞ)�”}”(hŒ init_size”h]”hŒ init_size”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kâhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”hÞ)�”}”(hŒ,Linear memory required during initialization”h]”hŒ,Linear memory required during initialization”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KâhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0264/4”h]”hŒ0264/4”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.11+”h]”hŒ2.11+”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubj&)�”}”(hhh]”hÞ)�”}”(hŒhandover_offset”h]”hŒhandover_offset”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubj&)�”}”(hhh]”hÞ)�”}”(hŒOffset of handover entry point”h]”hŒOffset of handover entry point”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0268/4”h]”hŒ0268/4”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KähjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjOubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.15+”h]”hŒ2.15+”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kähjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjOubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_info_offset”h]”hŒkernel_info_offset”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kähj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjOubj&)�”}”(hhh]”hÞ)�”}”(hŒOffset of the kernel_info”h]”hŒOffset of the kernel_info”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kähj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjuh²hh³hÇh´Nubjß)�”}”(hX?(1) For backwards compatibility, if the setup_sects field contains 0, the real value is 4. (2) For boot protocol prior to 2.04, the upper two bytes of the syssize field are unusable, which means the size of a bzImage kernel cannot be determined. (3) Ignored, but safe to set, for boot protocols 2.02-2.09.”h]”hŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒWFor backwards compatibility, if the setup_sects field contains 0, the real value is 4. ”h]”hÞ)�”}”(hŒVFor backwards compatibility, if the setup_sects field contains 0, the real value is 4.”h]”hŒVFor backwards compatibility, if the setup_sects field contains 0, the real value is 4.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KèhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÍubjÑ)�”}”(hŒ—For boot protocol prior to 2.04, the upper two bytes of the syssize field are unusable, which means the size of a bzImage kernel cannot be determined. ”h]”hÞ)�”}”(hŒ–For boot protocol prior to 2.04, the upper two bytes of the syssize field are unusable, which means the size of a bzImage kernel cannot be determined.”h]”hŒ–For boot protocol prior to 2.04, the upper two bytes of the syssize field are unusable, which means the size of a bzImage kernel cannot be determined.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Këhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÍubjÑ)�”}”(hŒ7Ignored, but safe to set, for boot protocols 2.02-2.09.”h]”hÞ)�”}”(hjh]”hŒ7Ignored, but safe to set, for boot protocols 2.02-2.09.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”Œ(”Œsuffix”Œ)”uh1jËhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjuh²hh³Nh´NubhÞ)�”}”(hŒ®If the "HdrS" (0x53726448) magic number is not found at offset 0x202, the boot protocol version is "old". Loading an old kernel, the following parameters should be assumed::”h]”hŒµIf the “HdrSâ€� (0x53726448) magic number is not found at offset 0x202, the boot protocol version is “oldâ€�. Loading an old kernel, the following parameters should be assumed:”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kñhjuh²hubj)�”}”(hŒUImage type = zImage initrd not supported Real-mode kernel must be located at 0x90000.”h]”hŒUImage type = zImage initrd not supported Real-mode kernel must be located at 0x90000.”…”�”}”hj9sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Kõhjuh²hubhÞ)�”}”(hŒïOtherwise, the "version" field contains the protocol version, e.g. protocol version 2.01 will contain 0x0201 in this field. When setting fields in the header, you must make sure only to set fields supported by the protocol version in use.”h]”hŒóOtherwise, the “versionâ€� field contains the protocol version, e.g. protocol version 2.01 will contain 0x0201 in this field. When setting fields in the header, you must make sure only to set fields supported by the protocol version in use.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kùhjuh²hubeh}”(h]”Œthe-real-mode-kernel-header”ah ]”h"]”Œthe real-mode kernel header”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K¬ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDetails of Header Fields”h]”hŒDetails of Header Fields”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj]h²hh³hÇh´MubhÞ)�”}”(hŒÜFor each field, some are information from the kernel to the bootloader ("read"), some are expected to be filled out by the bootloader ("write"), and some are expected to be read and modified by the bootloader ("modify").”h]”hŒèFor each field, some are information from the kernel to the bootloader (“readâ€�), some are expected to be filled out by the bootloader (“writeâ€�), and some are expected to be read and modified by the bootloader (“modifyâ€�).”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj]h²hubhÞ)�”}”(hŒæAll general purpose boot loaders should write the fields marked (obligatory). Boot loaders who want to load the kernel at a nonstandard address should fill in the fields marked (reloc); other boot loaders can ignore those fields.”h]”hŒæAll general purpose boot loaders should write the fields marked (obligatory). Boot loaders who want to load the kernel at a nonstandard address should fill in the fields marked (reloc); other boot loaders can ignore those fields.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj]h²hubhÞ)�”}”(hŒGThe byte order of all fields is little endian (this is x86, after all.)”h]”hŒGThe byte order of all fields is little endian (this is x86, after all.)”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj›ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj›ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjµubj&)�”}”(hhh]”hÞ)�”}”(hŒ setup_sects”h]”hŒ setup_sects”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj²ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjìubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj²ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj#ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1f1/1”h]”hŒ0x1f1/1”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj²ubj!)�”}”(hhh]”(j&)�”}”(•hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´NubhŒ block_quote”“”)�”}”(hŒ¼The size of the setup code in 512-byte sectors. If this field is 0, the real value is 4. The real-mode code consists of the boot sector (always one 512-byte sector) plus the setup code. ”h]”hÞ)�”}”(hŒ»The size of the setup code in 512-byte sectors. If this field is 0, the real value is 4. The real-mode code consists of the boot sector (always one 512-byte sector) plus the setup code.”h]”hŒ»The size of the setup code in 512-byte sectors. If this field is 0, the real value is 4. The real-mode code consists of the boot sector (always one 512-byte sector) plus the setup code.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÁubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÁubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛubj&)�”}”(hhh]”hÞ)�”}”(hŒ root_flags”h]”hŒ root_flags”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjØubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (optional)”h]”hŒmodify (optional)”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjØubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1f2/2”h]”hŒ0x1f2/2”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjØubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ™If this field is nonzero, the root defaults to readonly. The use of this field is deprecated; use the "ro" or "rw" options on the command line instead. ”h]”hÞ)�”}”(hŒ˜If this field is nonzero, the root defaults to readonly. The use of this field is deprecated; use the "ro" or "rw" options on the command line instead.”h]”hŒ If this field is nonzero, the root defaults to readonly. The use of this field is deprecated; use the “roâ€� or “rwâ€� options on the command line instead.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjåubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K/uh1jhjåubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M%hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒsyssize”h]”hŒsyssize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M%hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjmubj&)�”}”(hhh]”hÞ)�”}”(hŒ/0x1f4/4 (protocol 2.04+) 0x1f4/2 (protocol ALL)”h]”hŒ/0x1f4/4 (protocol 2.04+) 0x1f4/2 (protocol ALL)”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M(hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.04+”h]”hŒ2.04+”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M(hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒäThe size of the protected-mode code in units of 16-byte paragraphs. For protocol versions older than 2.04 this field is only two bytes wide, and therefore cannot be trusted for the size of a kernel if the LOAD_HIGH flag is set. ”h]”hÞ)�”}”(hŒãThe size of the protected-mode code in units of 16-byte paragraphs. For protocol versions older than 2.04 this field is only two bytes wide, and therefore cannot be trusted for the size of a kernel if the LOAD_HIGH flag is set.”h]”hŒãThe size of the protected-mode code in units of 16-byte paragraphs. For protocol versions older than 2.04 this field is only two bytes wide, and therefore cannot be trusted for the size of a kernel if the LOAD_HIGH flag is set.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M+hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj#ubj&)�”}”(hhh]”hÞ)�”}”(hŒram_size”h]”hŒram_size”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M2hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel internal”h]”hŒkernel internal”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M2hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M3hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‘ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1f8/2”h]”hŒ0x1f8/2”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M3hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M4hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M4hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒThis field is obsolete. ”h]”hÞ)�”}”(hŒThis field is obsolete.”h]”hŒThis field is obsolete.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M7hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj-ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj-ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M:hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGubj&)�”}”(hhh]”hÞ)�”}”(hŒvid_mode”h]”hŒvid_mode”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M:hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjDubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M;hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj~ubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (obligatory)”h]”hŒmodify (obligatory)”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M;hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjDubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M<hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjµubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1fa/2”h]”hŒ0x1fa/2”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M<hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ8Please see the section on SPECIAL COMMAND LINE OPTIONS. ”h]”hÞ)�”}”(hŒ7Please see the section on SPECIAL COMMAND LINE OPTIONS.”h]”hŒ7Please see the section on SPECIAL COMMAND LINE OPTIONS.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M?hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4ubj&)�”}”(hhh]”hÞ)�”}”(hŒroot_dev”h]”hŒroot_dev”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MChjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjkubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (optional)”h]”hŒmodify (optional)”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MChj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MDhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1fc/2”h]”hŒ0x1fc/2”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MDhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MEhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÙubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MEhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ�The default root device device number. The use of this field is deprecated, use the "root=" option on the command line instead. ”h]”hÞ)�”}”(hŒ€The default root device device number. The use of this field is deprecated, use the "root=" option on the command line instead.”h]”hŒ„The default root device device number. The use of this field is deprecated, use the “root=â€� option on the command line instead.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MHhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MHhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj>ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj>ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MLhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjXubj&)�”}”(hhh]”hÞ)�”}”(hŒ boot_flag”h]”hŒ boot_flag”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MLhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjUubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MMhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MMhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjUubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÆubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x1fe/2”h]”hŒ0x1fe/2”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjUubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MOhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjýubj&)�”}”(hhh]”hÞ)�”}”(hŒALL”h]”hŒALL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MOhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒVContains 0xAA55. This is the closest thing old Linux kernels have to a magic number. ”h]”hÞ)�”}”(hŒUContains 0xAA55. This is the closest thing old Linux kernels have to a magic number.”h]”hŒUContains 0xAA55. This is the closest thing old Linux kernels have to a magic number.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MRhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MRhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjbubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjbubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MVhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj|ubj&)�”}”(hhh]”hÞ)�”}”(hŒjump”h]”hŒjump”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MVhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MWhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj³ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MWhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MXhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x200/2”h]”hŒ0x200/2”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MYhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MYhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ’Contains an x86 jump instruction, 0xEB followed by a signed offset relative to byte 0x202. This can be used to determine the size of the header. ”h]”hÞ)�”}”(hŒ‘Contains an x86 jump instruction, 0xEB followed by a signed offset relative to byte 0x202. This can be used to determine the size of the header.”h]”hŒ‘Contains an x86 jump instruction, 0xEB followed by a signed offset relative to byte 0x202. This can be used to determine the size of the header.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M\hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M\hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj†ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj†ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒheader”h]”hŒheader”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MbhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mbhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mchj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x202/4”h]”hŒ0x202/4”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mchj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MdhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjE ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mdhj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjE ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ/Contains the magic number "HdrS" (0x53726448). ”h]”hÞ)�”}”(hŒ.Contains the magic number "HdrS" (0x53726448).”h]”hŒ2Contains the magic number “HdrSâ€� (0x53726448).”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mghj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mghj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjª ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjª ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MjhjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÄ ubj&)�”}”(hhh]”hÞ)�”}”(hŒversion”h]”hŒversion”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MjhjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÄ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mkhjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjû ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mkhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjû ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj8!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mlhj5!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj2!ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x206/2”h]”hŒ0x206/2”…”�”}”(hjO!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MlhjL!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj2!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjo!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mmhjl!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hji!ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj†!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mmhjƒ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hji!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjª ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ�Contains the boot protocol version, in (major << 8) + minor format, e.g. 0x0204 for version 2.04, and 0x0a11 for a hypothetical version 10.17. ”h]”hÞ)�”}”(hŒŽContains the boot protocol version, in (major << 8) + minor format, e.g. 0x0204 for version 2.04, and 0x0a11 for a hypothetical version 10.17.”h]”hŒŽContains the boot protocol version, in (major << 8) + minor format, e.g. 0x0204 for version 2.04, and 0x0a11 for a hypothetical version 10.17.”…”�”}”(hj·!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mphj³!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mphj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÎ!ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÎ!ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjî!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Muhjë!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjè!ubj&)�”}”(hhh]”hÞ)�”}”(hŒrealmode_swtch”h]”hŒrealmode_swtch”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Muhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjè!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjå!ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj%"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mvhj""ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"ubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (optional)”h]”hŒmodify (optional)”…”�”}”(hj<"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mvhj9"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjå!ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj\"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MwhjY"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjV"ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x208/4”h]”hŒ0x208/4”…”�”}”(hjs"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mwhjp"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjV"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjå!ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj“"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mxhj�"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�"ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjª"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mxhj§"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjå!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjË!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ9Boot loader hook (see ADVANCED BOOT LOADER HOOKS below.) ”h]”hÞ)�”}”(hŒ8Boot loader hook (see ADVANCED BOOT LOADER HOOKS below.)”h]”hŒ8Boot loader hook (see ADVANCED BOOT LOADER HOOKS below.)”…”�”}”(hjÛ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M{hj×"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M{hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjò"ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjò"ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj #ubj&)�”}”(hhh]”hÞ)�”}”(hŒ start_sys_seg”h]”hŒ start_sys_seg”…”�”}”(hj)#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hj&#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj #ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjI#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjF#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC#ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj`#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj]#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjC#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj #ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj€#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M€hj}#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjz#ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x20c/2”h]”hŒ0x20c/2”…”�”}”(hj—#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M€hj”#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjz#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj #ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj·#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj´#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj±#ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjÎ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hjË#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj±#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjò"ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjï"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ*The load low segment (0x1000). Obsolete. ”h]”hÞ)�”}”(hŒ)The load low segment (0x1000). Obsolete.”h]”hŒ)The load low segment (0x1000). Obsolete.”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M„hjû#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M„hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj$ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj$ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj6$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‡hj3$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj0$ubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_version”h]”hŒkernel_version”…”�”}”(hjM$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‡hjJ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj0$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj-$ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjm$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mˆhjj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjg$ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mˆhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjg$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj-$ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj¤$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‰hj¡$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjž$ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x20e/2”h]”hŒ0x20e/2”…”�”}”(hj»$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‰hj¸$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjž$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj-$ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjÛ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhjØ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕ$ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjò$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhjï$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj-$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXYIf set to a nonzero value, contains a pointer to a NUL-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 15 or higher, as:: 0x1c00 < 15 * 0x200 (= 0x1e00) but 0x1c00 >= 14 * 0x200 (= 0x1c00) 0x1c00 >> 9 = 14, So the minimum value for setup_secs is 15. ”h]”(hÞ)�”}”(hŒîIf set to a nonzero value, contains a pointer to a NUL-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).”h]”hŒîIf set to a nonzero value, contains a pointer to a NUL-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).”…”�”}”(hj#%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj%ubhÞ)�”}”(hŒâ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 15 or higher, as::”h]”hŒå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 15 or higher, as:”…”�”}”(hj1%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M’hj%ubj)�”}”(hŒ�0x1c00 < 15 * 0x200 (= 0x1e00) but 0x1c00 >= 14 * 0x200 (= 0x1c00) 0x1c00 >> 9 = 14, So the minimum value for setup_secs is 15.”h]”hŒ�0x1c00 < 15 * 0x200 (= 0x1e00) but 0x1c00 >= 14 * 0x200 (= 0x1c00) 0x1c00 >> 9 = 14, So the minimum value for setup_secs is 15.”…”�”}”hj?%sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M—hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M�hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjV%ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjV%ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hjs%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjp%ubj&)�”}”(hhh]”hÞ)�”}”(hŒtype_of_loader”h]”hŒtype_of_loader”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hjŠ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjp%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjm%ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mžhjª%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj§%ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (obligatory)”h]”hŒwrite (obligatory)”…”�”}”(hjÄ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MžhjÁ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj§%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjm%ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjä%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŸhjá%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ%ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x210/1”h]”hŒ0x210/1”…”�”}”(hjû%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŸhjø%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjm%ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj2&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj/&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjm%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjV%ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjS%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXQIf your boot loader has an assigned ID (see table below), enter 0xTV here, where T is an identifier for the boot loader and V is a version number. Otherwise, enter 0xFF here. For boot loader IDs above T = 0xD, write T = 0xE to this field and write the extended ID minus 0x10 to the ext_loader_type field. Similarly, the ext_loader_ver field can be used to provide more than four bits for the bootloader version. For example, for T = 0x15, V = 0x234, write:: type_of_loader <- 0xE4 ext_loader_type <- 0x05 ext_loader_ver <- 0x23 Assigned boot loader IDs: ==== ======================================= 0x0 LILO (0x00 reserved for pre-2.00 bootloader) 0x1 Loadlin 0x2 bootsect-loader (0x20, all other values reserved) 0x3 Syslinux 0x4 Etherboot/gPXE/iPXE 0x5 ELILO 0x7 GRUB 0x8 U-Boot 0x9 Xen 0xA Gujin 0xB Qemu 0xC Arcturus Networks uCbootloader 0xD kexec-tools 0xE Extended (see ext_loader_type) 0xF Special (0xFF = undefined) 0x10 Reserved 0x11 Minimal Linux Bootloader 0x12 OVMF UEFI virtualization stack 0x13 barebox ==== ======================================= Please contact if you need a bootloader ID value assigned. ”h]”(hÞ)�”}”(hŒ¯If your boot loader has an assigned ID (see table below), enter 0xTV here, where T is an identifier for the boot loader and V is a version number. Otherwise, enter 0xFF here.”h]”hŒ¯If your boot loader has an assigned ID (see table below), enter 0xTV here, where T is an identifier for the boot loader and V is a version number. Otherwise, enter 0xFF here.”…”�”}”(hjc&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M£hj_&ubhÞ)�”}”(hŒìFor boot loader IDs above T = 0xD, write T = 0xE to this field and write the extended ID minus 0x10 to the ext_loader_type field. Similarly, the ext_loader_ver field can be used to provide more than four bits for the bootloader version.”h]”hŒìFor boot loader IDs above T = 0xD, write T = 0xE to this field and write the extended ID minus 0x10 to the ext_loader_type field. Similarly, the ext_loader_ver field can be used to provide more than four bits for the bootloader version.”…”�”}”(hjq&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M§hj_&ubhÞ)�”}”(hŒ-For example, for T = 0x15, V = 0x234, write::”h]”hŒ,For example, for T = 0x15, V = 0x234, write:”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¬hj_&ubj)�”}”(hŒGtype_of_loader <- 0xE4 ext_loader_type <- 0x05 ext_loader_ver <- 0x23”h]”hŒGtype_of_loader <- 0xE4 ext_loader_type <- 0x05 ext_loader_ver <- 0x23”…”�”}”hj�&sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M®hj_&ubhÞ)�”}”(hŒAssigned boot loader IDs:”h]”hŒAssigned boot loader IDs:”…”�”}”(hj›&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M²hj_&ubj¥)�”}”(hX@==== ======================================= 0x0 LILO (0x00 reserved for pre-2.00 bootloader) 0x1 Loadlin 0x2 bootsect-loader (0x20, all other values reserved) 0x3 Syslinux 0x4 Etherboot/gPXE/iPXE 0x5 ELILO 0x7 GRUB 0x8 U-Boot 0x9 Xen 0xA Gujin 0xB Qemu 0xC Arcturus Networks uCbootloader 0xD kexec-tools 0xE Extended (see ext_loader_type) 0xF Special (0xFF = undefined) 0x10 Reserved 0x11 Minimal Linux Bootloader 0x12 OVMF UEFI virtualization stack 0x13 barebox ==== ======================================= ”h]”hü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj°&ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K'uh1jhj°&ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MµhjÍ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÊ&ubj&)�”}”(hhh]”hÞ)�”}”(hŒ,LILO (0x00 reserved for pre-2.00 bootloader)”h]”hŒ,LILO (0x00 reserved for pre-2.00 bootloader)”…”�”}”(hjç&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mµhjä&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÊ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M·hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubj&)�”}”(hhh]”hÞ)�”}”(hŒLoadlin”h]”hŒLoadlin”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M·hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hj;'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8'ubj&)�”}”(hhh]”hÞ)�”}”(hŒ1bootsect-loader (0x20, all other values reserved)”h]”hŒ1bootsect-loader (0x20, all other values reserved)”…”�”}”(hjU'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hjR'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hju'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mºhjr'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjo'ubj&)�”}”(hhh]”hÞ)�”}”(hŒSyslinux”h]”hŒSyslinux”…”�”}”(hjŒ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mºhj‰'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjo'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hj¬'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M»hj©'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦'ubj&)�”}”(hhh]”hÞ)�”}”(hŒEtherboot/gPXE/iPXE”h]”hŒEtherboot/gPXE/iPXE”…”�”}”(hjÃ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M»hjÀ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x5”h]”hŒ0x5”…”�”}”(hjã'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¼hjà'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÝ'ubj&)�”}”(hhh]”hÞ)�”}”(hŒELILO”h]”hŒELILO”…”�”}”(hjú'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¼hj÷'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÝ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x7”h]”hŒ0x7”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M½hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj(ubj&)�”}”(hhh]”hÞ)�”}”(hŒGRUB”h]”hŒGRUB”…”�”}”(hj1(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M½hj.(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hjQ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¾hjN(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjK(ubj&)�”}”(hhh]”hÞ)�”}”(hŒU-Boot”h]”hŒU-Boot”…”�”}”(hjh(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¾hje(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjK(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x9”h]”hŒ0x9”…”�”}”(hjˆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¿hj…(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‚(ubj&)�”}”(hhh]”hÞ)�”}”(hŒXen”h]”hŒXen”…”�”}”(hjŸ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¿hjœ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‚(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xA”h]”hŒ0xA”…”�”}”(hj¿(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÀhj¼(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¹(ubj&)�”}”(hhh]”hÞ)�”}”(hŒGujin”h]”hŒGujin”…”�”}”(hjÖ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÀhjÓ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¹(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xB”h]”hŒ0xB”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÁhjó(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjð(ubj&)�”}”(hhh]”hÞ)�”}”(hŒQemu”h]”hŒQemu”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÁhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjð(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xC”h]”hŒ0xC”…”�”}”(hj-)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÂhj*)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj')ubj&)�”}”(hhh]”hÞ)�”}”(hŒArcturus Networks uCbootloader”h]”hŒArcturus Networks uCbootloader”…”�”}”(hjD)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÂhjA)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj')ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xD”h]”hŒ0xD”…”�”}”(hjd)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÃhja)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj^)ubj&)�”}”(hhh]”hÞ)�”}”(hŒ kexec-tools”h]”hŒ kexec-tools”…”�”}”(hj{)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÃhjx)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj^)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xE”h]”hŒ0xE”…”�”}”(hj›)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÄhj˜)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj•)ubj&)�”}”(hhh]”hÞ)�”}”(hŒExtended (see ext_loader_type)”h]”hŒExtended (see ext_loader_type)”…”�”}”(hj²)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÄhj¯)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj•)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0xF”h]”hŒ0xF”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÅhjÏ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÌ)ubj&)�”}”(hhh]”hÞ)�”}”(hŒSpecial (0xFF = undefined)”h]”hŒSpecial (0xFF = undefined)”…”�”}”(hjé)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÅhjæ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÌ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x10”h]”hŒ0x10”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÆhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj*ubj&)�”}”(hhh]”hÞ)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÆhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x11”h]”hŒ0x11”…”�”}”(hj@*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÇhj=*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:*ubj&)�”}”(hhh]”hÞ)�”}”(hŒ=Minimal Linux Bootloader ”h]”(hŒMinimal Linux Bootloader <”…”�”}”(hjW*h²hh³Nh´NubhŒ reference”“”)�”}”(hŒ"http://sebastian-plotz.blogspot.de”h]”hŒ"http://sebastian-plotz.blogspot.de”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jc*uh1j_*hjW*ubhŒ>”…”�”}”(hjW*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÇhjT*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x12”h]”hŒ0x12”…”�”}”(hjŒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÉhj‰*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†*ubj&)�”}”(hhh]”hÞ)�”}”(hŒOVMF UEFI virtualization stack”h]”hŒOVMF UEFI virtualization stack”…”�”}”(hj£*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÉhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ0x13”h]”hŒ0x13”…”�”}”(hjÃ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÊhjÀ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½*ubj&)�”}”(hhh]”hÞ)�”}”(hŒbarebox”h]”hŒbarebox”…”�”}”(hjÚ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÊhj×*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj°&ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj­&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj©&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M´hj_&ubhÞ)�”}”(hŒJPlease contact if you need a bootloader ID value assigned.”h]”(hŒPlease contact <”…”�”}”(hj +h²hh³Nh´Nubj`*)�”}”(hŒ hpa@zytor.com”h]”hŒ hpa@zytor.com”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:hpa@zytor.com”uh1j_*hj +ubhŒ-> if you need a bootloader ID value assigned.”…”�”}”(hj +h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÍhj_&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M£hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj8+ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj8+ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÐhjU+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjR+ubj&)�”}”(hhh]”hÞ)�”}”(hŒ loadflags”h]”hŒ loadflags”…”�”}”(hjo+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÐhjl+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjR+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjO+ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÑhjŒ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‰+ubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (obligatory)”h]”hŒmodify (obligatory)”…”�”}”(hj¦+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÑhj£+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‰+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjO+ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÆ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÒhjÃ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÀ+ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x211/1”h]”hŒ0x211/1”…”�”}”(hjÝ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÒhjÚ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÀ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjO+ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÓhjú+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj÷+ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÓhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj÷+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjO+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj8+ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj5+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXÄThis field is a bitmask. Bit 0 (read): LOADED_HIGH - If 0, the protected-mode code is loaded at 0x10000. - If 1, the protected-mode code is loaded at 0x100000. Bit 1 (kernel internal): KASLR_FLAG - Used internally by the compressed kernel to communicate KASLR status to kernel proper. - If 1, KASLR enabled. - If 0, KASLR disabled. Bit 5 (write): QUIET_FLAG - If 0, print early messages. - If 1, suppress early messages. This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. Bit 6 (obsolete): KEEP_SEGMENTS Protocol: 2.07+ - This flag is obsolete. Bit 7 (write): CAN_USE_HEAP Set this bit to 1 to indicate that the value entered in the heap_end_ptr is valid. If this field is clear, some setup code functionality will be disabled. ”h]”(hÞ)�”}”(hŒThis field is a bitmask.”h]”hŒThis field is a bitmask.”…”�”}”(hjE,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÖhjA,ubhÞ)�”}”(hŒBit 0 (read): LOADED_HIGH”h]”hŒBit 0 (read): LOADED_HIGH”…”�”}”(hjS,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MØhjA,ubj¥)�”}”(hŒm- If 0, the protected-mode code is loaded at 0x10000. - If 1, the protected-mode code is loaded at 0x100000. ”h]”hŒ bullet_list”“”)�”}”(hhh]”(jÑ)�”}”(hŒ3If 0, the protected-mode code is loaded at 0x10000.”h]”hÞ)�”}”(hjl,h]”hŒ3If 0, the protected-mode code is loaded at 0x10000.”…”�”}”(hjn,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÚhjj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjg,ubjÑ)�”}”(hŒ5If 1, the protected-mode code is loaded at 0x100000. ”h]”hÞ)�”}”(hŒ4If 1, the protected-mode code is loaded at 0x100000.”h]”hŒ4If 1, the protected-mode code is loaded at 0x100000.”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÛhj�,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjg,ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1je,h³hÇh´MÚhja,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÚhjA,ubhÞ)�”}”(hŒ#Bit 1 (kernel internal): KASLR_FLAG”h]”hŒ#Bit 1 (kernel internal): KASLR_FLAG”…”�”}”(hj§,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÝhjA,ubj¥)�”}”(hŒ“- Used internally by the compressed kernel to communicate KASLR status to kernel proper. - If 1, KASLR enabled. - If 0, KASLR disabled. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒ‹Used internally by the compressed kernel to communicate KASLR status to kernel proper. - If 1, KASLR enabled. - If 0, KASLR disabled. ”h]”(hÞ)�”}”(hŒVUsed internally by the compressed kernel to communicate KASLR status to kernel proper.”h]”hŒVUsed internally by the compressed kernel to communicate KASLR status to kernel proper.”…”�”}”(hjÀ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mßhj¼,ubj¥)�”}”(hŒ/- If 1, KASLR enabled. - If 0, KASLR disabled. ”h]”jf,)�”}”(hhh]”(jÑ)�”}”(hŒIf 1, KASLR enabled.”h]”hÞ)�”}”(hj×,h]”hŒIf 1, KASLR enabled.”…”�”}”(hjÙ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MâhjÕ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÒ,ubjÑ)�”}”(hŒIf 0, KASLR disabled. ”h]”hÞ)�”}”(hŒIf 0, KASLR disabled.”h]”hŒIf 0, KASLR disabled.”…”�”}”(hjð,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mãhjì,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÒ,ubeh}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MâhjÎ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mâhj¼,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÐhj¹,ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´Mßhjµ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MßhjA,ubhÞ)�”}”(hŒBit 5 (write): QUIET_FLAG”h]”hŒBit 5 (write): QUIET_FLAG”…”�”}”(hj"-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MåhjA,ubj¥)�”}”(hŒæ- If 0, print early messages. - If 1, suppress early messages. This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. ”h]”jf,)�”}”(hhh]”(jÑ)�”}”(hŒIf 0, print early messages.”h]”hÞ)�”}”(hj9-h]”hŒIf 0, print early messages.”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mçhj7-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhj4-ubjÑ)�”}”(hŒÀIf 1, suppress early messages. This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. ”h]”(hÞ)�”}”(hŒIf 1, suppress early messages.”h]”hŒIf 1, suppress early messages.”…”�”}”(hjR-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MèhjN-ubj¥)�”}”(hŒŽThis requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly. ”h]”hÞ)�”}”(hŒ�This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly.”h]”hŒ�This requests to the kernel (decompressor and early kernel) to not write early messages that require accessing the display hardware directly.”…”�”}”(hjd-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mêhj`-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MêhjN-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÐhj4-ubeh}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´Mçhj0-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MçhjA,ubhÞ)�”}”(hŒBit 6 (obsolete): KEEP_SEGMENTS”h]”hŒBit 6 (obsolete): KEEP_SEGMENTS”…”�”}”(hjŠ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MîhjA,ubj¥)�”}”(hŒ*Protocol: 2.07+ - This flag is obsolete. ”h]”(hÞ)�”}”(hŒProtocol: 2.07+”h]”hŒProtocol: 2.07+”…”�”}”(hjœ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mðhj˜-ubjf,)�”}”(hhh]”jÑ)�”}”(hŒThis flag is obsolete. ”h]”hÞ)�”}”(hŒThis flag is obsolete.”h]”hŒThis flag is obsolete.”…”�”}”(hj±-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mòhj­-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjª-ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´Mòhj˜-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MðhjA,ubhÞ)�”}”(hŒBit 7 (write): CAN_USE_HEAP”h]”hŒBit 7 (write): CAN_USE_HEAP”…”�”}”(hjÑ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MôhjA,ubj¥)�”}”(hŒ�Set this bit to 1 to indicate that the value entered in the heap_end_ptr is valid. If this field is clear, some setup code functionality will be disabled. ”h]”hÞ)�”}”(hŒ›Set this bit to 1 to indicate that the value entered in the heap_end_ptr is valid. If this field is clear, some setup code functionality will be disabled.”h]”hŒ›Set this bit to 1 to indicate that the value entered in the heap_end_ptr is valid. If this field is clear, some setup code functionality will be disabled.”…”�”}”(hjã-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Möhjß-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MöhjA,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÖhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj.ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj.ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mühj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒsetup_move_size”h]”hŒsetup_move_size”…”�”}”(hj7.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mühj4.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjW.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MýhjT.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQ.ubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (obligatory)”h]”hŒmodify (obligatory)”…”�”}”(hjn.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mýhjk.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjŽ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mþhj‹.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x212/2”h]”hŒ0x212/2”…”�”}”(hj¥.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mþhj¢.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjÅ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÿhjÂ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¿.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ 2.00-2.01”h]”hŒ 2.00-2.01”…”�”}”(hjÜ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÿhjÙ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¿.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjý-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXÀWhen using protocol 2.00 or 2.01, if the real mode kernel is not loaded at 0x90000, it gets moved there later in the loading sequence. Fill in this field if you want additional data (such as the kernel command line) moved in addition to the real-mode kernel itself. The unit is bytes starting with the beginning of the boot sector. This field is can be ignored when the protocol is 2.02 or higher, or if the real-mode code is loaded at 0x90000. ”h]”(hÞ)�”}”(hX When using protocol 2.00 or 2.01, if the real mode kernel is not loaded at 0x90000, it gets moved there later in the loading sequence. Fill in this field if you want additional data (such as the kernel command line) moved in addition to the real-mode kernel itself.”h]”hX When using protocol 2.00 or 2.01, if the real mode kernel is not loaded at 0x90000, it gets moved there later in the loading sequence. Fill in this field if you want additional data (such as the kernel command line) moved in addition to the real-mode kernel itself.”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj /ubhÞ)�”}”(hŒAThe unit is bytes starting with the beginning of the boot sector.”h]”hŒAThe unit is bytes starting with the beginning of the boot sector.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj /ubhÞ)�”}”(hŒpThis field is can be ignored when the protocol is 2.02 or higher, or if the real-mode code is loaded at 0x90000.”h]”hŒpThis field is can be ignored when the protocol is 2.02 or higher, or if the real-mode code is loaded at 0x90000.”…”�”}”(hj)/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj /ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj@/ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj@/ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj`/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj]/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZ/ubj&)�”}”(hhh]”hÞ)�”}”(hŒ code32_start”h]”hŒ code32_start”…”�”}”(hjw/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjt/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjZ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjW/ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj—/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj”/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‘/ubj&)�”}”(hhh]”hÞ)�”}”(hŒmodify (optional, reloc)”h]”hŒmodify (optional, reloc)”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj«/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‘/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjW/ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÎ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjË/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈ/ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x214/4”h]”hŒ0x214/4”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjâ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjW/ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿ/ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjW/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj@/ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj=/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXÉThe address to jump to in protected mode. This defaults to the load address of the kernel, and can be used by the boot loader to determine the proper load address. This field can be modified for two purposes: 1. as a boot loader hook (see Advanced Boot Loader Hooks below.) 2. if a bootloader which does not install a hook loads a relocatable kernel at a nonstandard address it will have to modify this field to point to the load address. ”h]”(hÞ)�”}”(hŒ¤The address to jump to in protected mode. This defaults to the load address of the kernel, and can be used by the boot loader to determine the proper load address.”h]”hŒ¤The address to jump to in protected mode. This defaults to the load address of the kernel, and can be used by the boot loader to determine the proper load address.”…”�”}”(hjM0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjI0ubhÞ)�”}”(hŒ,This field can be modified for two purposes:”h]”hŒ,This field can be modified for two purposes:”…”�”}”(hj[0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjI0ubj¥)�”}”(hŒí1. as a boot loader hook (see Advanced Boot Loader Hooks below.) 2. if a bootloader which does not install a hook loads a relocatable kernel at a nonstandard address it will have to modify this field to point to the load address. ”h]”jÌ)�”}”(hhh]”(jÑ)�”}”(hŒ>as a boot loader hook (see Advanced Boot Loader Hooks below.) ”h]”hÞ)�”}”(hŒ=as a boot loader hook (see Advanced Boot Loader Hooks below.)”h]”hŒ=as a boot loader hook (see Advanced Boot Loader Hooks below.)”…”�”}”(hjt0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjp0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjm0ubjÑ)�”}”(hŒ¢if a bootloader which does not install a hook loads a relocatable kernel at a nonstandard address it will have to modify this field to point to the load address. ”h]”hÞ)�”}”(hŒ¡if a bootloader which does not install a hook loads a relocatable kernel at a nonstandard address it will have to modify this field to point to the load address.”h]”hŒ¡if a bootloader which does not install a hook loads a relocatable kernel at a nonstandard address it will have to modify this field to point to the load address.”…”�”}”(hjŒ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjˆ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjm0ubeh}”(h]”h ]”h"]”h$]”h&]”jj j!hj#Œ.”uh1jËhji0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MhjI0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj¶0ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj¶0ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjÖ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjÓ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ0ubj&)�”}”(hhh]”hÞ)�”}”(hŒ ramdisk_image”h]”hŒ ramdisk_image”…”�”}”(hjí0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjê0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÐ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ0ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (obligatory)”h]”hŒwrite (obligatory)”…”�”}”(hj$1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hj!1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1ube•h}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ0ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjD1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M#hjA1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>1ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x218/4”h]”hŒ0x218/4”…”�”}”(hj[1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M#hjX1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ0ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj{1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M$hjx1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hju1ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M$hj�1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hju1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶0ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj³0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒpThe 32-bit linear address of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs. ”h]”hÞ)�”}”(hŒoThe 32-bit linear address of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs.”h]”hŒoThe 32-bit linear address of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs.”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hj¿1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M'hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÚ1ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÚ1ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjú1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hj÷1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjô1ubj&)�”}”(hhh]”hÞ)�”}”(hŒ ramdisk_size”h]”hŒ ramdisk_size”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjô1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj12h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M,hj.2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj+2ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (obligatory)”h]”hŒwrite (obligatory)”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M,hjE2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj+2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M-hje2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjb2ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x21c/4”h]”hŒ0x21c/4”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M-hj|2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjb2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ1ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjŸ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M.hjœ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj™2ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hj¶2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M.hj³2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj™2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj×1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ[Size of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs. ”h]”hÞ)�”}”(hŒZSize of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs.”h]”hŒZSize of the initial ramdisk or ramfs. Leave at zero if there is no initial ramdisk/ramfs.”…”�”}”(hjç2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hjã2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M1hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjþ2ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjþ2ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M5hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3ubj&)�”}”(hhh]”hÞ)�”}”(hŒbootsect_kludge”h]”hŒbootsect_kludge”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M5hj23ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjU3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M6hjR3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjO3ubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel internal”h]”hŒkernel internal”…”�”}”(hjl3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M6hji3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjO3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjŒ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hj‰3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†3ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x220/4”h]”hŒ0x220/4”…”�”}”(hj£3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hj 3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjÃ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M8hjÀ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½3ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.00+”h]”hŒ2.00+”…”�”}”(hjÚ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M8hj×3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjû2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒThis field is obsolete. ”h]”hÞ)�”}”(hŒThis field is obsolete.”h]”hŒThis field is obsolete.”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M;hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M;hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj"4ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj"4ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M>hj?4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj<4ubj&)�”}”(hhh]”hÞ)�”}”(hŒ heap_end_ptr”h]”hŒ heap_end_ptr”…”�”}”(hjY4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M>hjV4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj<4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj94ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjy4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hjv4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjs4ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (obligatory)”h]”hŒwrite (obligatory)”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjs4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj94ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M@hj­4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjª4ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x224/2”h]”hŒ0x224/2”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M@hjÄ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjª4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj94ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MAhjä4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjá4ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.01+”h]”hŒ2.01+”…”�”}”(hjþ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MAhjû4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjá4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj94ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj"4ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒzSet this field to the offset (from the beginning of the real-mode code) of the end of the setup stack/heap, minus 0x0200. ”h]”hÞ)�”}”(hŒySet this field to the offset (from the beginning of the real-mode code) of the end of the setup stack/heap, minus 0x0200.”h]”hŒySet this field to the offset (from the beginning of the real-mode code) of the end of the setup stack/heap, minus 0x0200.”…”�”}”(hj/5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MDhj+5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MDhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjF5ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjF5ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjf5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MHhjc5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj`5ubj&)�”}”(hhh]”hÞ)�”}”(hŒext_loader_ver”h]”hŒext_loader_ver”…”�”}”(hj}5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MHhjz5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj`5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj]5ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MIhjš5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj—5ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (optional)”h]”hŒwrite (optional)”…”�”}”(hj´5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MIhj±5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj—5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj]5ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÔ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MJhjÑ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÎ5ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x226/1”h]”hŒ0x226/1”…”�”}”(hjë5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MJhjè5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÎ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj]5ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+”h]”hŒ2.02+”…”�”}”(hj"6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj]5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjF5ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjC5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXvThis field is used as an extension of the version number in the type_of_loader field. The total version number is considered to be (type_of_loader & 0x0f) + (ext_loader_ver << 4). The use of this field is boot loader specific. If not written, it is zero. Kernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher. ”h]”(hÞ)�”}”(hŒ´This field is used as an extension of the version number in the type_of_loader field. The total version number is considered to be (type_of_loader & 0x0f) + (ext_loader_ver << 4).”h]”hŒ´This field is used as an extension of the version number in the type_of_loader field. The total version number is considered to be (type_of_loader & 0x0f) + (ext_loader_ver << 4).”…”�”}”(hjS6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhjO6ubhÞ)�”}”(hŒKThe use of this field is boot loader specific. If not written, it is zero.”h]”hŒKThe use of this field is boot loader specific. If not written, it is zero.”…”�”}”(hja6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MRhjO6ubhÞ)�”}”(hŒrKernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher.”h]”hŒrKernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher.”…”�”}”(hjo6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MUhjO6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MNhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj†6ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K5uh1jhj†6ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj¦6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MYhj£6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj 6ubj&)�”}”(hhh]”hÞ)�”}”(hŒext_loader_type”h]”hŒext_loader_type”…”�”}”(hj½6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MYhjº6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj 6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�6ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjÝ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MZhjÚ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×6ubj&)�”}”(hhh]”hÞ)�”}”(hŒ5write (obligatory if (type_of_loader & 0xf0) == 0xe0)”h]”hŒ5write (obligatory if (type_of_loader & 0xf0) == 0xe0)”…”�”}”(hjô6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MZhjñ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�6ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M[hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x227/1”h]”hŒ0x227/1”…”�”}”(hj+7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M[hj(7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�6ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjK7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M\hjH7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjE7ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+”h]”hŒ2.02+”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M\hj_7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjE7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj†6ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjƒ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hX]This field is used as an extension of the type number in type_of_loader field. If the type in type_of_loader is 0xE, then the actual type is (ext_loader_type + 0x10). This field is ignored if the type in type_of_loader is not 0xE. Kernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher. ”h]”(hÞ)�”}”(hŒ§This field is used as an extension of the type number in type_of_loader field. If the type in type_of_loader is 0xE, then the actual type is (ext_loader_type + 0x10).”h]”hŒ§This field is used as an extension of the type number in type_of_loader field. If the type in type_of_loader is 0xE, then the actual type is (ext_loader_type + 0x10).”…”�”}”(hj“7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M_hj�7ubhÞ)�”}”(hŒ?This field is ignored if the type in type_of_loader is not 0xE.”h]”hŒ?This field is ignored if the type in type_of_loader is not 0xE.”…”�”}”(hj¡7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mchj�7ubhÞ)�”}”(hŒrKernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher.”h]”hŒrKernels prior to 2.6.31 did not recognize this field, but it is safe to write for protocol version 2.02 or higher.”…”�”}”(hj¯7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mehj�7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M_hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÆ7ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÆ7ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjæ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihjã7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjà7ubj&)�”}”(hhh]”hÞ)�”}”(hŒ cmd_line_ptr”h]”hŒ cmd_line_ptr”…”�”}”(hjý7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihjú7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjà7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝ7ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mjhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8ubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (obligatory)”h]”hŒwrite (obligatory)”…”�”}”(hj48h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mjhj18ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝ7ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjT8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MkhjQ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjN8ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x228/4”h]”hŒ0x228/4”…”�”}”(hjk8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mkhjh8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjN8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝ7ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj‹8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mlhjˆ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…8ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.02+”h]”hŒ2.02+”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MlhjŸ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjÃ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXSet this field to the linear address of the kernel command line. The kernel command line can be located anywhere between the end of the setup heap and 0xA0000; it does not have to be located in the same 64K segment as the real-mode code itself. Fill in this field even if your boot loader does not support a command line, in which case you can point this to an empty string (or better yet, to the string "auto".) If this field is left at zero, the kernel will assume that your boot loader does not support the 2.02+ protocol. ”h]”(hÞ)�”}”(hŒôSet this field to the linear address of the kernel command line. The kernel command line can be located anywhere between the end of the setup heap and 0xA0000; it does not have to be located in the same 64K segment as the real-mode code itself.”h]”hŒôSet this field to the linear address of the kernel command line. The kernel command line can be located anywhere between the end of the setup heap and 0xA0000; it does not have to be located in the same 64K segment as the real-mode code itself.”…”�”}”(hjÓ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MohjÏ8ubhÞ)�”}”(hXFill in this field even if your boot loader does not support a command line, in which case you can point this to an empty string (or better yet, to the string "auto".) If this field is left at zero, the kernel will assume that your boot loader does not support the 2.02+ protocol.”h]”hXFill in this field even if your boot loader does not support a command line, in which case you can point this to an empty string (or better yet, to the string “autoâ€�.) If this field is left at zero, the kernel will assume that your boot loader does not support the 2.02+ protocol.”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MthjÏ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mohj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjø8ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjø8ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M{hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9ubj&)�”}”(hhh]”hÞ)�”}”(hŒinitrd_addr_max”h]”hŒinitrd_addr_max”…”�”}”(hj/9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M{hj,9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjO9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M|hjL9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjI9ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hjf9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M|hjc9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjI9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj†9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M}hjƒ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€9ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x22c/4”h]”hŒ0x22c/4”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M}hjš9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj€9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj½9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hjº9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj·9ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.03+”h]”hŒ2.03+”…”�”}”(hjÔ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hjÑ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj·9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjø8ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjõ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXsThe maximum address that may be occupied by the initial ramdisk/ramfs contents. For boot protocols 2.02 or earlier, this field is not present, and the maximum address is 0x37FFFFFF. (This address is defined as the address of the highest safe byte, so if your ramdisk is exactly 131072 bytes long and this field is 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.) ”h]”hÞ)�”}”(hXrThe maximum address that may be occupied by the initial ramdisk/ramfs contents. For boot protocols 2.02 or earlier, this field is not present, and the maximum address is 0x37FFFFFF. (This address is defined as the address of the highest safe byte, so if your ramdisk is exactly 131072 bytes long and this field is 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.)”h]”hXrThe maximum address that may be occupied by the initial ramdisk/ramfs contents. For boot protocols 2.02 or earlier, this field is not present, and the maximum address is 0x37FFFFFF. (This address is defined as the address of the highest safe byte, so if your ramdisk is exactly 131072 bytes long and this field is 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.)”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M�hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj:ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj:ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj<:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‰hj9:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6:ubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_alignment”h]”hŒkernel_alignment”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‰hjP:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj6:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3:ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjs:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhjp:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjm:ubj&)�”}”(hhh]”hÞ)�”}”(hŒread/modify (reloc)”h]”hŒread/modify (reloc)”…”�”}”(hjŠ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhj‡:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjm:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3:ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjª:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‹hj§:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤:ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x230/4”h]”hŒ0x230/4”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‹hj¾:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3:ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjá:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŒhjÞ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛ:ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.05+ (read), 2.10+ (modify)”h]”hŒ2.05+ (read), 2.10+ (modify)”…”�”}”(hjø:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŒhjõ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj3:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXÈAlignment unit required by the kernel (if relocatable_kernel is true.) A relocatable kernel that is loaded at an alignment incompatible with the value in this field will be realigned during kernel initialization. Starting with protocol version 2.10, this reflects the kernel alignment preferred for optimal performance; it is possible for the loader to modify this field to permit a lesser alignment. See the min_alignment and pref_address field below. ”h]”(hÞ)�”}”(hŒÕAlignment unit required by the kernel (if relocatable_kernel is true.) A relocatable kernel that is loaded at an alignment incompatible with the value in this field will be realigned during kernel initialization.”h]”hŒÕAlignment unit required by the kernel (if relocatable_kernel is true.) A relocatable kernel that is loaded at an alignment incompatible with the value in this field will be realigned during kernel initialization.”…”�”}”(hj);h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj%;ubhÞ)�”}”(hŒðStarting with protocol version 2.10, this reflects the kernel alignment preferred for optimal performance; it is possible for the loader to modify this field to permit a lesser alignment. See the min_alignment and pref_address field below.”h]”hŒðStarting with protocol version 2.10, this reflects the kernel alignment preferred for optimal performance; it is possible for the loader to modify this field to permit a lesser alignment. See the min_alignment and pref_address field below.”…”�”}”(hj7;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M”hj%;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M�hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjN;ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjN;ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjn;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mšhjk;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjh;ubj&)�”}”(hhh]”hÞ)�”}”(hŒrelocatable_kernel”h]”hŒrelocatable_kernel”…”�”}”(hj…;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mšhj‚;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjh;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hje;ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj¥;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M›hj¢;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸ;ubj&)�”}”(hhh]”hÞ)�”}”(hŒ read (reloc)”h]”hŒ read (reloc)”…”�”}”(hj¼;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M›hj¹;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hje;ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÜ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MœhjÙ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖ;ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x234/1”h]”hŒ0x234/1”…”�”}”(hjó;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mœhjð;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hje;ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj <ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.05+”h]”hŒ2.05+”…”�”}”(hj*<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hj'<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj <ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hje;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjN;ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjK;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒþIf this field is nonzero, the protected-mode part of the kernel can be loaded at any address that satisfies the kernel_alignment field. After loading, the boot loader must set the code32_start field to point to the loaded code, or to a boot loader hook. ”h]”hÞ)�”}”(hŒýIf this field is nonzero, the protected-mode part of the kernel can be loaded at any address that satisfies the kernel_alignment field. After loading, the boot loader must set the code32_start field to point to the loaded code, or to a boot loader hook.”h]”hŒýIf this field is nonzero, the protected-mode part of the kernel can be loaded at any address that satisfies the kernel_alignment field. After loading, the boot loader must set the code32_start field to point to the loaded code, or to a boot loader hook.”…”�”}”(hj[<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hjW<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjr<ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjr<ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj’<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¦hj�<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒ<ubj&)�”}”(hhh]”hÞ)�”}”(hŒ min_alignment”h]”hŒ min_alignment”…”�”}”(hj©<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¦hj¦<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰<ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjÉ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M§hjÆ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÃ<ubj&)�”}”(hhh]”hÞ)�”}”(hŒ read (reloc)”h]”hŒ read (reloc)”…”�”}”(hjà<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M§hjÝ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÃ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰<ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¨hjý<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjú<ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x235/1”h]”hŒ0x235/1”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¨hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjú<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰<ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M©hj4=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1=ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.10+”h]”hŒ2.10+”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M©hjK=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjr<ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjo<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXùThis field, if nonzero, indicates as a power of two the minimum alignment required, as opposed to preferred, by the kernel to boot. If a boot loader makes use of this field, it should update the kernel_alignment field with the alignment unit desired; typically:: kernel_alignment = 1 << min_alignment; There may be a considerable performance cost with an excessively misaligned kernel. Therefore, a loader should typically try each power-of-two alignment from kernel_alignment down to this alignment. ”h]”(hÞ)�”}”(hXThis field, if nonzero, indicates as a power of two the minimum alignment required, as opposed to preferred, by the kernel to boot. If a boot loader makes use of this field, it should update the kernel_alignment field with the alignment unit desired; typically::”h]”hXThis field, if nonzero, indicates as a power of two the minimum alignment required, as opposed to preferred, by the kernel to boot. If a boot loader makes use of this field, it should update the kernel_alignment field with the alignment unit desired; typically:”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¬hj{=ubj)�”}”(hŒ&kernel_alignment = 1 << min_alignment;”h]”hŒ&kernel_alignment = 1 << min_alignment;”…”�”}”hj�=sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M±hj{=ubhÞ)�”}”(hŒÇThere may be a considerable performance cost with an excessively misaligned kernel. Therefore, a loader should typically try each power-of-two alignment from kernel_alignment down to this alignment.”h]”hŒÇThere may be a considerable performance cost with an excessively misaligned kernel. Therefore, a loader should typically try each power-of-two alignment from kernel_alignment down to this alignment.”…”�”}”(hj›=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M³hj{=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M¬hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj²=ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj²=ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hjÏ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÌ=ubj&)�”}”(hhh]”hÞ)�”}”(hŒ xloadflags”h]”hŒ xloadflags”…”�”}”(hjé=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hjæ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÌ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉ=ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¹hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¹hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉ=ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj@>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mºhj=>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:>ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x236/2”h]”hŒ0x236/2”…”�”}”(hjW>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MºhjT>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉ=ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjw>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M»hjt>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjq>ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.12+”h]”hŒ2.12+”…”�”}”(hjŽ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M»hj‹>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjq>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj²=ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj¯=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXrThis field is a bitmask. Bit 0 (read): XLF_KERNEL_64 - If 1, this kernel has the legacy 64-bit entry point at 0x200. Bit 1 (read): XLF_CAN_BE_LOADED_ABOVE_4G - If 1, kernel/boot_params/cmdline/ramdisk can be above 4G. Bit 2 (read): XLF_EFI_HANDOVER_32 - If 1, the kernel supports the 32-bit EFI handoff entry point given at handover_offset. Bit 3 (read): XLF_EFI_HANDOVER_64 - If 1, the kernel supports the 64-bit EFI handoff entry point given at handover_offset + 0x200. Bit 4 (read): XLF_EFI_KEXEC - If 1, the kernel supports kexec EFI boot with EFI runtime support. ”h]”(hÞ)�”}”(hŒThis field is a bitmask.”h]”hŒThis field is a bitmask.”…”�”}”(hj¿>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¾hj»>ubhÞ)�”}”(hŒBit 0 (read): XLF_KERNEL_64”h]”hŒBit 0 (read): XLF_KERNEL_64”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÀhj»>ubj¥)�”}”(hŒ@- If 1, this kernel has the legacy 64-bit entry point at 0x200. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒ>If 1, this kernel has the legacy 64-bit entry point at 0x200. ”h]”hÞ)�”}”(hŒ=If 1, this kernel has the legacy 64-bit entry point at 0x200.”h]”hŒ=If 1, this kernel has the legacy 64-bit entry point at 0x200.”…”�”}”(hjæ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÂhjâ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjß>ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MÂhjÛ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÂhj»>ubhÞ)�”}”(hŒ(Bit 1 (read): XLF_CAN_BE_LOADED_ABOVE_4G”h]”hŒ(Bit 1 (read): XLF_CAN_BE_LOADED_ABOVE_4G”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÄhj»>ubj¥)�”}”(hŒ<- If 1, kernel/boot_params/cmdline/ramdisk can be above 4G. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒ:If 1, kernel/boot_params/cmdline/ramdisk can be above 4G. ”h]”hÞ)�”}”(hŒ9If 1, kernel/boot_params/cmdline/ramdisk can be above 4G.”h]”hŒ9If 1, kernel/boot_params/cmdline/ramdisk can be above 4G.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÆhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhj?ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MÆhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÆhj»>ubhÞ)�”}”(hŒ!Bit 2 (read): XLF_EFI_HANDOVER_32”h]”hŒ!Bit 2 (read): XLF_EFI_HANDOVER_32”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÈhj»>ubj¥)�”}”(hŒ[- If 1, the kernel supports the 32-bit EFI handoff entry point given at handover_offset. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒWIf 1, the kernel supports the 32-bit EFI handoff entry point given at handover_offset. ”h]”hÞ)�”}”(hŒVIf 1, the kernel supports the 32-bit EFI handoff entry point given at handover_offset.”h]”hŒVIf 1, the kernel supports the 32-bit EFI handoff entry point given at handover_offset.”…”�”}”(hjX?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÊhjT?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjQ?ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MÊhjM?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÊhj»>ubhÞ)�”}”(hŒ!Bit 3 (read): XLF_EFI_HANDOVER_64”h]”hŒ!Bit 3 (read): XLF_EFI_HANDOVER_64”…”�”}”(hjx?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÍhj»>ubj¥)�”}”(hŒc- If 1, the kernel supports the 64-bit EFI handoff entry point given at handover_offset + 0x200. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒ_If 1, the kernel supports the 64-bit EFI handoff entry point given at handover_offset + 0x200. ”h]”hÞ)�”}”(hŒ^If 1, the kernel supports the 64-bit EFI handoff entry point given at handover_offset + 0x200.”h]”hŒ^If 1, the kernel supports the 64-bit EFI handoff entry point given at handover_offset + 0x200.”…”�”}”(hj‘?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÏhj�?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjŠ?ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MÏhj†?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÏhj»>ubhÞ)�”}”(hŒBit 4 (read): XLF_EFI_KEXEC”h]”hŒBit 4 (read): XLF_EFI_KEXEC”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÒhj»>ubj¥)�”}”(hŒF- If 1, the kernel supports kexec EFI boot with EFI runtime support. ”h]”jf,)�”}”(hhh]”jÑ)�”}”(hŒDIf 1, the kernel supports kexec EFI boot with EFI runtime support. ”h]”hÞ)�”}”(hŒBIf 1, the kernel supports kexec EFI boot with EFI runtime support.”h]”hŒBIf 1, the kernel supports kexec EFI boot with EFI runtime support.”…”�”}”(hjÊ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÔhjÆ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐhjÃ?ubah}”(h]”h ]”h"]”h$]”h&]”jŸ,j ,uh1je,h³hÇh´MÔhj¿?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÔhj»>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M¾hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjó?ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjó?ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MØhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj @ubj&)�”}”(hhh]”hÞ)�”}”(hŒ cmdline_size”h]”hŒ cmdline_size”…”�”}”(hj*@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MØhj'@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj @ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj @ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjJ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÙhjG@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjD@ubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hja@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÙhj^@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjD@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj @ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÚhj~@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj{@ubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x238/4”h]”hŒ0x238/4”…”�”}”(hj˜@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÚhj•@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj{@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj @ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj¸@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÛhjµ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj²@ubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.06+”h]”hŒ2.06+”…”�”}”(hjÏ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÛhjÌ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj²@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj @ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjó?ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjð?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒÓThe maximum size of the command line without the terminating zero. This means that the command line can contain at most cmdline_size characters. With protocol version 2.05 and earlier, the maximum size was 255. ”h]”hÞ)�”}”(hŒÒThe maximum size of the command line without the terminating zero. This means that the command line can contain at most cmdline_size characters. With protocol version 2.05 and earlier, the maximum size was 255.”h]”hŒÒThe maximum size of the command line without the terminating zero. This means that the command line can contain at most cmdline_size characters. With protocol version 2.05 and earlier, the maximum size was 255.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÞhjü@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÞhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjAubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K$uh1jhjAubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj7Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mähj4Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1Aubj&)�”}”(hhh]”hÞ)�”}”(hŒhardware_subarch”h]”hŒhardware_subarch”…”�”}”(hjNAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MähjKAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Aubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjnAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MåhjkAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhAubj&)�”}”(hhh]”hÞ)�”}”(hŒ$write (optional, defaults to x86/PC)”h]”hŒ$write (optional, defaults to x86/PC)”…”�”}”(hj…Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Måhj‚Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Aubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj¥Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mæhj¢Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸAubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x23c/4”h]”hŒ0x23c/4”…”�”}”(hj¼Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mæhj¹Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Aubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjÜAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MçhjÙAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖAubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.07+”h]”hŒ2.07+”…”�”}”(hjóAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MçhjðAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hX>In a paravirtualized environment the hardware low level architectural pieces such as interrupt handling, page table handling, and accessing process control registers needs to be done differently. This field allows the bootloader to inform the kernel we are in one one of those environments. ========== ============================== 0x00000000 The default x86/PC environment 0x00000001 lguest 0x00000002 Xen 0x00000003 Intel MID (Moorestown, CloverTrail, Merrifield, Moorefield) 0x00000004 CE4100 TV Platform ========== ============================== ”h]”(hÞ)�”}”(hŒÃIn a paravirtualized environment the hardware low level architectural pieces such as interrupt handling, page table handling, and accessing process control registers needs to be done differently.”h]”hŒÃIn a paravirtualized environment the hardware low level architectural pieces such as interrupt handling, page table handling, and accessing process control registers needs to be done differently.”…”�”}”(hj$Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mêhj BubhÞ)�”}”(hŒ^This field allows the bootloader to inform the kernel we are in one one of those environments.”h]”hŒ^This field allows the bootloader to inform the kernel we are in one one of those environments.”…”�”}”(hj2Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mîhj Bubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjCBubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K;uh1jhjCBubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ 0x00000000”h]”hŒ 0x00000000”…”�”}”(hjcBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mòhj`Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]Bubj&)�”}”(hhh]”hÞ)�”}”(hŒThe default x86/PC environment”h]”hŒThe default x86/PC environment”…”�”}”(hjzBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MòhjwBubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjZBubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ 0x00000001”h]”hŒ 0x00000001”…”�”}”(hjšBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Móhj—Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”Bubj&)�”}”(hhh]”hÞ)�”}”(hŒlguest”h]”hŒlguest”…”�”}”(hj±Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Móhj®Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjZBubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ 0x00000002”h]”hŒ 0x00000002”…”�”}”(hjÑBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MôhjÎBubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjËBubj&)�”}”(hhh]”hÞ)�”}”(hŒXen”h]”hŒXen”…”�”}”(hjèBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MôhjåBubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjËBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjZBubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ 0x00000003”h]”hŒ 0x00000003”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MõhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjCubj&)�”}”(hhh]”hÞ)�”}”(hŒ;Intel MID (Moorestown, CloverTrail, Merrifield, Moorefield)”h]”hŒ;Intel MID (Moorestown, CloverTrail, Merrifield, Moorefield)”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MõhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjZBubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ 0x00000004”h]”hŒ 0x00000004”…”�”}”(hj?Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MöhjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj;Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8Eubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x248/4”h]”hŒ0x248/4”…”�”}”(hjUEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjREubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj8Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇDubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjuEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjrEubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjoEubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.08+”h]”hŒ2.08+”…”�”}”(hjŒEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj‰Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjoEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj°Dubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj­Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hX(If non-zero then this field contains the offset from the beginning of the protected-mode code to the payload. The payload may be compressed. The format of both the compressed and uncompressed data should be determined using the standard magic numbers. The currently supported compression formats are gzip (magic numbers 1F 8B or 1F 9E), bzip2 (magic number 42 5A), LZMA (magic number 5D 00), XZ (magic number FD 37), LZ4 (magic number 02 21) and ZSTD (magic number 28 B5). The uncompressed payload is currently always ELF (magic number 7F 45 4C 46). ”h]”(hÞ)�”}”(hŒmIf non-zero then this field contains the offset from the beginning of the protected-mode code to the payload.”h]”hŒmIf non-zero then this field contains the offset from the beginning of the protected-mode code to the payload.”…”�”}”(hj½Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj¹EubhÞ)�”}”(hX¸The payload may be compressed. The format of both the compressed and uncompressed data should be determined using the standard magic numbers. The currently supported compression formats are gzip (magic numbers 1F 8B or 1F 9E), bzip2 (magic number 42 5A), LZMA (magic number 5D 00), XZ (magic number FD 37), LZ4 (magic number 02 21) and ZSTD (magic number 28 B5). The uncompressed payload is currently always ELF (magic number 7F 45 4C 46).”h]”hX¸The payload may be compressed. The format of both the compressed and uncompressed data should be determined using the standard magic numbers. The currently supported compression formats are gzip (magic numbers 1F 8B or 1F 9E), bzip2 (magic number 42 5A), LZMA (magic number 5D 00), XZ (magic number FD 37), LZ4 (magic number 02 21) and ZSTD (magic number 28 B5). The uncompressed payload is currently always ELF (magic number 7F 45 4C 46).”…”�”}”(hjËEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¹Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjâEubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjâEubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjÿEubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjüEubj&)�”}”(hhh]”hÞ)�”}”(hŒpayload_length”h]”hŒpayload_length”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjüEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjùEubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj6Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3Fubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hjPFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjMFubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjùEubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjpFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjmFubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjjFubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x24c/4”h]”hŒ0x24c/4”…”�”}”(hj‡Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj„Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjùEubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj§Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¤Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡Fubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.08+”h]”hŒ2.08+”…”�”}”(hj¾Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj»Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjùEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjâEubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjßEubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒThe length of the payload. ”h]”hÞ)�”}”(hŒThe length of the payload.”h]”hŒThe length of the payload.”…”�”}”(hjïFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjëFubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjGubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjGubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj&Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj#Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Gubj&)�”}”(hhh]”hÞ)�”}”(hŒ setup_data”h]”hŒ setup_data”…”�”}”(hj=Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj:Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjGubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hj]Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjZGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjWGubj&)�”}”(hhh]”hÞ)�”}”(hŒwrite (special)”h]”hŒwrite (special)”…”�”}”(hjtGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjqGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjWGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjGubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj”Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hj‘Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŽGubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x250/8”h]”hŒ0x250/8”…”�”}”(hj«Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hj¨Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŽGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjGubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hjËGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M#hjÈGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÅGubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.09+”h]”hŒ2.09+”…”�”}”(hjâGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M#hjßGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÅGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXpThe 64-bit physical pointer to NULL terminated single linked list of struct setup_data. This is used to define a more extensible boot parameters passing mechanism. The definition of struct setup_data is as follow:: struct setup_data { __u64 next; __u32 type; __u32 len; __u8 data[]; } Where, the next is a 64-bit physical pointer to the next node of linked list, the next field of the last node is 0; the type is used to identify the contents of data; the len is the length of data field; the data holds the real payload. This list may be modified at a number of points during the bootup process. Therefore, when modifying this list one should always make sure to consider the case where the linked list already contains entries. The setup_data is a bit awkward to use for extremely large data objects, both because the setup_data header has to be adjacent to the data object and because it has a 32-bit length field. However, it is important that intermediate stages of the boot process have a way to identify which chunks of memory are occupied by kernel data. Thus setup_indirect struct and SETUP_INDIRECT type were introduced in protocol 2.15:: struct setup_indirect { __u32 type; __u32 reserved; /* Reserved, must be set to zero. */ __u64 len; __u64 addr; }; The type member is a SETUP_INDIRECT | SETUP_* type. However, it cannot be SETUP_INDIRECT itself since making the setup_indirect a tree structure could require a lot of stack space in something that needs to parse it and stack space can be limited in boot contexts. Let's give an example how to point to SETUP_E820_EXT data using setup_indirect. In this case setup_data and setup_indirect will look like this:: struct setup_data { .next = 0, /* or */ .type = SETUP_INDIRECT, .len = sizeof(setup_indirect), .data[sizeof(setup_indirect)] = (struct setup_indirect) { .type = SETUP_INDIRECT | SETUP_E820_EXT, .reserved = 0, .len = , .addr = , }, } ”h]”(hÞ)�”}”(hŒÖThe 64-bit physical pointer to NULL terminated single linked list of struct setup_data. This is used to define a more extensible boot parameters passing mechanism. The definition of struct setup_data is as follow::”h]”hŒÕThe 64-bit physical pointer to NULL terminated single linked list of struct setup_data. This is used to define a more extensible boot parameters passing mechanism. The definition of struct setup_data is as follow:”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hjHubj)�”}”(hŒYstruct setup_data { __u64 next; __u32 type; __u32 len; __u8 data[]; }”h]”hŒYstruct setup_data { __u64 next; __u32 type; __u32 len; __u8 data[]; }”…”�”}”hj!Hsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M+hjHubhÞ)�”}”(hŒìWhere, the next is a 64-bit physical pointer to the next node of linked list, the next field of the last node is 0; the type is used to identify the contents of data; the len is the length of data field; the data holds the real payload.”h]”hŒìWhere, the next is a 64-bit physical pointer to the next node of linked list, the next field of the last node is 0; the type is used to identify the contents of data; the len is the length of data field; the data holds the real payload.”…”�”}”(hj/Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M2hjHubhÞ)�”}”(hŒÐThis list may be modified at a number of points during the bootup process. Therefore, when modifying this list one should always make sure to consider the case where the linked list already contains entries.”h]”hŒÐThis list may be modified at a number of points during the bootup process. Therefore, when modifying this list one should always make sure to consider the case where the linked list already contains entries.”…”�”}”(hj=Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hjHubhÞ)�”}”(hXLThe setup_data is a bit awkward to use for extremely large data objects, both because the setup_data header has to be adjacent to the data object and because it has a 32-bit length field. However, it is important that intermediate stages of the boot process have a way to identify which chunks of memory are occupied by kernel data.”h]”hXLThe setup_data is a bit awkward to use for extremely large data objects, both because the setup_data header has to be adjacent to the data object and because it has a 32-bit length field. However, it is important that intermediate stages of the boot process have a way to identify which chunks of memory are occupied by kernel data.”…”�”}”(hjKHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M<hjHubhÞ)�”}”(hŒUThus setup_indirect struct and SETUP_INDIRECT type were introduced in protocol 2.15::”h]”hŒTThus setup_indirect struct and SETUP_INDIRECT type were introduced in protocol 2.15:”…”�”}”(hjYHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhjHubj)�”}”(hŒŽstruct setup_indirect { __u32 type; __u32 reserved; /* Reserved, must be set to zero. */ __u64 len; __u64 addr; };”h]”hŒŽstruct setup_indirect { __u32 type; __u32 reserved; /* Reserved, must be set to zero. */ __u64 len; __u64 addr; };”…”�”}”hjgHsba•„h}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MEhjHubhÞ)�”}”(hXThe type member is a SETUP_INDIRECT | SETUP_* type. However, it cannot be SETUP_INDIRECT itself since making the setup_indirect a tree structure could require a lot of stack space in something that needs to parse it and stack space can be limited in boot contexts.”h]”hXThe type member is a SETUP_INDIRECT | SETUP_* type. However, it cannot be SETUP_INDIRECT itself since making the setup_indirect a tree structure could require a lot of stack space in something that needs to parse it and stack space can be limited in boot contexts.”…”�”}”(hjuHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MLhjHubhÞ)�”}”(hŒ�Let's give an example how to point to SETUP_E820_EXT data using setup_indirect. In this case setup_data and setup_indirect will look like this::”h]”hŒ‘Let’s give an example how to point to SETUP_E820_EXT data using setup_indirect. In this case setup_data and setup_indirect will look like this:”…”�”}”(hjƒHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MQhjHubj)�”}”(hX”struct setup_data { .next = 0, /* or */ .type = SETUP_INDIRECT, .len = sizeof(setup_indirect), .data[sizeof(setup_indirect)] = (struct setup_indirect) { .type = SETUP_INDIRECT | SETUP_E820_EXT, .reserved = 0, .len = , .addr = , }, }”h]”hX”struct setup_data { .next = 0, /* or */ .type = SETUP_INDIRECT, .len = sizeof(setup_indirect), .data[sizeof(setup_indirect)] = (struct setup_indirect) { .type = SETUP_INDIRECT | SETUP_E820_EXT, .reserved = 0, .len = , .addr = , }, }”…”�”}”hj‘Hsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MThjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M&hj]h²hubjß)�”}”(hŒ SETUP_INDIRECT | SETUP_NONE objects cannot be properly distinguished from SETUP_INDIRECT itself. So, this kind of objects cannot be provided by the bootloaders.”h]”hÞ)�”}”(hŒ SETUP_INDIRECT | SETUP_NONE objects cannot be properly distinguished from SETUP_INDIRECT itself. So, this kind of objects cannot be provided by the bootloaders.”h]”hŒ SETUP_INDIRECT | SETUP_NONE objects cannot be properly distinguished from SETUP_INDIRECT itself. So, this kind of objects cannot be provided by the bootloaders.”…”�”}”(hj©Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahj¥Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]h²hh³hÇh´Nubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÀHubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÀHubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjàHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MfhjÝHubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚHubj&)�”}”(hhh]”hÞ)�”}”(hŒ pref_address”h]”hŒ pref_address”…”�”}”(hj÷Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MfhjôHubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj×Hubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MghjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubj&)�”}”(hhh]”hÞ)�”}”(hŒ read (reloc)”h]”hŒ read (reloc)”…”�”}”(hj.Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mghj+Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj×Hubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjNIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhhjKIubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjHIubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x258/8”h]”hŒ0x258/8”…”�”}”(hjeIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhhjbIubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjHIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj×Hubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj…Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihj‚Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.10+”h]”hŒ2.10+”…”�”}”(hjœIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihj™Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj×Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀHubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj½Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hXGThis field, if nonzero, represents a preferred load address for the kernel. A relocating bootloader should attempt to load at this address if possible. A non-relocatable kernel will unconditionally move itself and to run at this address. A relocatable kernel will move itself to this address if it loaded below this address. ”h]”(hÞ)�”}”(hŒ˜This field, if nonzero, represents a preferred load address for the kernel. A relocating bootloader should attempt to load at this address if possible.”h]”hŒ˜This field, if nonzero, represents a preferred load address for the kernel. A relocating bootloader should attempt to load at this address if possible.”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MlhjÉIubhÞ)�”}”(hŒ¬A non-relocatable kernel will unconditionally move itself and to run at this address. A relocatable kernel will move itself to this address if it loaded below this address.”h]”hŒ¬A non-relocatable kernel will unconditionally move itself and to run at this address. A relocatable kernel will move itself to this address if it loaded below this address.”…”�”}”(hjÛIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MphjÉIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mlhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjòIubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjòIubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MuhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Jubj&)�”}”(hhh]”hÞ)�”}”(hŒ init_size”h]”hŒ init_size”…”�”}”(hj)Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Muhj&Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj Jubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjIJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MvhjFJubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjCJubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj`Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mvhj]Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjCJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj Jubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj€Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mwhj}Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjzJubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x260/4”h]”hŒ0x260/4”…”�”}”(hj—Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mwhj”Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjzJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjòIubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjïIubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hX“This field indicates the amount of linear contiguous memory starting at the kernel runtime start address that the kernel needs before it is capable of examining its memory map. This is not the same thing as the total amount of memory the kernel needs to boot, but it can be used by a relocating boot loader to help select a safe load address for the kernel. The kernel runtime start address is determined by the following algorithm:: if (relocatable_kernel) { if (load_address < pref_address) load_address = pref_address; runtime_start = align_up(load_address, kernel_alignment); } else { runtime_start = pref_address; } ”h]”(hÞ)�”}”(hXfThis field indicates the amount of linear contiguous memory starting at the kernel runtime start address that the kernel needs before it is capable of examining its memory map. This is not the same thing as the total amount of memory the kernel needs to boot, but it can be used by a relocating boot loader to help select a safe load address for the kernel.”h]”hXfThis field indicates the amount of linear contiguous memory starting at the kernel runtime start address that the kernel needs before it is capable of examining its memory map. This is not the same thing as the total amount of memory the kernel needs to boot, but it can be used by a relocating boot loader to help select a safe load address for the kernel.”…”�”}”(hjÈJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MzhjÄJubhÞ)�”}”(hŒKThe kernel runtime start address is determined by the following algorithm::”h]”hŒJThe kernel runtime start address is determined by the following algorithm:”…”�”}”(hjÖJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M�hjÄJubj)�”}”(hŒÖif (relocatable_kernel) { if (load_address < pref_address) load_address = pref_address; runtime_start = align_up(load_address, kernel_alignment); } else { runtime_start = pref_address; }”h]”hŒÖif (relocatable_kernel) { if (load_address < pref_address) load_address = pref_address; runtime_start = align_up(load_address, kernel_alignment); } else { runtime_start = pref_address; }”…”�”}”hjäJsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MƒhjÄJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´Mzhj]h²hubhÞ)�”}”(hŒZHence the necessary memory window location and size can be estimated by a boot loader as::”h]”hŒYHence the necessary memory window location and size can be estimated by a boot loader as:”…”�”}”(hjøJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‹hj]h²hubj)�”}”(hŒDmemory_window_start = runtime_start; memory_window_size = init_size;”h]”hŒDmemory_window_start = runtime_start; memory_window_size = init_size;”…”�”}”hjKsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MŽhj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjKubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjKubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj7Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M’hj4Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1Kubj&)�”}”(hhh]”hÞ)�”}”(hŒhandover_offset”h]”hŒhandover_offset”…”�”}”(hjNKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M’hjKKubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj1Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Kubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjnKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M“hjkKubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhKubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj…Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M“hj‚Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Kubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj¥Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M”hj¢Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸKubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x264/4”h]”hŒ0x264/4”…”�”}”(hj¼Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M”hj¹Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj.Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒùThis field is the offset from the beginning of the kernel image to the EFI handover protocol entry point. Boot loaders using the EFI handover protocol to boot the kernel should jump to this offset. See EFI HANDOVER PROTOCOL below for more details. ”h]”(hÞ)�”}”(hŒÅThis field is the offset from the beginning of the kernel image to the EFI handover protocol entry point. Boot loaders using the EFI handover protocol to boot the kernel should jump to this offset.”h]”hŒÅThis field is the offset from the beginning of the kernel image to the EFI handover protocol entry point. Boot loaders using the EFI handover protocol to boot the kernel should jump to this offset.”…”�”}”(hjíKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M—hjéKubhÞ)�”}”(hŒ1See EFI HANDOVER PROTOCOL below for more details.”h]”hŒ1See EFI HANDOVER PROTOCOL below for more details.”…”�”}”(hjûKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M›hjéKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M—hj]h²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjLubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjLubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj2Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mžhj/Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj,Lubj&)�”}”(hhh]”hÞ)�”}”(hŒkernel_info_offset”h]”hŒkernel_info_offset”…”�”}”(hjILh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MžhjFLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj,Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj)Lubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒType:”h]”hŒType:”…”�”}”(hjiLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŸhjfLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjcLubj&)�”}”(hhh]”hÞ)�”}”(hŒread”h]”hŒread”…”�”}”(hj€Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŸhj}Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjcLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj)Lubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj�Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšLubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x268/4”h]”hŒ0x268/4”…”�”}”(hj·Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj´Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj)Lubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Protocol:”h]”hŒ Protocol:”…”�”}”(hj×Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¡hjÔLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÑLubj&)�”}”(hhh]”hÞ)�”}”(hŒ2.15+”h]”hŒ2.15+”…”�”}”(hjîLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¡hjëLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÑLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj)Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj]h²hh³hÇh´Nubj¥)�”}”(hŒ¹This field is the offset from the beginning of the kernel image to the kernel_info. The kernel_info structure is embedded in the Linux image in the uncompressed protected mode region. ”h]”hÞ)�”}”(hŒ·This field is the offset from the beginning of the kernel image to the kernel_info. The kernel_info structure is embedded in the Linux image in the uncompressed protected mode region.”h]”hŒ·This field is the offset from the beginning of the kernel image to the kernel_info. The kernel_info structure is embedded in the Linux image in the uncompressed protected mode region.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¤hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´M¤hj]h²hubeh}”(h]”Œdetails-of-header-fields”ah ]”h"]”Œdetails of header fields”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒThe kernel_info”h]”hŒThe kernel_info”…”�”}”(hj>Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj;Mh²hh³hÇh´MªubhÞ)�”}”(hŒRThe relationships between the headers are analogous to the various data sections::”h]”hŒQThe relationships between the headers are analogous to the various data sections:”…”�”}”(hjLMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¬hj;Mh²hubj)�”}”(hŒ2setup_header = .data boot_params/setup_data = .bss”h]”hŒ2setup_header = .data boot_params/setup_data = .bss”…”�”}”hjZMsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M¯hj;Mh²hubhÞ)�”}”(hŒ3What is missing from the above list? That's right::”h]”hŒ4What is missing from the above list? That’s right:”…”�”}”(hjhMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M²hj;Mh²hubj)�”}”(hŒkernel_info = .rodata”h]”hŒkernel_info = .rodata”…”�”}”hjvMsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M´hj;Mh²hubhÞ)�”}”(hXWe have been (ab)using .data for things that could go into .rodata or .bss for a long time, for lack of alternatives and -- especially early on -- inertia. Also, the BIOS stub is responsible for creating boot_params, so it isn't available to a BIOS-based loader (setup_data is, though).”h]”hX We have been (ab)using .data for things that could go into .rodata or .bss for a long time, for lack of alternatives and -- especially early on -- inertia. Also, the BIOS stub is responsible for creating boot_params, so it isn’t available to a BIOS-based loader (setup_data is, though).”…”�”}”(hj„Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¶hj;Mh²hubhÞ)�”}”(hXÏsetup_header is permanently limited to 144 bytes due to the reach of the 2-byte jump field, which doubles as a length field for the structure, combined with the size of the "hole" in struct boot_params that a protected-mode loader or the BIOS stub has to copy it into. It is currently 119 bytes long, which leaves us with 25 very precious bytes. This isn't something that can be fixed without revising the boot protocol entirely, breaking backwards compatibility.”h]”hXÕsetup_header is permanently limited to 144 bytes due to the reach of the 2-byte jump field, which doubles as a length field for the structure, combined with the size of the “holeâ€� in struct boot_params that a protected-mode loader or the BIOS stub has to copy it into. It is currently 119 bytes long, which leaves us with 25 very precious bytes. This isn’t something that can be fixed without revising the boot protocol entirely, breaking backwards compatibility.”…”�”}”(hj’Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M»hj;Mh²hubhÞ)�”}”(hŒáboot_params proper is limited to 4096 bytes, but can be arbitrarily extended by adding setup_data entries. It cannot be used to communicate properties of the kernel image, because it is .bss and has no image-provided content.”h]”hŒáboot_params proper is limited to 4096 bytes, but can be arbitrarily extended by adding setup_data entries. It cannot be used to communicate properties of the kernel image, because it is .bss and has no image-provided content.”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÂhj;Mh²hubhÞ)�”}”(hXTkernel_info solves this by providing an extensible place for information about the kernel image. It is readonly, because the kernel cannot rely on a bootloader copying its contents anywhere, but that is OK; if it becomes necessary it can still contain data items that an enabled bootloader would be expected to copy into a setup_data chunk.”h]”hXTkernel_info solves this by providing an extensible place for information about the kernel image. It is readonly, because the kernel cannot rely on a bootloader copying its contents anywhere, but that is OK; if it becomes necessary it can still contain data items that an enabled bootloader would be expected to copy into a setup_data chunk.”…”�”}”(hj®Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÆhj;Mh²hubhÞ)�”}”(hXAll kernel_info data should be part of this structure. Fixed size data have to be put before kernel_info_var_len_data label. Variable size data have to be put after kernel_info_var_len_data label. Each chunk of variable size data has to be prefixed with header/magic and its size, e.g.::”h]”hXAll kernel_info data should be part of this structure. Fixed size data have to be put before kernel_info_var_len_data label. Variable size data have to be put after kernel_info_var_len_data label. Each chunk of variable size data has to be prefixed with header/magic and its size, e.g.:”…”�”}”(hj¼Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÌhj;Mh²hubj)�”}”(hX kernel_info: .ascii "LToP" /* Header, Linux top (structure). */ .long kernel_info_var_len_data - kernel_info .long kernel_info_end - kernel_info .long 0x01234567 /* Some fixed size data for the bootloaders. */ kernel_info_var_len_data: example_struct: /* Some variable size data for the bootloaders. */ .ascii "0123" /* Header/Magic. */ .long example_struct_end - example_struct .ascii "Struct" .long 0x89012345 example_struct_end: example_strings: /* Some variable size data for the bootloaders. */ .ascii "ABCD" /* Header/Magic. */ .long example_strings_end - example_strings .asciz "String_0" .asciz "String_1" example_strings_end: kernel_info_end:”h]”hX kernel_info: .ascii "LToP" /* Header, Linux top (structure). */ .long kernel_info_var_len_data - kernel_info .long kernel_info_end - kernel_info .long 0x01234567 /* Some fixed size data for the bootloaders. */ kernel_info_var_len_data: example_struct: /* Some variable size data for the bootloaders. */ .ascii "0123" /* Header/Magic. */ .long example_struct_end - example_struct .ascii "Struct" .long 0x89012345 example_struct_end: example_strings: /* Some variable size data for the bootloaders. */ .ascii "ABCD" /* Header/Magic. */ .long example_strings_end - example_strings .asciz "String_0" .asciz "String_1" example_strings_end: kernel_info_end:”…”�”}”hjÊMsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MÑhj;Mh²hubhÞ)�”}”(hŒ0This way the kernel_info is self-contained blob.”h]”hŒ0This way the kernel_info is self-contained blob.”…”�”}”(hjØMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Måhj;Mh²hubjß)�”}”(hŒ²Each variable size data header/magic can be any 4-character string, without \0 at the end of the string, which does not collide with existing variable length data headers/magics.”h]”hÞ)�”}”(hŒ²Each variable size data header/magic can be any 4-character string, without \0 at the end of the string, which does not collide with existing variable length data headers/magics.”h]”hŒ²Each variable size data header/magic can be any 4-character string, without 0 at the end of the string, which does not collide with existing variable length data headers/magics.”…”�”}”(hjêMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MèhjæMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj;Mh²hh³hÇh´Nubeh}”(h]”Œthe-kernel-info”ah ]”h"]”Œthe kernel_info”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MªubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ!Details of the kernel_info Fields”h]”hŒ!Details of the kernel_info Fields”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjNh²hh³hÇh´Mîubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjNubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjNubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj:Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mñhj7Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4Nubj&)�”}”(hhh]”hÞ)�”}”(hŒheader”h]”hŒheader”…”�”}”(hjQNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MñhjNNubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1Nubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjqNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MòhjnNubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjkNubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x0000/4”h]”hŒ0x0000/4”…”�”}”(hjˆNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mòhj…Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjkNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj1Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjNh²hh³hÇh´Nubj¥)�”}”(hŒ/Contains the magic number "LToP" (0x506f544c). ”h]”hÞ)�”}”(hŒ.Contains the magic number "LToP" (0x506f544c).”h]”hŒ2Contains the magic number “LToPâ€� (0x506f544c).”…”�”}”(hj¹Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MõhjµNubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MõhjNh²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjÐNubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÐNubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hjðNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MøhjíNubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêNubj&)�”}”(hhh]”hÞ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MøhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjçNubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hj'Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mùhj$Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!Oubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x0004/4”h]”hŒ0x0004/4”…”�”}”(hj>Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mùhj;Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjçNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐNubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjÍNubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjNh²hh³hÇh´Nubj¥)�”}”(hX(This field contains the size of the kernel_info including kernel_info.header. It does not count kernel_info.kernel_info_var_len_data size. This field should be used by the bootloaders to detect supported fixed size fields in the kernel_info and beginning of kernel_info.kernel_info_var_len_data. ”h]”hÞ)�”}”(hX'This field contains the size of the kernel_info including kernel_info.header. It does not count kernel_info.kernel_info_var_len_data size. This field should be used by the bootloaders to detect supported fixed size fields in the kernel_info and beginning of kernel_info.kernel_info_var_len_data.”h]”hX'This field contains the size of the kernel_info including kernel_info.header. It does not count kernel_info.kernel_info_var_len_data size. This field should be used by the bootloaders to detect supported fixed size fields in the kernel_info and beginning of kernel_info.kernel_info_var_len_data.”…”�”}”(hjoOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MühjkOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MühjNh²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj†Oubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj†Oubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Field name:”h]”hŒ Field name:”…”�”}”(hj¦Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj£Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Oubj&)�”}”(hhh]”hÞ)�”}”(hŒ size_total”h]”hŒ size_total”…”�”}”(hj½Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjºOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�Oubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ Offset/size:”h]”hŒ Offset/size:”…”�”}”(hjÝOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjÚOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×Oubj&)�”}”(hhh]”hÞ)�”}”(hŒ0x0008/4”h]”hŒ0x0008/4”…”�”}”(hjôOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjñOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj×Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj†Oubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjƒOubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjNh²hh³hÇh´Nubj¥)�”}”(hŒwThis field contains the size of the kernel_info including kernel_info.header and kernel_info.kernel_info_var_len_data. ”h]”hÞ)�”}”(hŒvThis field contains the size of the kernel_info including kernel_info.header and kernel_info.kernel_info_var_len_data.”h]”hŒvThis field contains the size of the kernel_info including kernel_info.header and kernel_info.kernel_info_var_len_data.”…”�”}”(hj%Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj!Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MhjNh²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj= 0x0200) { type_of_loader = ; if (loading_initrd) { ramdisk_image = ; ramdisk_size = ; } if (protocol >= 0x0202 && loadflags & 0x01) heap_end = 0xe000; else heap_end = 0x9800; if (protocol >= 0x0201) { heap_end_ptr = heap_end - 0x200; loadflags |= 0x80; /* CAN_USE_HEAP */ } if (protocol >= 0x0202) { cmd_line_ptr = base_ptr + heap_end; strcpy(cmd_line_ptr, cmdline); } else { cmd_line_magic = 0xA33F; cmd_line_offset = heap_end; setup_move_size = heap_end + strlen(cmdline) + 1; strcpy(base_ptr + cmd_line_offset, cmdline); } } else { /* Very old kernel */ heap_end = 0x9800; cmd_line_magic = 0xA33F; cmd_line_offset = heap_end; /* A very old kernel MUST have its real-mode code loaded at 0x90000 */ if (base_ptr != 0x90000) { /* Copy the real-mode kernel */ memcpy(0x90000, base_ptr, (setup_sects + 1) * 512); base_ptr = 0x90000; /* Relocated */ } strcpy(0x90000 + cmd_line_offset, cmdline); /* It is recommended to clear memory up to the 32K mark */ memset(0x90000 + (setup_sects + 1) * 512, 0, (64 - (setup_sects + 1)) * 512); }”h]”hX#unsigned long base_ptr; /* base address for real-mode segment */ if (setup_sects == 0) setup_sects = 4; if (protocol >= 0x0200) { type_of_loader = ; if (loading_initrd) { ramdisk_image = ; ramdisk_size = ; } if (protocol >= 0x0202 && loadflags & 0x01) heap_end = 0xe000; else heap_end = 0x9800; if (protocol >= 0x0201) { heap_end_ptr = heap_end - 0x200; loadflags |= 0x80; /* CAN_USE_HEAP */ } if (protocol >= 0x0202) { cmd_line_ptr = base_ptr + heap_end; strcpy(cmd_line_ptr, cmdline); } else { cmd_line_magic = 0xA33F; cmd_line_offset = heap_end; setup_move_size = heap_end + strlen(cmdline) + 1; strcpy(base_ptr + cmd_line_offset, cmdline); } } else { /* Very old kernel */ heap_end = 0x9800; cmd_line_magic = 0xA33F; cmd_line_offset = heap_end; /* A very old kernel MUST have its real-mode code loaded at 0x90000 */ if (base_ptr != 0x90000) { /* Copy the real-mode kernel */ memcpy(0x90000, base_ptr, (setup_sects + 1) * 512); base_ptr = 0x90000; /* Relocated */ } strcpy(0x90000 + cmd_line_offset, cmdline); /* It is recommended to clear memory up to the 32K mark */ memset(0x90000 + (setup_sects + 1) * 512, 0, (64 - (setup_sects + 1)) * 512); }”…”�”}”hj¡Tsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Mlhj�Rh²hubeh}”(h]”Œsample-boot-configuration”ah ]”h"]”Œsample boot configuration”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MUubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒLoading The Rest of The Kernel”h]”hŒLoading The Rest of The Kernel”…”�”}”(hjºTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj·Th²hh³hÇh´M¢ubhÞ)�”}”(hŒñThe 32-bit (non-real-mode) kernel starts at offset (setup_sects + 1) * 512 in the kernel file (again, if setup_sects == 0 the real value is 4.) It should be loaded at address 0x10000 for Image/zImage kernels and 0x100000 for bzImage kernels.”h]”hŒñThe 32-bit (non-real-mode) kernel starts at offset (setup_sects + 1) * 512 in the kernel file (again, if setup_sects == 0 the real value is 4.) It should be loaded at address 0x10000 for Image/zImage kernels and 0x100000 for bzImage kernels.”…”�”}”(hjÈTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¤hj·Th²hubhÞ)�”}”(hŒsThe kernel is a bzImage kernel if the protocol >= 2.00 and the 0x01 bit (LOAD_HIGH) in the loadflags field is set::”h]”hŒrThe kernel is a bzImage kernel if the protocol >= 2.00 and the 0x01 bit (LOAD_HIGH) in the loadflags field is set:”…”�”}”(hjÖTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M©hj·Th²hubj)�”}”(hŒhis_bzImage = (protocol >= 0x0200) && (loadflags & 0x01); load_address = is_bzImage ? 0x100000 : 0x10000;”h]”hŒhis_bzImage = (protocol >= 0x0200) && (loadflags & 0x01); load_address = is_bzImage ? 0x100000 : 0x10000;”…”�”}”hjäTsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M¬hj·Th²hubjß)�”}”(hŒúImage/zImage kernels can be up to 512K in size, and thus use the entire 0x10000-0x90000 range of memory. This means it is pretty much a requirement for these kernels to load the real-mode part at 0x90000. bzImage kernels allow much more flexibility.”h]”hÞ)�”}”(hŒúImage/zImage kernels can be up to 512K in size, and thus use the entire 0x10000-0x90000 range of memory. This means it is pretty much a requirement for these kernels to load the real-mode part at 0x90000. bzImage kernels allow much more flexibility.”h]”hŒúImage/zImage kernels can be up to 512K in size, and thus use the entire 0x10000-0x90000 range of memory. This means it is pretty much a requirement for these kernels to load the real-mode part at 0x90000. bzImage kernels allow much more flexibility.”…”�”}”(hjöTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M°hjòTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·Th²hh³hÇh´Nubeh}”(h]”Œloading-the-rest-of-the-kernel”ah ]”h"]”Œloading the rest of the kernel”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M¢ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSpecial Command Line Options”h]”hŒSpecial Command Line Options”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjUh²hh³hÇh´M¶ubhÞ)�”}”(hXIf the command line provided by the boot loader is entered by the user, the user may expect the following command line options to work. They should normally not be deleted from the kernel command line even though not all of them are actually meaningful to the kernel. Boot loader authors who need additional command line options for the boot loader itself should get them registered in Documentation/admin-guide/kernel-parameters.rst to make sure they will not conflict with actual kernel options now or in the future.”h]”hXIf the command line provided by the boot loader is entered by the user, the user may expect the following command line options to work. They should normally not be deleted from the kernel command line even though not all of them are actually meaningful to the kernel. Boot loader authors who need additional command line options for the boot loader itself should get them registered in Documentation/admin-guide/kernel-parameters.rst to make sure they will not conflict with actual kernel options now or in the future.”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hjUh²hubj¥)�”}”(hX¿vga= here is either an integer (in C notation, either decimal, octal, or hexadecimal) or one of the strings "normal" (meaning 0xFFFF), "ext" (meaning 0xFFFE) or "ask" (meaning 0xFFFD). This value should be entered into the vid_mode field, as it is used by the kernel before the command line is parsed. mem= is an integer in C notation optionally followed by (case insensitive) K, M, G, T, P or E (meaning << 10, << 20, << 30, << 40, << 50 or << 60). This specifies the end of memory to the kernel. This affects the possible placement of an initrd, since an initrd should be placed near end of memory. Note that this is an option to *both* the kernel and the bootloader! initrd= An initrd should be loaded. The meaning of is obviously bootloader-dependent, and some boot loaders (e.g. LILO) do not have such a command. ”h]”hŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hX<vga= here is either an integer (in C notation, either decimal, octal, or hexadecimal) or one of the strings "normal" (meaning 0xFFFF), "ext" (meaning 0xFFFE) or "ask" (meaning 0xFFFD). This value should be entered into the vid_mode field, as it is used by the kernel before the command line is parsed. ”h]”(hŒterm”“”)�”}”(hŒ vga=”h]”hŒ vga=”…”�”}”(hjBUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´MÇhj here is either an integer (in C notation, either decimal, octal, or hexadecimal) or one of the strings "normal" (meaning 0xFFFF), "ext" (meaning 0xFFFE) or "ask" (meaning 0xFFFD). This value should be entered into the vid_mode field, as it is used by the kernel before the command line is parsed.”h]”hX< here is either an integer (in C notation, either decimal, octal, or hexadecimal) or one of the strings “normalâ€� (meaning 0xFFFF), “extâ€� (meaning 0xFFFE) or “askâ€� (meaning 0xFFFD). This value should be entered into the vid_mode field, as it is used by the kernel before the command line is parsed.”…”�”}”(hjUUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÂhjRUubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhj is an integer in C notation optionally followed by (case insensitive) K, M, G, T, P or E (meaning << 10, << 20, << 30, << 40, << 50 or << 60). This specifies the end of memory to the kernel. This affects the possible placement of an initrd, since an initrd should be placed near end of memory. Note that this is an option to *both* the kernel and the bootloader! ”h]”(jAU)�”}”(hŒ mem=”h]”hŒ mem=”…”�”}”(hjsUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´MÐhjoUubjQU)�”}”(hhh]”hÞ)�”}”(hXs is an integer in C notation optionally followed by (case insensitive) K, M, G, T, P or E (meaning << 10, << 20, << 30, << 40, << 50 or << 60). This specifies the end of memory to the kernel. This affects the possible placement of an initrd, since an initrd should be placed near end of memory. Note that this is an option to *both* the kernel and the bootloader!”h]”(hXN is an integer in C notation optionally followed by (case insensitive) K, M, G, T, P or E (meaning << 10, << 20, << 30, << 40, << 50 or << 60). This specifies the end of memory to the kernel. This affects the possible placement of an initrd, since an initrd should be placed near end of memory. Note that this is an option to ”…”�”}”(hj„Uh²hh³Nh´Nubj;Q)�”}”(hŒ*both*”h]”hŒboth”…”�”}”(hjŒUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:Qhj„UubhŒ the kernel and the bootloader!”…”�”}”(hj„Uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÊhj�Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhjoUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´MÐhj7Uubj;U)�”}”(hŒ¢initrd= An initrd should be loaded. The meaning of is obviously bootloader-dependent, and some boot loaders (e.g. LILO) do not have such a command. ”h]”(jAU)�”}”(hŒ initrd=”h]”hŒ initrd=”…”�”}”(hj´Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´MÕhj°UubjQU)�”}”(hhh]”hÞ)�”}”(hŒ“An initrd should be loaded. The meaning of is obviously bootloader-dependent, and some boot loaders (e.g. LILO) do not have such a command.”h]”hŒ“An initrd should be loaded. The meaning of is obviously bootloader-dependent, and some boot loaders (e.g. LILO) do not have such a command.”…”�”}”(hjÅUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÓhjÂUubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhj°Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´MÕhj7Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5Uhj1Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÁhjUh²hubhÞ)�”}”(hŒ\In addition, some boot loaders add the following options to the user-specified command line:”h]”hŒ\In addition, some boot loaders add the following options to the user-specified command line:”…”�”}”(hjëUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M×hjUh²hubj¥)�”}”(hŒÆBOOT_IMAGE= The boot image which was loaded. Again, the meaning of is obviously bootloader-dependent. auto The kernel was booted without explicit user intervention. ”h]”j6U)�”}”(hhh]”(j;U)�”}”(hŒtBOOT_IMAGE= The boot image which was loaded. Again, the meaning of is obviously bootloader-dependent. ”h]”(jAU)�”}”(hŒBOOT_IMAGE=”h]”hŒBOOT_IMAGE=”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´MÜhjVubjQU)�”}”(hhh]”hÞ)�”}”(hŒaThe boot image which was loaded. Again, the meaning of is obviously bootloader-dependent.”h]”hŒaThe boot image which was loaded. Again, the meaning of is obviously bootloader-dependent.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÛhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´MÜhjýUubj;U)�”}”(hŒ?auto The kernel was booted without explicit user intervention. ”h]”(jAU)�”}”(hŒauto”h]”hŒauto”…”�”}”(hj3Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´Mßhj/VubjQU)�”}”(hhh]”hÞ)�”}”(hŒ9The kernel was booted without explicit user intervention.”h]”hŒ9The kernel was booted without explicit user intervention.”…”�”}”(hjDVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MßhjAVubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhj/Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´MßhjýUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5UhjùUubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MÚhjUh²hubhÞ)�”}”(hŒèIf these options are added by the boot loader, it is highly recommended that they are located *first*, before the user-specified or configuration-specified command line. Otherwise, "init=/bin/sh" gets confused by the "auto" option.”h]”(hŒ^If these options are added by the boot loader, it is highly recommended that they are located ”…”�”}”(hjjVh²hh³Nh´Nubj;Q)�”}”(hŒ*first*”h]”hŒfirst”…”�”}”(hjrVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:QhjjVubhŒ‹, before the user-specified or configuration-specified command line. Otherwise, “init=/bin/shâ€� gets confused by the “autoâ€� option.”…”�”}”(hjjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MáhjUh²hubeh}”(h]”Œspecial-command-line-options”ah ]”h"]”Œspecial command line options”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M¶ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRunning the Kernel”h]”hŒRunning the Kernel”…”�”}”(hj•Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj’Vh²hh³hÇh´MèubhÞ)�”}”(hŒøThe kernel is started by jumping to the kernel entry point, which is located at *segment* offset 0x20 from the start of the real mode kernel. This means that if you loaded your real-mode kernel code at 0x90000, the kernel entry point is 9020:0000.”h]”(hŒPThe kernel is started by jumping to the kernel entry point, which is located at ”…”�”}”(hj£Vh²hh³Nh´Nubj;Q)�”}”(hŒ *segment*”h]”hŒsegment”…”�”}”(hj«Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:Qhj£VubhŒŸ offset 0x20 from the start of the real mode kernel. This means that if you loaded your real-mode kernel code at 0x90000, the kernel entry point is 9020:0000.”…”�”}”(hj£Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mêhj’Vh²hubhÞ)�”}”(hXZAt entry, ds = es = ss should point to the start of the real-mode kernel code (0x9000 if the code is loaded at 0x90000), sp should be set up properly, normally pointing to the top of the heap, and interrupts should be disabled. Furthermore, to guard against bugs in the kernel, it is recommended that the boot loader sets fs = gs = ds = es = ss.”h]”hXZAt entry, ds = es = ss should point to the start of the real-mode kernel code (0x9000 if the code is loaded at 0x90000), sp should be set up properly, normally pointing to the top of the heap, and interrupts should be disabled. Furthermore, to guard against bugs in the kernel, it is recommended that the boot loader sets fs = gs = ds = es = ss.”…”�”}”(hjÃVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mïhj’Vh²hubhÞ)�”}”(hŒ(In our example from above, we would do::”h]”hŒ'In our example from above, we would do:”…”�”}”(hjÑVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Möhj’Vh²hubj)�”}”(hXt/* * Note: in the case of the "old" kernel protocol, base_ptr must * be == 0x90000 at this point; see the previous sample code. */ seg = base_ptr >> 4; cli(); /* Enter with interrupts disabled! */ /* Set up the real-mode kernel stack */ _SS = seg; _SP = heap_end; _DS = _ES = _FS = _GS = seg; jmp_far(seg + 0x20, 0); /* Run the kernel */”h]”hXt/* * Note: in the case of the "old" kernel protocol, base_ptr must * be == 0x90000 at this point; see the previous sample code. */ seg = base_ptr >> 4; cli(); /* Enter with interrupts disabled! */ /* Set up the real-mode kernel stack */ _SS = seg; _SP = heap_end; _DS = _ES = _FS = _GS = seg; jmp_far(seg + 0x20, 0); /* Run the kernel */”…”�”}”hjßVsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´Møhj’Vh²hubhÞ)�”}”(hX"If your boot sector accesses a floppy drive, it is recommended to switch off the floppy motor before running the kernel, since the kernel boot leaves interrupts off and thus the motor will not be switched off, especially if the loaded kernel has the floppy driver as a demand-loaded module!”h]”hX"If your boot sector accesses a floppy drive, it is recommended to switch off the floppy motor before running the kernel, since the kernel boot leaves interrupts off and thus the motor will not be switched off, especially if the loaded kernel has the floppy driver as a demand-loaded module!”…”�”}”(hjíVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj’Vh²hubeh}”(h]”Œrunning-the-kernel”ah ]”h"]”Œrunning the kernel”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MèubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdvanced Boot Loader Hooks”h]”hŒAdvanced Boot Loader Hooks”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjWh²hh³hÇh´MubhÞ)�”}”(hXqIf the boot loader runs in a particularly hostile environment (such as LOADLIN, which runs under DOS) it may be impossible to follow the standard memory location requirements. Such a boot loader may use the following hooks that, if set, are invoked by the kernel at the appropriate time. The use of these hooks should probably be considered an absolutely last resort!”h]”hXqIf the boot loader runs in a particularly hostile environment (such as LOADLIN, which runs under DOS) it may be impossible to follow the standard memory location requirements. Such a boot loader may use the following hooks that, if set, are invoked by the kernel at the appropriate time. The use of these hooks should probably be considered an absolutely last resort!”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjWh²hubhÞ)�”}”(hŒ^IMPORTANT: All the hooks are required to preserve %esp, %ebp, %esi and %edi across invocation.”h]”hŒ^IMPORTANT: All the hooks are required to preserve %esp, %ebp, %esi and %edi across invocation.”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjWh²hubj¥)�”}”(hX³realmode_swtch: A 16-bit real mode far subroutine invoked immediately before entering protected mode. The default routine disables NMI, so your routine should probably do so, too. code32_start: A 32-bit flat-mode routine *jumped* to immediately after the transition to protected mode, but before the kernel is uncompressed. No segments, except CS, are guaranteed to be set up (current kernels do, but older ones do not); you should set them up to BOOT_DS (0x18) yourself. After completing your hook, you should jump to the address that was in this field before your boot loader overwrote it (relocated, if appropriate.) ”h]”j6U)�”}”(hhh]”(j;U)�”}”(hŒµrealmode_swtch: A 16-bit real mode far subroutine invoked immediately before entering protected mode. The default routine disables NMI, so your routine should probably do so, too. ”h]”(jAU)�”}”(hŒrealmode_swtch:”h]”hŒrealmode_swtch:”…”�”}”(hj;Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´Mhj7WubjQU)�”}”(hhh]”hÞ)�”}”(hŒ¤A 16-bit real mode far subroutine invoked immediately before entering protected mode. The default routine disables NMI, so your routine should probably do so, too.”•£Zh]”hŒ¤A 16-bit real mode far subroutine invoked immediately before entering protected mode. The default routine disables NMI, so your routine should probably do so, too.”…”�”}”(hjLWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjIWubah}”(h]”h ]”h"]”h$]”h&]”uh1jPUhj7Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´Mhj4Wubj;U)�”}”(hX»code32_start: A 32-bit flat-mode routine *jumped* to immediately after the transition to protected mode, but before the kernel is uncompressed. No segments, except CS, are guaranteed to be set up (current kernels do, but older ones do not); you should set them up to BOOT_DS (0x18) yourself. After completing your hook, you should jump to the address that was in this field before your boot loader overwrote it (relocated, if appropriate.) ”h]”(jAU)�”}”(hŒ code32_start:”h]”hŒ code32_start:”…”�”}”(hjjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j@Uh³hÇh´M*hjfWubjQU)�”}”(hhh]”(hÞ)�”}”(hXA 32-bit flat-mode routine *jumped* to immediately after the transition to protected mode, but before the kernel is uncompressed. No segments, except CS, are guaranteed to be set up (current kernels do, but older ones do not); you should set them up to BOOT_DS (0x18) yourself.”h]”(hŒA 32-bit flat-mode routine ”…”�”}”(hj{Wh²hh³Nh´Nubj;Q)�”}”(hŒ*jumped*”h]”hŒjumped”…”�”}”(hjƒWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:Qhj{WubhŒó to immediately after the transition to protected mode, but before the kernel is uncompressed. No segments, except CS, are guaranteed to be set up (current kernels do, but older ones do not); you should set them up to BOOT_DS (0x18) yourself.”…”�”}”(hj{Wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjxWubhÞ)�”}”(hŒ“After completing your hook, you should jump to the address that was in this field before your boot loader overwrote it (relocated, if appropriate.)”h]”hŒ“After completing your hook, you should jump to the address that was in this field before your boot loader overwrote it (relocated, if appropriate.)”…”�”}”(hj›Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hjxWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jPUhjfWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:Uh³hÇh´M*hj4Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5Uhj0Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤h³hÇh´MhjWh²hubeh}”(h]”Œadvanced-boot-loader-hooks”ah ]”h"]”Œadvanced boot loader hooks”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ32-bit Boot Protocol”h]”hŒ32-bit Boot Protocol”…”�”}”(hjÌWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÉWh²hh³hÇh´M-ubhÞ)�”}”(hŒÝFor machine with some new BIOS other than legacy BIOS, such as EFI, LinuxBIOS, etc, and kexec, the 16-bit real mode setup code in kernel based on legacy BIOS can not be used, so a 32-bit boot protocol needs to be defined.”h]”hŒÝFor machine with some new BIOS other than legacy BIOS, such as EFI, LinuxBIOS, etc, and kexec, the 16-bit real mode setup code in kernel based on legacy BIOS can not be used, so a 32-bit boot protocol needs to be defined.”…”�”}”(hjÚWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M/hjÉWh²hubhÞ)�”}”(hXžIn 32-bit boot protocol, the first step in loading a Linux kernel should be to setup the boot parameters (struct boot_params, traditionally known as "zero page"). The memory for struct boot_params should be allocated and initialized to all zero. Then the setup header from offset 0x01f1 of kernel image on should be loaded into struct boot_params and examined. The end of setup header can be calculated as follow::”h]”hX¡In 32-bit boot protocol, the first step in loading a Linux kernel should be to setup the boot parameters (struct boot_params, traditionally known as “zero pageâ€�). The memory for struct boot_params should be allocated and initialized to all zero. Then the setup header from offset 0x01f1 of kernel image on should be loaded into struct boot_params and examined. The end of setup header can be calculated as follow:”…”�”}”(hjèWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M4hjÉWh²hubj)�”}”(hŒ$0x0202 + byte value at offset 0x0201”h]”hŒ$0x0202 + byte value at offset 0x0201”…”�”}”hjöWsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M<hjÉWh²hubhÞ)�”}”(hŒûIn addition to read/modify/write the setup header of the struct boot_params as that of 16-bit boot protocol, the boot loader should also fill the additional fields of the struct boot_params as described in chapter Documentation/arch/x86/zero-page.rst.”h]”hŒûIn addition to read/modify/write the setup header of the struct boot_params as that of 16-bit boot protocol, the boot loader should also fill the additional fields of the struct boot_params as described in chapter Documentation/arch/x86/zero-page.rst.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M>hjÉWh²hubhÞ)�”}”(hŒ‡After setting up the struct boot_params, the boot loader can load the 32/64-bit kernel in the same way as that of 16-bit boot protocol.”h]”hŒ‡After setting up the struct boot_params, the boot loader can load the 32/64-bit kernel in the same way as that of 16-bit boot protocol.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MChjÉWh²hubhÞ)�”}”(hŒ’In 32-bit boot protocol, the kernel is started by jumping to the 32-bit kernel entry point, which is the start address of loaded 32/64-bit kernel.”h]”hŒ’In 32-bit boot protocol, the kernel is started by jumping to the 32-bit kernel entry point, which is the start address of loaded 32/64-bit kernel.”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MFhjÉWh²hubhÞ)�”}”(hXÛAt entry, the CPU must be in 32-bit protected mode with paging disabled; a GDT must be loaded with the descriptors for selectors __BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat segment; __BOOT_CS must have execute/read permission, and __BOOT_DS must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %esi must hold the base address of the struct boot_params; %ebp, %edi and %ebx must be zero.”h]”hXÛAt entry, the CPU must be in 32-bit protected mode with paging disabled; a GDT must be loaded with the descriptors for selectors __BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat segment; __BOOT_CS must have execute/read permission, and __BOOT_DS must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %esi must hold the base address of the struct boot_params; %ebp, %edi and %ebx must be zero.”…”�”}”(hj.Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MJhjÉWh²hubeh}”(h]”Œbit-boot-protocol”ah ]”h"]”Œ32-bit boot protocol”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M-ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ64-bit Boot Protocol”h]”hŒ64-bit Boot Protocol”…”�”}”(hjGXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjDXh²hh³hÇh´MSubhÞ)�”}”(hŒoFor machine with 64bit cpus and 64bit kernel, we could use 64bit bootloader and we need a 64-bit boot protocol.”h]”hŒoFor machine with 64bit cpus and 64bit kernel, we could use 64bit bootloader and we need a 64-bit boot protocol.”…”�”}”(hjUXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MUhjDXh²hubhÞ)�”}”(hX¶In 64-bit boot protocol, the first step in loading a Linux kernel should be to setup the boot parameters (struct boot_params, traditionally known as "zero page"). The memory for struct boot_params could be allocated anywhere (even above 4G) and initialized to all zero. Then, the setup header at offset 0x01f1 of kernel image on should be loaded into struct boot_params and examined. The end of setup header can be calculated as follows::”h]”hX¹In 64-bit boot protocol, the first step in loading a Linux kernel should be to setup the boot parameters (struct boot_params, traditionally known as “zero pageâ€�). The memory for struct boot_params could be allocated anywhere (even above 4G) and initialized to all zero. Then, the setup header at offset 0x01f1 of kernel image on should be loaded into struct boot_params and examined. The end of setup header can be calculated as follows:”…”�”}”(hjcXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MXhjDXh²hubj)�”}”(hŒ$0x0202 + byte value at offset 0x0201”h]”hŒ$0x0202 + byte value at offset 0x0201”…”�”}”hjqXsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´M`hjDXh²hubhÞ)�”}”(hŒûIn addition to read/modify/write the setup header of the struct boot_params as that of 16-bit boot protocol, the boot loader should also fill the additional fields of the struct boot_params as described in chapter Documentation/arch/x86/zero-page.rst.”h]”hŒûIn addition to read/modify/write the setup header of the struct boot_params as that of 16-bit boot protocol, the boot loader should also fill the additional fields of the struct boot_params as described in chapter Documentation/arch/x86/zero-page.rst.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MbhjDXh²hubhÞ)�”}”(hŒ¥After setting up the struct boot_params, the boot loader can load 64-bit kernel in the same way as that of 16-bit boot protocol, but kernel could be loaded above 4G.”h]”hŒ¥After setting up the struct boot_params, the boot loader can load 64-bit kernel in the same way as that of 16-bit boot protocol, but kernel could be loaded above 4G.”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MghjDXh²hubhÞ)�”}”(hŒšIn 64-bit boot protocol, the kernel is started by jumping to the 64-bit kernel entry point, which is the start address of loaded 64-bit kernel plus 0x200.”h]”hŒšIn 64-bit boot protocol, the kernel is started by jumping to the 64-bit kernel entry point, which is the start address of loaded 64-bit kernel plus 0x200.”…”�”}”(hj›Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MkhjDXh²hubhÞ)�”}”(hX1At entry, the CPU must be in 64-bit mode with paging enabled. The range with setup_header.init_size from start address of loaded kernel and zero page and command line buffer get ident mapping; a GDT must be loaded with the descriptors for selectors __BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat segment; __BOOT_CS must have execute/read permission, and __BOOT_DS must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %rsi must hold the base address of the struct boot_params.”h]”hX1At entry, the CPU must be in 64-bit mode with paging enabled. The range with setup_header.init_size from start address of loaded kernel and zero page and command line buffer get ident mapping; a GDT must be loaded with the descriptors for selectors __BOOT_CS(0x10) and __BOOT_DS(0x18); both descriptors must be 4G flat segment; __BOOT_CS must have execute/read permission, and __BOOT_DS must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %rsi must hold the base address of the struct boot_params.”…”�”}”(hj©Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MohjDXh²hubeh}”(h]”Œid1”ah ]”h"]”Œ64-bit boot protocol”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MSubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ"EFI Handover Protocol (deprecated)”h]”hŒ"EFI Handover Protocol (deprecated)”…”�”}”(hjÂXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¿Xh²hh³hÇh´MzubhÞ)�”}”(hXThis protocol allows boot loaders to defer initialisation to the EFI boot stub. The boot loader is required to load the kernel/initrd(s) from the boot media and jump to the EFI handover protocol entry point which is hdr->handover_offset bytes from the beginning of startup_{32,64}.”h]”hXThis protocol allows boot loaders to defer initialisation to the EFI boot stub. The boot loader is required to load the kernel/initrd(s) from the boot media and jump to the EFI handover protocol entry point which is hdr->handover_offset bytes from the beginning of startup_{32,64}.”…”�”}”(hjÐXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M|hj¿Xh²hubhÞ)�”}”(hXTThe boot loader MUST respect the kernel's PE/COFF metadata when it comes to section alignment, the memory footprint of the executable image beyond the size of the file itself, and any other aspect of the PE/COFF header that may affect correct operation of the image as a PE/COFF binary in the execution context provided by the EFI firmware.”h]”hXVThe boot loader MUST respect the kernel’s PE/COFF metadata when it comes to section alignment, the memory footprint of the executable image beyond the size of the file itself, and any other aspect of the PE/COFF header that may affect correct operation of the image as a PE/COFF binary in the execution context provided by the EFI firmware.”…”�”}”(hjÞXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‚hj¿Xh²hubhÞ)�”}”(hŒEThe function prototype for the handover entry point looks like this::”h]”hŒDThe function prototype for the handover entry point looks like this:”…”�”}”(hjìXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mˆhj¿Xh²hubj)�”}”(hŒUvoid efi_stub_entry(void *handle, efi_system_table_t *table, struct boot_params *bp);”h]”hŒUvoid efi_stub_entry(void *handle, efi_system_table_t *table, struct boot_params *bp);”…”�”}”hjúXsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jh³hÇh´MŠhj¿Xh²hubhÞ)�”}”(hX'handle' is the EFI image handle passed to the boot loader by the EFI firmware, 'table' is the EFI system table - these are the first two arguments of the "handoff state" as described in section 2.3 of the UEFI specification. 'bp' is the boot loader-allocated boot params.”h]”hX ‘handle’ is the EFI image handle passed to the boot loader by the EFI firmware, ‘table’ is the EFI system table - these are the first two arguments of the “handoff stateâ€� as described in section 2.3 of the UEFI specification. ‘bp’ is the boot loader-allocated boot params.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŒhj¿Xh²hubhÞ)�”}”(hŒXj¼Xj¹Xj}YjzYj^ZjwYj]ZjZZjHZjEZjUZjRZuŒ nametypes”}”(jjZ‰jr‰jZ‰j8M‰jN‰jôP‰jÆQ‰j�R‰j´T‰jU‰j�V‰jW‰jÆW‰jAX‰j¼X‰j}Y‰j^Zˆj]Z‰jHZˆjUZˆuh}”(jgZhÊjojøjWjuj5Mj]jNj;MjñPjNjÃQj÷PjŠRjÉQj±Tj�Rj Uj·TjŒVjUjýVj’VjÃWjWj>XjÉWj¹XjDXjzYj¿XjwYj€YjZZj€YjEZj?ZjRZjLZuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j�ZKs…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ9Hyperlink target "pe-coff-entry-point" is not referenced.”…”�”}”hjýZsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjúZubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”M�uh1jøZubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.