Обновить

Комментарии 12

Первое, что я понял, после первых же дней разработки ОС, когда этим занимался в 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).

в том то и дело, что это костыли. лучше без них, лучше использовать правильный подход, а не самый простой.

в самом начале статьи я ясно указал, что буду использовать BIOS.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации