Как стать автором
Обновить

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

ЗакрепленныеЗакреплённые комментарии
Тут просто такая ситуация…

На Хабре есть пара десятков статей, с названием «пишем ос своими руками, часть первая, загрузчик», которые как правило, не имеют продолжений. Я не в коем случае не хочу сказать, что не надо пробовать писать оси, или что не нужно выкладывать таких статей.

Но, то обстоятельство, что дальше загрузчика дело обычно не уходит, хочу отметить.
Из скольки частей будет состоять эта серия статей?
Тут просто такая ситуация…

На Хабре есть пара десятков статей, с названием «пишем ос своими руками, часть первая, загрузчик», которые как правило, не имеют продолжений. Я не в коем случае не хочу сказать, что не надо пробовать писать оси, или что не нужно выкладывать таких статей.

Но, то обстоятельство, что дальше загрузчика дело обычно не уходит, хочу отметить.

Хах, жизненно. До того, как все это изучить, я тоже зачастую натыкался на эту проблему. Что же, я все равно продолжу писать эту серию.

Писать свой загрузчик - контрпродуктивно. Лучше изучить спецификацию multiboot и применить grub2

Например вот так

http://phantomexos.blogspot.com/2013/07/phantomex-multiboot.html

http://phantomexos.blogspot.com/2013/07/phantomex-hdd-grub2.html

Писать свой загрузчик - контрпродуктивно

Нет. Даже написание простого загрузчика даёт много полезных знаний новичку и открывает двери в ос строительство.

Нельзя не согласиться

Двери в ОС-строительство открывает изучение существующих стандартов, понимание архитектуры процессора в части, прежде всего, механизма управления памятью и организации переключения задач, как на уровне ядра, так и на уровне userspace, а так же понимание организации, например системных вызовов. То есть всего того, что делает операционная система.

Для этого не надо писать свой загрузчик, можно использовать готовый.

Просто статей, начинающихся с написания загрузчика в MBR миллиард, как тут на ресурсе, так и в сети. И обычно, циклы, начинающиеся с этого, заканчиваются где-то на уровне обработки прерываний в защищенном режиме и редко заходят дальше.

Да, я понимаю, что вы хотите этим объяснить, но я пишу ОС без всякого рода готовых инструментов, кроме виртуалки и ассемблера. в этом суть. К тому же, я начал эту серию статей пару дней назад, и работаю над 3-й частью. Написание своего загрузчика в MBR, это, можно сказать, вступительный экзамен на путь разработки ОС.

первые слова из заголовка: НАПИСАНИЕ ОС С НУЛЯ

НАПИСАНИЕ ОС С НУЛЯ

Загрузчик в MBR - не является частью ОС, хоть корпорация Майкрософт до появления UEFI думала иначе (либо очень желала, чтобы все так думали)

значит, я чем-то похож мнением с Microsoft :) потом буду работать над адаптацией под UEFI. Не люблю, когда некоторые старые инструменты становятся абсолютно бесполезны. Эх

Надо будет запустить это на реальном ПК, интересно что получится в конце

ага :)

я тоже лет 20 назад делал такое, но после перехода в защищенный режим и разрешения прерываний всё падало (хотя пару буковок на экран успевало вывести). Через пару лет я узнал что С выравнивает поля в структурах :) и поэтому нельзя просто так писать дескрипторы в них.

Круто! но я знаю решение. нужно просто добавить __attribute__ ((packed)), если я правильно помню

Я тоже когда в университете учился, то по фану делал штуку, которая в реальном режиме с дискеты загружается и что-то рисует. Но потом дальше не осилил. Хотя хотел работу с FAT запилить.

Здорово! Думаю, полноценную ФС уже потом сделаю. Это пока что не очень совместимо с целью. Но уже есть наброски. Думаю, что можно сделать этот проект "коллективным", создав, например, какой-нибудь чат? Надо будет над этим подумать.

