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