Написание ОС, даже простой командной строки, существенно отличается от прикладного программирования, которое вы увидите как разработчик Android. Parallels Desktop и другие виртуальные машины имитируют среду, в которой операционная система полагает, что она работает на реальном оборудовании, поэтому это будет эквивалентно написанию простой операционной системы на необработанном ПК.
Некоторые примеры вещей, которые вы должны быть знакомы с, чтобы написать операционную систему с нуля, являются следующие:
- Знание C и ассемблере
- Знание целевой архитектуры (в этом случай, x86)
- знание процесса загрузки для конкретного устройства
знания, необходимые, чтобы действительно быть в состоянии сделать все это без шага пошаговое руководство требует многолетнего обучения и опыта взаимодействия аппаратного и программного обеспечения, чтения таблиц с иногда отсутствующей документацией и т. д. Это часто опыт, который не получен в разработке приложений. Это связано с тем, что в операционных системах у вас не так много вещей, которые вы считаете само собой разумеющимися в разработке приложений, таких как процессы, функции ввода-вывода, структуры данных, такие как хэш-таблицы и карты, управление памятью и т. Д.
Не паникуйте! Вам не нужно все это знать, чтобы начать разработку простой ОС. Вы можете начать с учебника о том, как написать простую операционную систему, которая проведет вас через все необходимые компоненты и шаги. Есть несколько сайтов, которые предоставляют это, но лучшее, на мой взгляд, это OsDev Wiki. Там вы найдете обучающие материалы и информацию по разработке ОС, которые проведут вас через весь процесс, а также образцы хобби, которые люди сделали.
Вместо того, чтобы сфокусироваться на командной строке os, которая загружается с ISO-образа, я прочитал учебник по вики, найденный здесь: http://wiki.osdev.org/Bare_Bones. Это позволит вам начать с очень минимальной операционной системы «Hello World», которая загружается с дискеты, что намного проще, чем ISO. В этом учебном пособии достаточно подробно рассказывается о взаимодействии аппаратного и программного обеспечения и процессе загрузки.
Я считаю, что хорошие разработчики, даже те, кто пишет веб-приложения или приложения для Android, понимают аспекты низкого уровня, такие как сборка и аппаратное/программное взаимодействие. Абсолютный самый быстрый способ научиться этому - через такие обучающие программы, как это.
Удачи!
Вы можете обратиться к документации по MMURTL V1.0, которая находится по адресу http://www.ipdatacorp.com/mmurtl/, для некоторых идей. –
Я полагаю, вы не хотите проводить несколько лет в темной комнате и начинать все с нуля. Вы можете повторно использовать существующее ядро ОС для упаковки вашей «программы». См. Http://en.wikipedia.org/wiki/List_of_operating_systems#Non-proprietary, http://en.wikipedia.org/wiki/Boot_disk, http://en.wikipedia.org/wiki/Live_CD. Чего вы хотите достичь за цветным «Hello World»? – xmojmr