Comments 15
Первое, что я понял, после первых же дней разработки ОС, когда этим занимался в 2013 году - что не надо писать stage1, а использовать grub2 и multiboot-спецификацию
Либо использовать UEFI загрузчик, в котором есть EFI Boot Services, предоставляющие довольно обширный функционал.
да, но это немного сложнее, хотя и позволяет напрямую ядро загрузить. А grub и на bios и на uefi работает. Но, разумеется на uefi ориентировать правильно - bios и mbr умерли
grub + multiboot более универсален в том плане, что можно ставить эксперименты по запуску на реальном железе -конфигурируешь кастомный айтем в меню и все. По своему опыту сужу, так как у меня мультибут с винда + линь. А винда загрузку из uefi напрямую не поддерживает, насколько мне известно, у нее старт с bootmgrfw.efi а далее уже ядро
Если вам нравится сама идея своей ОС, позвольте дать совет.
Забудьте на время про загрузчики, bios, драйвера и даже про видеокарту. Это огромный объем работ, который практически невозможно полноценно сделать одному. Может когда-нибудь ИИ поможет, но пока и от него толку мало в этой части. Драйвер для nvidia под вашу ОС он вам не напишет, хотя загрузчик может и сможет написать.
Начните с базовых вещей. Что делает практически любая неспециализированная ОС? Распределяет и управляет ресурсами: памятью, вычислительными мощностями, временем, привилегиями (доступом), энергопотреблением и т. д. Плюс имеет некую структуру для хранения и управления всем хозяйством, например через файлы (тогда это файловая система), или через что-то другое. И вот эти базовые вещи можно спокойно писать на любом выбранном языке, практически под любую неспециализированную архитектуру и отлаживать эти алгоритмы прямо как обычные программы. Я имею ввиду: систему управлением памятью, планировщик задач, файловую систему, систему прав и доступа, межпроцессное взаимодействие, синхронизация, систему управления временем и прочее. Это само по себе довольно интересно, здесь до сих пор делаются многие улучшения, которые потом идут в реальные ОС, и отлаживать это не так сложно, как драйвера под редкие железки.
Мне консольный калькулятор написать надо а тут ОС пишут Калькулятор Славянских величин
Мне понравилась статья - благодаря таким авторам как вы, Хабр бывает тортом.
Есть один вопрос по этой области. Вот, существует проект sectorlisp который представляет собой интерпретатор скриптового ЯП который поместился в эти же 512 байт. Есть ли смысл у этой штуковины хотя бы в теории, можно ли на таком загрузчике построить какую-то серьёзную ОС? Или будут проблемы с использованием реального оборудования?
спасибо. это зависит от самого интерпретатора, пока не смотрел. главная проблема — ОС должна быть быстрой, а интерпретатор накладывает большие расходы. еще есть sectorC, но я пока ни си ни лисп не пробовал. самое главное в таком интерпретаторе — возможность взаимодействия с портами ввода/вывода (inb, outb, inw, outw) и с регистрами, но это уже очень сильно увеличит размер этого интерпретатора, и он уже потеряет свою главную фичу — размер.
самый главный минус — производительность.
Какой-то нейрослоп. Начать хоть с загрузчика: 512 байт в MBR - это, конечно, круто, но этому коду доступен в реальном режиме BIOS. Он - сюрприз - доступен и из защищенного: да, с костылями-трамплинами, постоянным дрыгоножеством в CR0.PE, но факт. И уже лет 15 везде UEFI, где все по-другому: там даже загрузчик отдельный не нужен. И это еще не затрагивая не-х86, где тем более везде все свое (хотя это все обычно оказывается теми же U-Boot и EDK2).
Некоторые будут говорить что тяжелее всего написать ОС, другие скажут игровой движок, может еще попасться драйвер.
Сейчас возможно браузер выходит вперёд.
Почему Linux и Windows популярны, а ОС которые реально лучше них — нет?
Эти ОС были первыми.
Да не были они первыми. Там и DOS есть и тот же Unix, а там ещё и всякие ZXSpectrum/Amiga существовали, кучка мейнфреймных ОС, да хоть тот же Plan 9.
Вот что я понял за 4 месяца написания ОС