Как мне программно создать загрузочный компакт-диск?
Вопрос
Я использую учебник barebones в качестве основы для операционной системы, над которой я работаю, и, похоже, это более старый учебник:он должен был скомпилировать ядро до образа дискеты, а затем загрузить его с помощью GRUB.
В принципе, я все еще хочу использовать GRUB, но я бы хотел, чтобы моя операционная система запускалась с компакт-диска.Основная причина заключается в том, что на самом деле у меня нет реального доступного дисковода гибких дисков (в настоящее время я тестирую в VirtualBox), и поэтому у меня нет возможности протестировать свою ОС на реальном оборудовании.
Я покопался в сети и могу найти множество утилит, которые создают загрузочный компакт-диск из образа дискеты, но для всех них, похоже, требуется настоящий дисковод для гибких дисков, к тому же это не совсем то, что я ищу.В идеале я хотел бы иметь возможность получить загрузочный компакт-диск на этапе создания, без необходимости сначала помещать образ на дискету, что кажется довольно бессмысленным.
Я думаю, это самый простой способ ответить на этот вопрос:Как мне настроить GRUB для чтения образа моего ядра с компакт-диска?Понадобится ли мне специальная утилита, чтобы сделать это из Windows?(Ядро пока не может само скомпилироваться, это ненадолго)
Спасибо!
Решение
Я нашел решение для своего проекта самостоятельно, воспользовавшись некоторыми советами сотрудников OSDev.Существует утилита под названием mkisofs (которая может запускаться под Windows с использованием библиотеки cygwin dll), которая берет каталог и превращает этот каталог в ISO-образ, который можно записать на компакт-диск.Используя флаг -b, вы можете указать, какой файл должен находиться в загрузочном секторе диска.
Решение состоит просто в том, чтобы иметь GRUB в bootsector и использовать GRUB для загрузки образа ядра, который я могу легко скомпилировать в виде без дискеты.
Другие советы
AFAIK загрузочный компакт-диск - это почти то же самое, что загрузочная дискета.Вам нужно поместить загрузчик (GRUB) в загрузочный сектор и т.д., BIOS позаботится о низкоуровневых настройках, пока вы не переключитесь в защищенный режим.
Вероятно, вам придется создать свой образ, а затем перенести его на реальный физический диск.
Вот спецификация загрузочного компакт-диска El Torito:http://www.phoenix.com/NR/rdonlyres/98D3219C-9CC9-4DF5-B496-A286D893E36A/0/specscdrom.pdf
Редактировать:Альтернативным способом тестирования вашего ядра был бы загрузочный USB-накопитель.Опять же, BIOS позаботится о низкоуровневом USB-интерфейсе до тех пор, пока вы не включите A20 и не перейдете в защищенный режим.
Если вам интересно посмотреть на код, то Создатель изображений Moblin вероятно, это хорошее приложение, которое стоит проверить.Он написан на python и может создавать различные типы загрузочных образов (CD, USB и NAND) как для текущих, так и для устанавливаемых конфигураций Moblin Linux.