Для ретропрограммирования вы используете слишком новые технологии. Последний раз, когда я на них смотрел, там был предзагрузчик с выставлением адреса с административной консоли оператора с помощью переключателей.

Ну не знаю. Все равно, нашлись же те, кому понравилось. Значит, все ОК :)

Спасибо, я его уже посмотрел. Очень хороший "курс". Но я пока ограничусь ассемблером :)

В 90-х так же баловался, но есть проблема, любой антивирус воспринимает это как бут вирус и стирает сразу.

хм, не знал об этом. Может, когда закончу mbr-версию, сделаю и efi.

Я делал на дискете так как там проще файловая система и проще бут сектор найти. Код вбивал туда вручную в Disk Edit. Это был заранее подготовленный com файл в HEX. Это был челленж. Антивирусы очень сильно ругались :)

джедай среди простых людей)

Вот целый блог по созданию ОС на Rust: https://os.phil-opp.com/

С прерываниями, планировщиком с поддержкой асинхронности, vga text mode, обработкой ошибок, загрузчиком, пагинацией памяти и тд

Да что же это такое, все в комментариях обсуждают другие блоги( под моим( хотя, ладно, понять можно

нда, спасибо большое за рекомендацию)

О, прям как я в 2004. Писал все на ассемблере. Был переход в защищённый режим, переключатель юзерспейсных потоков, несколько сисколлов. До полноценного менеджера памяти не дотянул - забросил.

Что же, может моя работа возобновит интерес к данной теме :)

Fasm работает из под windows. Это не честно. Нужно написать свою ОС, без помощи других ОС. Вот это будет с нуля.

Написание своей оси не значит, что нужно пользоваться камнями и палками, вполне резонно использовать инструмент, а так да, можно опкодами писать

Абсолютно с вами согласен. Хотя, по правде сказать, идея реально крутая. Может, запущу серию статей о раскрутке ОС с самым минимальным инвентарем: DOS'ом и каким-нибудь hex-редактором. long mode и все эти дела по идее тоже должны быть. Идея классная, рил (песок посыпался)

Вы хотите сказать, что вместо инструкций ассемблера и виртуалки из-под другой ОС вы больше предпочли бы читать опкоды? Что же, я не могу осуждать ваши предпочтения, но скажу, что в таком случае вы по-истине экстремал. Даже был бы не против почитать такую статейку, особенно вашего авторства)))

Нет. Ассемблер должен быть свой. И ос, в которой вы будите создавать новую ос должна быть полностью своя. А иначе, это просто использование чужого труда.

как вы хотите имея компьютер без ничего что-то писать? ни ассемблера, ни ОС, ничего. Хотя бы DOS и какой-нибудь hex-редактор, иначе же никак.

Раньше, на «настоящих» компьютерах были кнопочки и тублеры, позволявшие писать двоичный код прямо в ячейки памяти, а потом запускать это.
В эмуляторе, наверное, можно подставить свой биос с хекс-редактором. Но его опять же придется писать в какой-то операционке.

Вот, вот. И я об этом.

У древних людей не было ни ос ни редакторов. Но они создали и редакторы и ос.

У "древних людей" были таблицы опкодов и тумблеры ручного редактирования памяти ПК. Чего же вы называете это "с нуля"? Нужно самому тумблеры делать! Нужно самому таблицы опкодов составлять! Ну, думаю, намек вы поняли.

Тумблеры самому делать не нужно. Уже современная техника без всяких тумблеров. Задача такова: Надо придумать способ создать свою ОС средствами своей ОС, только попроще, версия 1, а ту систему ещё более простой версией, версия 0, а ту еще более простой, версия -1, и т.д. Возможно, используя для этого более примитивную технику. Саму технику я не предлагаю самому делать, лиш ПО. Нельзя же сделать деревянную избу без топора. А без бензопилы, можно. Надеюсь вы меня поняли.

P. S. Я буду думать в этом направлении. Вот это будет пэт проект.

Современная техника не позволяет писать на носители «без использования других программ».
С чего вы предлагаете начинать? Что по вашему еще позволительно назвать «топором»?

