Я бы хотел создать новую операционную систему для компьютеров x86 для ПК. Я бы хотел, чтобы он был 64-битным, но, возможно, выполнялся как 32-разрядный.
У меня есть такие вопросы:
С чего вы начинаете работать сначала? Знать, с чего начать писать свою собственную операционную систему, кажется мне сложной темой, поэтому меня интересует ваш вклад.
Как правило, как создать собственную 32-разрядную/64-разрядную операционную систему или хорошие ресурсы, в которых упоминается полезная информация о том, как писать собственную операционную систему для компьютеров x86. Меня не волнует, как старые источники до тех пор, пока они все еще актуальны и полезны для того, что я делаю.
Я знаю, что хочу, чтобы у него были драйверы ядра, напрямую связанные с периферийным оборудованием. Где я должен искать рекомендации и документацию для программирования и понимания интерфейса к периферийному оборудованию, с которым будет взаимодействовать операционная система? Мне нужно будет понять, как операционная система получит вход и взаимодействует с клавиатурами, мышами, компьютерными мониторами, жесткими дисками, USB и т.д. И т.д. Это, вероятно, область, о которой я знаю меньше всего.
У меня есть руководства по набору инструкций Intel и стали более знакомы с программированием на сборку, так что процессорная сторона вещей - это то, что я знаю больше всего.
В этот момент я думаю, что я хотел бы реализовать системные вызовы Linux в своей операционной системе, чтобы программы, которые запускались в Linux, могли работать в моей операционной системе. Я хочу, чтобы моя операционная система использовала двоичный формат ELF. Интересно, какие препятствия я должен преодолеть для достижения этой совместимости Linux. Являются ли основные функции реализацией системных вызовов, которые предоставляет Linux, и используя формат ELF? Что еще?
Мне также интересны мысли людей о том, почему не может быть хорошей идеей сделать вашу собственную операционную систему, и почему это хорошая идея для создания собственной операционной системы.
Спасибо за любой вклад.