Лаборатория IT - Загрузчик Simple OS
Доброго дня, уважаемые читатели. Начинаем ваять загрузчик для нашей Simple OS.
Последние приготовления
В этой статье мы будем использовать пакет о котором я еще не рассказывал. Этот пакет называется - xorriso. Предназначено данное ПО для создания iso образов. Конечно, его богатый функционал, в рамках специализации, я не буду задействовать полностью. Мне достаточно лишь возможности создавать CD-диск с GRUB.
Для создания загрузочного диска нужно подготовить файлы, создать структуру папок и собрать iso образ.
Настройка GRUB
Структура диска должна быть следующая:
Корневая директория называется - boot. Внутри располагается собранный файл ядра операционной системы и папка - grub, которая содержит специальный конфигурационный файл.
Выше показан простейший файл конфигурации grub. Я добавил второй пункт для того, чтобы продемонстрировать работу загрузчика. После сборки iso, перед запуском ядра, на экране отобразится картинка похожая на этот скриншот.
Подготовка загрузчика
Теперь я постараюсь применить те знания, которые получил в предыдущей статье - GRUB и Multiboot. Сначала нужно изменить загрузчик SimpleOS так, чтобы он соответствовал спецификации.
Изменения необходимо прокомментировать. Теперь код загрузчика разбит на секции:
- .multiboot_header
- .text
- .bss
В первой секции располагаются данные для инициализации, так называемый заголовок загрузчика. Магическое число - 0xe85250d6 - свидетельствует о приверженности спецификации multiboot 2. (Опять магия!!!). Следующий байт равен 0 и это показывает, что ядро будет запущено в защищенном режиме. О режимах адресации можно прочитать в статье: Бит, байт, адресация. Далее следует размер заголовка и контрольное число. Два этих параметра рассчитываются с помощью адресов меток.
Завершающий тег заголовка - это два слова (16 бит) означающих тип и флаги. В самом конце указан размер завершающего тега тоже в атрибуте размером в машинное слово.
Секция text содержит код старта ядра. В начале указано что теперь ядро работает в 32-битном режиме и отмечена его точка старта директивой - global.
Сборка образа и запуск
Проведя все необходимые манипуляции связанные с компиляцией и копированием файлов в необходимые папки заранее подготовленной структуры, необходимо собрать образ. В терминале следует набрать такую команду:
grub-mkrescue -o ./simpleos.iso ./isofiles
На выходе я получил файл simpleos.iso. Команда grub-mkrescue входит в пакет xorriso. Образ готов. Теперь запустим его в эмуляторе с параметром -cdrom
qemu-system-i386 -cdrom simpleos.iso
После выбора операционной системы, ядро запускается в защищенном 32-битном режиме.
Картинки найдены в интернете или являются скриншотами процесса разработки.