Спецификация Multiboot - это открытый стандарт, описывающий, как загрузчик может загружать ядро операционной системы x86 . [1] [2] Спецификация позволяет любой совместимой реализации загрузчика загружать любое совместимое ядро операционной системы . Таким образом, он позволяет различным операционным системам и загрузчикам работать вместе и взаимодействовать без необходимости использования загрузчиков для конкретных операционных систем. В результате это также упрощает сосуществование различных операционных систем на одном компьютере, что также известно как мультизагрузка .
Спецификация была первоначально создана в 1995 году и разработана Free Software Foundation . Микроядра GNU Hurd , VMware ESXi, Xen и L4 должны быть загружены с использованием этого метода. GNU GRUB - эталонная реализация, используемая в операционной системе GNU и других операционных системах. [3] По состоянию на июль 2019 [Обновить]года последняя версия спецификации Multiboot - 0.6.96, определенная в 2009 году. [2] Несовместимая вторая итерация с поддержкой UEFI , спецификация Multiboot2, был представлен позже. По состоянию на апрель 2019 [Обновить]года последней версией Multiboot2 является 2.0, определенная в 2016 году. [4]
Технический обзор [2] [4]
В то время как Multiboot определяет заголовок как структуру, которая должна присутствовать в файле изображения в целом, в Multiboot2 поля или группа полей имеют тег типа, который позволяет исключить их из заголовка Multiboot2.
В файле образа ОС заголовок должен быть в первых 8192 (2¹³) байтах для мультизагрузки и 32768 (2¹⁵) байтов для мультизагрузки2. Загрузчик ищет магический номер, чтобы найти заголовок: 0x1BADB002 для мультизагрузки и 0xE85250D6 для мультизагрузки2.
В заголовке entry_addr
указывает на код, в котором управление передается ОС. Это позволяет использовать разные форматы исполняемых файлов (см. Сравнение форматов исполняемых файлов ). Если ядро ОС является файлом ELF ( исполняемый и подключаемый формат ), каковым он является для ядра Linux, это можно не указывать для Multiboot2. Формат ELF очень распространен в мире с открытым исходным кодом и имеет собственное поле ( e_entry
), содержащее точку входа.
Перед тем, как перейти к точке входа в ОС, загрузчик должен предоставить структуру загрузочной информации, чтобы сообщить ОС, как она покинула систему; для Multiboot это структура, а для Multiboot2 каждое поле (группа) имеет тег типа и размер.
Смотрите также
- El Torito (стандарт CD-ROM) , для загрузки с дисков CD-ROM
- Список инструментов для создания Live USB-систем
- Живой USB
- Мультизагрузка
Рекомендации
- ↑ Мерино Видал, Хулио М. (1 марта 2007 г.), "Making NetBSD Multiboot-Compatible" , ONLamp.com , O'Reilly Media , получено 2 октября 2012 г..
- ^ а б в Форд, Брайан; Болейн, Эрих Стефан; ФСПО (2009). «Спецификация мультизагрузки» (изд. 0.6.96). GNU . Проверено 11 октября 2013 .
- ^ «Загрузка с GRUB» . OSDEV. 25 июня 2006 года архивации с оригинала на 28 декабря 2008 года.
- ^ а б «Спецификация Multiboot2 версии 2.0» . www.gnu.org . Проверено 7 апреля 2019 .
Внешние ссылки
- «Мультизагрузка» . OSDev Wiki .