Комментарии 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 думала иначе (либо очень желала, чтобы все так думали)
Надо будет запустить это на реальном ПК, интересно что получится в конце
Круто! но я знаю решение. нужно просто добавить __attribute__ ((packed)), если я правильно помню
Я тоже когда в университете учился, то по фану делал штуку, которая в реальном режиме с дискеты загружается и что-то рисует. Но потом дальше не осилил. Хотя хотел работу с FAT запилить.
Для ретропрограммирования вы используете слишком новые технологии. Последний раз, когда я на них смотрел, там был предзагрузчик с выставлением адреса с административной консоли оператора с помощью переключателей.
Лучший на мой взгляд "курс" по написанию OS включая многопоточность, файловую систему, сетевой стек и еще на С++
В 90-х так же баловался, но есть проблема, любой антивирус воспринимает это как бут вирус и стирает сразу.
хм, не знал об этом. Может, когда закончу mbr-версию, сделаю и efi.
Если кому интересно, вот написание ОС на Rust от Georgia Institute of Technology - https://tc.gts3.org/cs3210/2020/spring/lab.html
Вот целый блог по созданию ОС на Rust: https://os.phil-opp.com/
С прерываниями, планировщиком с поддержкой асинхронности, vga text mode, обработкой ошибок, загрузчиком, пагинацией памяти и тд
нда, спасибо большое за рекомендацию)
О, прям как я в 2004. Писал все на ассемблере. Был переход в защищённый режим, переключатель юзерспейсных потоков, несколько сисколлов. До полноценного менеджера памяти не дотянул - забросил.
Fasm работает из под windows. Это не честно. Нужно написать свою ОС, без помощи других ОС. Вот это будет с нуля.
Написание своей оси не значит, что нужно пользоваться камнями и палками, вполне резонно использовать инструмент, а так да, можно опкодами писать
Вы хотите сказать, что вместо инструкций ассемблера и виртуалки из-под другой ОС вы больше предпочли бы читать опкоды? Что же, я не могу осуждать ваши предпочтения, но скажу, что в таком случае вы по-истине экстремал. Даже был бы не против почитать такую статейку, особенно вашего авторства)))
Нет. Ассемблер должен быть свой. И ос, в которой вы будите создавать новую ос должна быть полностью своя. А иначе, это просто использование чужого труда.
как вы хотите имея компьютер без ничего что-то писать? ни ассемблера, ни ОС, ничего. Хотя бы DOS и какой-нибудь hex-редактор, иначе же никак.
В эмуляторе, наверное, можно подставить свой биос с хекс-редактором. Но его опять же придется писать в какой-то операционке.
У древних людей не было ни ос ни редакторов. Но они создали и редакторы и ос.
У "древних людей" были таблицы опкодов и тумблеры ручного редактирования памяти ПК. Чего же вы называете это "с нуля"? Нужно самому тумблеры делать! Нужно самому таблицы опкодов составлять! Ну, думаю, намек вы поняли.
Тумблеры самому делать не нужно. Уже современная техника без всяких тумблеров. Задача такова: Надо придумать способ создать свою ОС средствами своей ОС, только попроще, версия 1, а ту систему ещё более простой версией, версия 0, а ту еще более простой, версия -1, и т.д. Возможно, используя для этого более примитивную технику. Саму технику я не предлагаю самому делать, лиш ПО. Нельзя же сделать деревянную избу без топора. А без бензопилы, можно. Надеюсь вы меня поняли.
P. S. Я буду думать в этом направлении. Вот это будет пэт проект.
С чего вы предлагаете начинать? Что по вашему еще позволительно назвать «топором»?
Использовать менее современную технику. (в начале). Возможно используя считыватель перфокарт, или магнитную ленту касетного магнитофона (радио 86 мк)
мы же пишем ОС для современного компьютера. Предпологаю, что другого нет. Во-вторых мы его запускаем в эмуляторе, а для эмулятора что древнего PDP-1 с перфолентой, что для нынешного x86 с загрузкой с жесткого диска, образ этого самого загрузочного носителя - просто файл, для создания которого нужен какой-то софт, хотя бы хекс редактор.
А в третьих - расскажите как записать на магнитную ленту программу для компьютера без использования готовых программ?
Можно стартовать с PDP-11 - там были и перфокарты и 5,25 флоппик. Грузимся с перфокарт, пишем загрузчик для х86 на дискету, грузимся с нее, дальше у нас уже есть свой инструмент для создания "своей ОС с нуля на современном компьютере" :)
Все равно, это получается не с нуля. Кто то же, в древности, написал самую первую ос. Или они всегда были? Я думаю нет. Когда то, в глубине веков, на древних компьютерах, не было ни текстовых редакторов, ни ос.
В 1950—1960-х годах сформировались и были реализованы основные идеи, определяющие функциональность ОС: пакетный режим, разделение времени и многозадачность, разделение полномочий, реальный масштаб времени, файловые структуры и файловые системы.
У Била Гейтса не было dos. Но он его создал с нуля.
гейтс создал DOS с нуля? Хорошая шутка, давно я так не смеялся! ;-D
Не с нуля, а на nasm'e. Кстати, в линуксе, если не ошибаюсь..
DOS писали в Linux на NASM? Вы это серьёзно, или теперь так шутят?
я нашел исходники дос, собираемые насмом. Кстати, насчет линукса я могу ошибаться
И что с того, что что-то там компилирует что-то там без выдачи сообщений об ошибках? Это никого ни к чему не обязывает и никому ничего не доказывает.
По сети ходят исходники MS-DOS 1.1-2.0 и 6.0 (во всяком случае других пока мне в руки не попадалось) -- 2.0 вышла в марте 1983 года, 6.0 вышла в марте 1993 года. NASM появился на свет 1996 году. Не замечаете странности в своём утверждении о разработке MS-DOS на NASM?
Да и Microsoft вполне официально выложила исходники MS-DOS 1.25 и 2.11 на Github. И из этих исходников уже собирали и MS-DOS 1.25 и 2.11.
На Хабре так же публиковали перевод статьи "Собираем DOS 2.11 из исходников 80-х годов"
Читайте "Удивительная история рождения MS-DOS"
А я чей-то эмулятор nes в свою ос портировал и марио на нём запустил https://github.com/Alexey1994/BelOS
Ещё все серии совиного дома посмотрел.
ОС с нуля: Глава 1, Часть 1 — Загрузчик