Это могло быть напрасно, поскольку я знаю, что написать операционную систему невыносимо сложно (особенно самому).
Я не собираюсь создавать следующий Linux или Windows.
Я знаю, что это будет ужасно, с ошибками и не будет работать, но это нормально.
Я хочу писать все сам, на Ассемблере , C и (немного) C ++ .
Это будущий проект, так как в данный момент я занят другими делами и у меня нет времени, но я решил, что спрошу его сейчас, так что, возможно, я смогу получить много ответов на этот вопрос, и это могло бы создавать и быть полезным ресурсом для такого подхода (все остальное, что я видел, включало создание minix, использование существующего загрузчика, создание его в программе виртуальной загрузки и т. д.).
Я хочу настроить один из моих старых настольных компьютеров с монитором, клавиатурой и мышью и начать работу с пустым жестким диском.
Я хочу узнать, как написать свой собственный загрузчик (я нашел много ресурсов по этому поводу, но для полноты, пожалуйста, все же добавьте несколько хороших), мой собственный драйвер USB (если это необходимо), драйвер компакт-диска (если это необходимо ) и т. д. Все, с нуля.
Как мне поместить код в компьютер? Лучше всего это делать с дискеты? Может ли большинство компьютеров сделать это с USB-накопителя?
Какие драйверы мне нужны, и можете ли вы предложить какие-либо рекомендации по их созданию?
После загрузки - что дальше? Как перейти в защищенный режим и т. Д.
Как управлять памятью без помощи операционной системы? Я просто использую те адреса, которые хочу? Инициализация не требуется?
Что, несомненно, меня запутает?
Как сделать как командную строку O / S, так и графическую?
На чем построена графическая операционная система? Например, как мне сделать что-то вроде командной строки со шрифтом и изображением вверху?
Где я могу прочитать о настройке многозадачной среды? (т. е. наличие двух графических командных строк, работающих рядом).
Как мне настроить своего рода оконную систему? Как отображать графику на экране после настройки простой многозадачности?
Поверьте, я понимаю, что это очень сложный проект, и я, вероятно, никогда не дойду до его завершения или написания чего-нибудь полезного.
Я не упомянул еще множество других вещей, и если вы думаете о них, можете добавить их тоже.
Пожалуйста, укажите одну «тему» для каждого ответа - например, драйверы USB, а затем, возможно, список ресурсов, на что следует обратить внимание и т. Д.
Также, пожалуйста, не предлагайте строить другой O / S или уже существующий код. Я знаю, что буду читать много уже существующего кода (например, ядра Linux или примеров ресурсов, существующих драйверов и т.д.), но в конечном итоге я хочу писать все самостоятельно. Я знаю, что должен опираться на что-то еще, и есть много других вопросов по этому поводу, которые я могу прочитать, если передумаю и пойду по этому пути. Но это все о том, чтобы сделать все с нуля.
Есть предложения, как сделать это графическим? Разные видеорежимы и как с ними работать и тд?