Использовать менее современную технику. (в начале). Возможно используя считыватель перфокарт, или магнитную ленту касетного магнитофона (радио 86 мк)

мы же пишем ОС для современного компьютера. Предпологаю, что другого нет. Во-вторых мы его запускаем в эмуляторе, а для эмулятора что древнего PDP-1 с перфолентой, что для нынешного x86 с загрузкой с жесткого диска, образ этого самого загрузочного носителя - просто файл, для создания которого нужен какой-то софт, хотя бы хекс редактор.

А в третьих - расскажите как записать на магнитную ленту программу для компьютера без использования готовых программ?

Можно стартовать с PDP-11 - там были и перфокарты и 5,25 флоппик. Грузимся с перфокарт, пишем загрузчик для х86 на дискету, грузимся с нее, дальше у нас уже есть свой инструмент для создания "своей ОС с нуля на современном компьютере" :)

Все равно, это получается не с нуля. Кто то же, в древности, написал самую первую ос. Или они всегда были? Я думаю нет. Когда то, в глубине веков, на древних компьютерах, не было ни текстовых редакторов, ни ос.

Читать тут, «Был мир компьютера темен и пуст, пока не появился BOOT и MONITOR»
История операционных систем
Предшественником операционных систем следует считать служебные программы (загрузчики и мониторы), а также библиотеки часто используемых подпрограмм, начавшие разрабатываться с появлением универсальных компьютеров 1-го поколения (конец 1940-х годов). Служебные программы минимизировали физические манипуляции оператора с оборудованием, а библиотеки позволяли избежать многократного программирования одних и тех же действий (осуществления операций ввода-вывода, вычисления математических функций и т. п.).
В 1950—1960-х годах сформировались и были реализованы основные идеи, определяющие функциональность ОС: пакетный режим, разделение времени и многозадачность, разделение полномочий, реальный масштаб времени, файловые структуры и файловые системы.

У Била Гейтса не было dos. Но он его создал с нуля.

гейтс создал DOS с нуля? Хорошая шутка, давно я так не смеялся! ;-D

даа.. У меня кстати исходники есть. DOS написана на NASM'е. Хе-хе)

Не с нуля, а на nasm'e. Кстати, в линуксе, если не ошибаюсь..

DOS писали в Linux на NASM? Вы это серьёзно, или теперь так шутят?

я нашел исходники дос, собираемые насмом. Кстати, насчет линукса я могу ошибаться

И что с того, что что-то там компилирует что-то там без выдачи сообщений об ошибках? Это никого ни к чему не обязывает и никому ничего не доказывает.

По сети ходят исходники MS-DOS 1.1-2.0 и 6.0 (во всяком случае других пока мне в руки не попадалось) -- 2.0 вышла в марте 1983 года, 6.0 вышла в марте 1993 года. NASM появился на свет 1996 году. Не замечаете странности в своём утверждении о разработке MS-DOS на NASM?

Если NASM (1996) понимает синтаксис MASM (1981), означает лишь то что NASM поддерживает стандарт Iтtel-синтаксиса
Да и Microsoft вполне официально выложила исходники MS-DOS 1.25 и 2.11 на Github. И из этих исходников уже собирали и MS-DOS 1.25 и 2.11.
На Хабре так же публиковали перевод статьи "Собираем DOS 2.11 из исходников 80-х годов"
У Билла Гейтса не было DOS, у него в те времена был только BASIC и прочие средства разработки, и не было никакой своей ОС. И чтоб хоть как то попасть на поезд IBM, Билл купил разработку Seattle Computer Products 86-DOS, написанную Тимом Патерсоном, похожую архитектурно на CP/M, но под процессор 8086.
Читайте "Удивительная история рождения MS-DOS"

А я чей-то эмулятор nes в свою ос портировал и марио на нём запустил https://github.com/Alexey1994/BelOS

Ещё все серии совиного дома посмотрел.

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

Публикации

Истории