Это сложный вопрос, потому что я уверен, что меня собираются засыпать ненавистниками, комментирующими: «Если я уже не могу написать операционную систему, я никогда не смогу написать операционную систему». Я прочитал «Современная ОС от Танембаума», «Разработка ядра Linux», «Понимание ядра Linux» и другие. Я до сих пор не знаю, смогу ли я написать операционную систему, и, только продвигаясь вперед, чтобы написать ее, я пойму, что я не делаю » не знаю. Вдобавок ко всему, ни одна из книг, которые я прочитал, даже не удосужилась описать последовательность загрузки / последовательность компиляции.
В любом случае, я ненавижу быть отрицательным, но я просто хотел бы создать пример кода из руководства bkerndev ниже и иметь абсолютно минимальную операционную систему:
http://www.osdever.net/bkerndev/index.php?the_id=90
Вы можете скачать связанный исходный код в формате zip отсюда:
http://www.osdever.net/bkerndev/bkerndev.zip
Когда вы пытаетесь скомпилировать это ядро, вы сталкиваетесь со всевозможными ошибками, вызванными тем, что часть кода повреждена. Другой пользователь искал помощь для этого здесь, при переполнении стека здесь:
а>
Хотя особой помощи не получил. Я исправил эти ошибки, добавив подчеркивания-подчеркивания флага gcc и изменив некоторые типы данных. Вы можете увидеть мой код здесь:
http://github.com/PhillipTaylor/farmix
Код будет успешно скомпилирован и оставит меня с исполняемым файлом kernel.bin, но когда я загружаюсь в него из grub, я получаю:
Ошибка 13: нераспознанный или неподдерживаемый формат (или что-то в этом роде)
Когда я беру kernel.bin прямо из zip-файла авторов и запускаю его на своем eeepc, он загружается абсолютно нормально, поэтому я думаю, что у меня проблема с правильной компиляцией кода. Я считаю, что автор собирает его на машине с Windows, но я пытаюсь скомпилировать его, используя Fedora 10 i386 с GNU GCC 4.3, и я думаю, что это является причиной проблемы, поэтому я спрашиваю вас, как мне создать действительный исполняемый файл ядро? Мне не хватает правильной цели или неправильного двоичного формата?
Я был бы очень признателен, если бы кто-нибудь помог мне сделать этот неприятный "первый шаг".