Как правильно загружать своё ядро? При попытке начать кодировать на голом железе (x86_64) встал вопрос о загрузчике. Напрашиваются следующие варианты: 1. Самописный BIOS-загрузчик Плюс: Всё просто и понятно. Минусы: Гемморой ручной загрузки ядра, переключения real mode -> long mode. Устаревшая технология 2. Использование multiboot specification + GRUB2 Плюс: Вся работа загрузки снимается с плеч. Минусы: Не могу оценить трудозатраты на поддержку этой спецификации. Один и тот же образ ядра может загружаться как через BIOS, так и через (U)EFI? 3. Оформить образ ядра как UEFI-application, так чтобы он напрямую загружался железом. Плюс: Не нужен специальный загрузчик. Минусы: Нельзя отделить сборку ядра от сборки UEFI-образа, что повлечёт проблемы переносимостью сборки (сложные Makefiles, требование наличия правильных компиляторов и инструментов). 4. Реализовать самописный UEFI-загрузчик для своего ядра Плюс: нет геммороя сборки загрузчика, может распространяться в бинарном виде Минусы: необходимость глубоко разбираться с UEFI API, что не сильно мне улыбается. Какой из методов кажется вам более правильным, менее трудоёмким и более перспективным? И почему? Спасибо.
Если у вас есть опыт работы с UEFI и вам не сложно изучать новые технологии, то самописный UEFI-загрузчик для вашего ядра может быть наиболее правильным и перспективным выбором. Этот метод позволит вам контролировать процесс загрузки ядра и упростит переносимость сборки вашего ядра.
Если же вы хотите избежать геммороя сборки загрузчика и оценить трудозатраты на поддержку спецификации multiboot + GRUB2, то этот метод может быть более удобным для вас.
В целом, выбор зависит от ваших потребностей, уровня опыта и желания изучать новые технологии. Важно помнить, что каждый метод имеет свои плюсы и минусы, и идеального решения может не существовать.
Если у вас есть опыт работы с UEFI и вам не сложно изучать новые технологии, то самописный UEFI-загрузчик для вашего ядра может быть наиболее правильным и перспективным выбором. Этот метод позволит вам контролировать процесс загрузки ядра и упростит переносимость сборки вашего ядра.
Если же вы хотите избежать геммороя сборки загрузчика и оценить трудозатраты на поддержку спецификации multiboot + GRUB2, то этот метод может быть более удобным для вас.
В целом, выбор зависит от ваших потребностей, уровня опыта и желания изучать новые технологии. Важно помнить, что каждый метод имеет свои плюсы и минусы, и идеального решения может не существовать.