Comments 25
Выдал инвайт автору. Тема то интересная, но не только с точки велосипедирования ядер, а ещё и с точки зрения программирования под ретро x86-машинки, что называется, Bare Metal. Особенно контрастирует с недавней статьей Сергея Долина об аппаратном апгрейде ретро-пк, нужны статьи и про софт :)
Надеюсь тут будет интересная и объективная дискуссия
int 0x10
Но это же уже не bare metal :) Да и на x86 очередную ОС пилить - скучно и неинтересно, там не то что все тропинки известны, там такая дорога протоптана, что свернуть сложно...
Лучше уж на Risc-V осваиваться, IMHO перспективнее...
Вообще, как по мне, сейчас в осеписании лучше тренироваться на достаточно мощном микроконтроллере. Единственное, что не сделаешь -- это виртуальную память (за отсутствием MMU), но она -- далеко не самая сложная и объёмная часть ОС. Ну а всё остальное вполне делается на каком-нибудь, скажем, STM32H7.
Но это же уже не bare metal :)
Да почему? В контексте IBM-PC, вызовы к биосу можно простить и условно обозвать это Bare-metal :)
Ну, для полноценной ОС дёргать BIOS в процессе работы -- не дело. Этап загрузки и инициализации -- другое дело; более того, это неизбежно: как иначе узнаешь конфигурацию железа, на котором работаешь (в частности, объём установленной памяти, наличие портов и т.п. вещи, которые нельзя надёжно определить стандартными механизмами PnP).
Надеюсь тут будет интересная и объективная дискуссия
Таких статей уже полно на хабре, но они все заканчиваются на уровне условного загрузчика. А дальше запал иссякает. И к собственно ОС это не имеет почти никакого отношения, потому что разработка ОС начинается не с загрузчика, а с проработки стратегии распределения ресурсов системы: памяти, вычислительной мощи, места на носителях (файловой системы), контроля доступа и т.д. А вот про это почему-то никто не пишет, а ведь это темы довольно сложные и надеюсь интересные.
Просто объём очень большой, да и более-менее разбирающихся (реально) в этих вопросах не так много.
Есть довольно много проектов где и щедуллер запилят, и дисковый ввод-вывод реализуют, и поддержку PCI-карточек :)
я может скоро буду писать ещё дальше статьи по созданию ос, но не знаю(я уже просто свою ос написал полную)
Надеюсь тут будет интересная и объективная дискуссия
Вряд ли, потому что статью написала LLM.
Из этих кусков кода не составить ОС. Там загрузочный сектор выводит hello world, и на этом все, дальше он ничего не грузит.
Затем предлагается использовать grub, но как скомпилировать "код ядра" в форму, которую сможет запустить grub, речи не идет.
Короче, это обман, расходимся.
А у меня в своё время (первая половина 90-х) была своя почти полноценная ОС -- даже с файловой системой и виртуальной памятью (но ещё без поддержки дисплеев -- её сделать не успел, в качестве консоли пишмашку использовал). Правда, не на ПК, а на ЕС ЭВМ (советский аналог ИБМовской Системы 370). Успешно крутилась на ЕС-1035 и ЕС-1130, а также на виртуальной машине под СВМ ЕС (VM/370 в девичестве). Но, есно, никаких средств разработки в ней не было: использовались штатный ассемблер и компоновщик из ОС ЕС (или БОС, если под СВМ).
А где собственно, код и выложенный эмулятор для запуска ОС?
Где инструкция как собирать?
Что такое inb?
И как всё это скомпоновать и запустить?
inb - чтение из порта по указанному адресу.
И как всё это скомпоновать и запустить?
Да не будет оно работать, там даже с загрузчиком косяк. Если вы даже соберёте это ядро и загрузчик (и вообще непонятно, зачем там приплели GRUB), то никакой "Х" вы на экране никогда не увидите, это просто пример программы для загрузочного сектора диска на ассемблере, ничего, собственно, загрузочного оно не делает. Читайте хорошие статьи, а не очередную LLMщину.
У меня были идеи взять, linux версии 1.0 и попробовать разобраться, собрать, порефакторить код. И взять какой нить debian 1.2 и подменить на модифицированное ядро.
И далее, описать подсистемы. Как работает и т.д Вот это уже довольно интересно.
Не надо Linux. Для этого есть Xv6.
Хоть и коротко, но по делу и многие аспекты ОС затронуты.
На хабре уже полно статей вида "ОС с нуля, часть 1: загрузчик". После них мотивация у автора обычно иссякает и продолжения никто не увидит уже никогда. А вот более сложные темы типа распределения памяти, управления ресурсами процессора, работы с каким-то другим железом, отличным от клавиатуры и видеокарты в текстовом режиме, разбираются очень редко.
Интересная тема. По x86 и ARM куча "hello world"-ов и наверное под RISC-V можно поэтапно развернуть материал с 0 до ядра с базовой функциональностью.
Как разработать операционную систему

Если серьезно, то для современного x86 лучше даже не пытаться - замучаешься бороться с EFI/UEFI, инициализацией защищенного режима, огранизацией виртуальной памяти и т.д.
Мне когда стало интересно разобраться с виртуальной памятью и переключением задач, я синтезировал себе в ПЛИС небольшую СнК на базе RISC-V с MMU и начал эксперименты с Xv6. Код ядра Xv6 хорош тем, что он легко помещается в отдельно взятую голову, одну. На Хабре есть серия статей про Xv6 от пользователя @sa2304.
C++ в хабах - для привлечения внимания?
Статья, очевидно, сгенерена LLM
В статье не даётся более-менее исчерпывающая инструкция по сборке минимальной базы ОС, вместо этого много обрывочной инфо, которой явно не достаточно, чтобы собрать хоть что-то рабочее
Ассемблер, как много в этом слове (буквально). Никогда не получалось написать "hello world", хотя для интереса смог даже на языке Ook.
Как создать простую операционную систему с нуля