The Multiboot specification is an open standard describing how a boot loader can load an x86 operating system kernel.[1][2] The specification allows any compliant boot-loader implementation to boot any compliant operating-system kernel. Thus, it allows different operating systems and boot loaders to work together and interoperate, without the need for operating system–specific boot loaders. As a result, it also allows easier coexistence of different operating systems on a single computer, which is also known as multi-booting.

The specification was originally created in 1995 and developed by the Free Software Foundation. GNU Hurd, VMware ESXi, Xen, and L4 microkernels all need to be booted using this method. GNU GRUB is the reference implementation used in the GNU operating system and other operating systems.[3]  As of July 2019, the latest version of Multiboot specification is 0.6.96, defined in 2009.[2] An incompatible second iteration with UEFI support, Multiboot2 specification, was later introduced. As of April 2019, the latest version of Multiboot2 is 2.0, defined in 2016.[4]

Technical overview

edit

Sources:[2][4]

While Multiboot defines a header as a struct, which needs to be present in the image file as a whole, in Multiboot2, fields or group of fields have a type tag, which allows them to be omitted from the Multiboot2 header.

Within the OS image file, the header must be in the first 8192 (213) bytes for Multiboot and 32768 (215) bytes for Multiboot2. The loader searches for a magic number to find the header, which is 0x1BADB002 ("1 bad boot") for Multiboot[5] and 0xE85250D6 for Multiboot2.

In the header, entry_addr points to the code where control is handed over to the OS. This allows different executable file formats (see Comparison of executable file formats). If the OS kernel is an ELF file (Executable and Linkable Format), which it is for the Linux kernel, this can be omitted for Multiboot2. The ELF format is very common in the open source world and has its own field (e_entry) containing the entry point.

Before jumping to the OS entry point, the boot loader must provide a boot information structure to tell the OS how it left the system; for Multiboot, this is a struct, and for Multiboot2, every field (group) has a type tag and a size.

See also

edit

References

edit
  1. ^ Merino Vidal, Julio M. (March 1, 2007), "Making NetBSD Multiboot-Compatible", ONLamp.com, O'Reilly Media, archived from the original on September 20, 2012, retrieved October 2, 2012.
  2. ^ a b c Ford, Bryan; Boleyn, Erich Stefan; FSF (2009). "Multiboot specification" (0.6.96 ed.). GNU. Retrieved 2013-10-11.
  3. ^ "Booting with GRUB". OSDEV. June 25, 2006. Archived from the original on December 28, 2008.
  4. ^ a b "Multiboot2 Specification version 2.0". www.gnu.org. Retrieved 7 April 2019.
  5. ^ Boleyn, Erich Stefan (4 April 1995). "Comments on the 'MultiBoot Standard' proposal". Uruk.org. Archived from the original on 26 March 2023.
edit


📚 Artikel Terkait di Wikipedia

Multi-booting

on Windows Ext2Fsd support for ext2/3/4 under Microsoft Windows Multiboot Specification Virtualization Windows To Go XOSL – a free, graphical, open source

Functional specification

Interface Multiboot specification Real-time specification for Java Single UNIX Specification Bit specification (disambiguation) Design specification Diagnostic

GNU GRUB

the reference implementation of the Free Software Foundation's Multiboot Specification, which provides a user the choice to boot one of multiple operating

Limine (bootloader)

GRUB, as well as its own boot protocol as an alternative to the Multiboot specification, with the goal of reducing the amount of work needed for a kernel

List of tools to create bootable USB

across reboots. List of Linux distributions that run from RAM Multiboot specification System installer "Multiple ISO on one USB". balenaForums. 2021-11-15

List of computer standards

Exchange Schema". The Khronos Group. July 19, 2011. "MPI Documents". "Multiboot Specification version 0.6.96". Open Document V1.2 approved as OASIS Standard

GNU Hurd

Machine (KVM) Linux-libre – a free version of the Linux kernel Multiboot Specification "GNU Hurd ported to AArch64, and more Hurd news". osnews.com. Retrieved

Hexspeak

extremely limited GPU access. Leet file (command) "Multiboot mailing list archive". "Multiboot specifications". "Macintosh Technical Notes 1992" (PDF). "Why