LINUX.ORG.RU
ФорумTalks

Я написал ненужно, поздравьте меня


2

3

Какой-то время назад я увлекался написанием собственных ОС (не BolgenOS, а самых настоящих, к Linux отношения не имеющих, правда, конечно же в лучшем случае там был эмулятор терминала, даже никакой графики). По очередной ОС (в какой-то момент времени оно начинало глючить, энтузиазм угасал и спустя пару месяцев было проще всё удалить и начать сначала) издавал рассылку на Subscribe.ru, но в итоге забросил. Сейчас откопал исходники и сделал НеНужно.

Собственно, я написал FUSE-драйвер для придуманной ранее мной же ФС и он отлично работает (правда, пока что только в read-only).

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

Ах да, зачем нужна эта ФС. Она гораздо проще и понятнее (ну... ещё бы я написал вменяемую документацию, а то пока в её роли лишь один из выпусков рассылки, однако сама структура ФС очень простая и логичная) существующих ФС, поэтому должно быть очень хорошо для изучения основ и написания своей ОС.

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

Ну и да, я делаю это просто потому что мне скучно, а Linux тут притом, что всё это собирается без проблем только под Linux. Ну и в конце концов нужно больше ОС и ФС глючных и несовместимых :-)

Ну а вот пруфы, чтобы вы мне поверили:

https://github.com/kiv-apple/ListFS - Драйвер FUSE

http://subscribe.ru/catalog/comp.soft.myosdev - Рассылка (заброшено)

UPD: Хотел бы услышать советы, что мне делать дальше. Возможно, ли как-то применить моё желание написать свою ОС на практике и т. д.

★★★★★

Последнее исправление: KivApple (всего исправлений: 2)

Ответ на: комментарий от hibou

Эх... жаль, что все предыдущие версии ОС безвозвратно утрачены. А то одна из версий (тогда ещё написанная на чистом Ассемблере, на Си я перешёл недавно) была 64-битной, многозадачной, микроядерной, там был сервер консоли (работал драйвером, к нему подключались клиенты и занимались вводом-выводом, а между виртуальными консолями можно было переключаться комбинацией клавиш) и командная строка (умела лазить по каталогам, просматривать файлы, запускать приложения и показывать сколько свободно памяти, чтобы доказать, что ничего не течёт после цикла закрытия-открытия нового экземляра этой самой командной строки), а также драйвер дисковода и одной из модификаций этой самой ListFS. Ах да, у бинарников был мой «принципиально новый» формат, в том числе с таблицей импорта-экспорта.

KivApple ★★★★★
() автор топика

Мне интересно насколько полезны с вашей точки зрения подобные начинания и стоит ли мне под настроение продолжать творить подобное

Нет, не стоит. Твори лучше что-нибудь более полезное.

morse ★★★★★
()

Для начала — плохо, что первый сектор занят заголовком, его бы следовало полностью освободить для загрузочного кода. Например, в тестовой ext2 данные начинаются с оффсета 0x400, то есть свободен весь первый килобайт. Лучше бы конечно, чтоб было свободно хотя бы 4 килобайта.

Кроме того, не помешало бы иметь резервные копии суперблока, например во всех секторах с номерами, кратными степени какого-нибудь числа — чтоб файловую систему можно было восстановить после случайного форматирования например.

Английский, конечно какой-то жуткий.

А чем тебя не устраивает KolibriOS, кстати?

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от XVilka

А почему именно эту из мириад других мелких 64-битных ОС?

Тем более что она на ассемблере и жестко завязана на x86, как и Kolibri — а в таком случае миниатюрной ОС лучше быть 32-битной чтоб работать и на старых компах тоже.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от XVilka

Может я и не прав, но мне кажется, что на сложных архитектурах типа x86_64 компилятор уже может оптимизировать код значительно лучше чем человек, который физически не способен изучить все особенности процессора, поэтому на таких машинах писать на ассемблере уже практически бессмысленно (в отличии от более простых 8086 и микроконтроллеров).

Хотя может на языке fasm возможен хардкорный макроассемблер, дающий возможно писать на высокоуровневом псевдокоде, который переключаем на другой процессор одной директивой?

BareMetalOS хорошо бы смотрелась в управлении гипервизором.

А разве нет аналогов, но на языке высокого уровня, скажем OCaml?

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 2)
Ответ на: комментарий от Xenius

Аналоги неплохи, но не смогут влезть вместе с гипервизором во флешку bios/uefi.

Компиляторы хорошо оптимизируют по скорости, но плохо - по размеру.

XVilka ★★★★★
()
Последнее исправление: XVilka (всего исправлений: 1)
Ответ на: комментарий от XVilka

во флешку bios/uefi.

И сколько же в этой флешке места всего? А если вычесть необходимый код инициализации оборудования?

Аналоги неплохи

А какие есть аналоги?

Кстати, а почему они пишут на NASM а не fasm, я так понял, что fasm всё-таки много круче всех других ассемблеров для x86?

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 2)

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

ychuperka
()
Ответ на: комментарий от Xenius

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

Говорят, UEFI впереди планеты всей, там это не нужно.

shimon ★★★★★
()
Ответ на: комментарий от Xenius

Я запихнул заголовок в нулевой сектор, чтобы начальный загрузчик сразу имел при себе все данные об ФС. Особенно параметр fs_base. Зачем он нужен? А что если мы грузимся с раздела диска? В таком случае ФС начинается не с нулевого сектора. Разбирать таблицу разделов в начальном загрузчике не удобно, поэтому я ввёл в заголовке ФС специальное поле, которое смещает все дисковые операции на N секторов. В том числе загрузку продолжения загрузчика.

Насчёт копий суперблока я полностью согласен, что их надо дублировать, но пока моя цель максимальная простота (функций делаю ровно столько чтобы оно вообще могло работать). В будущем, если будет более-менее ОС, конечно, стоит дополнить функционал.

Кстати, загрузчик может занимать сколько угодно блоков - достаточно пометить в битовой карте диска соответствующие блоки как занятые, а начало самой карты fs_map_base сместить, чтобы было место, и после этого забивать первые сектора любыми данными. Утилита make_listfs из рассылки, кстати, принимает на вход загрузчики любого размера.

KivApple ★★★★★
() автор топика
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от Xenius

KolibriOS не нравится тем, что имеет монолитное ядро.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от ychuperka

Спасибо. К сожалению, в моей рассылке много ошибок. Сейчас есть желание написать типа гайда по построению ОС, более внимательно относясь к деталям. Да и вообще оформить ОС как OpenSource проект. Но мнусь в сомнениях, стоит ли начинать.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от registrant

Я ждал именно этого комментария! :-)

KivApple ★★★★★
() автор топика
Ответ на: комментарий от XVilka

Меня интересует больше десктопное окружение (чтобы потом написать свои недоиксы и недотулкит), а эта ОС, как я понимаю, расчитана на более специфичное применение. Тогда уж Kolibri, но она не микроядерная.

KivApple ★★★★★
() автор топика

«Время есть, а денег нет» (С)

Вот, собственно, и вся оценка подобного поделия.

Разрабатывать нужно то, что можно продать.

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

Разрабатывать нужно то, что можно продать

а как же три свободы Столлмана? живи все по такому принципу - у нас бы не было Free Software.

Komintern ★★★★★
()
Ответ на: комментарий от Xenius

Кроме того, не помешало бы иметь резервные копии суперблока, например во всех секторах с номерами, кратными степени какого-нибудь числа — чтоб файловую систему можно было восстановить после случайного форматирования например.

Как копии суперблока защищают от случайного форматирования? Тот же mkfs.ext2 создаст при форматировании копии на тех же местах :D

aidaho ★★★★★
()
Ответ на: комментарий от KivApple

Утилита make_listfs из рассылки, кстати, принимает на вход загрузчики любого размера.

То есть поставить lilo, grub или syslinux на раздел с listfs можно?

Xenius ★★★★★
()
Ответ на: комментарий от Bioreactor

Можно прицепить POSIX, перекомпилировать серверный софт и добавить поддержку ext4, xfs, zfs, e.t.c
Добавить запуск бинарей Linux/FreeBSD/OpenBSD
Прицепить секур-патчи из openbsd ко всему что есть
Собрать в единый дистр
Запилить конфигурялку с ncurses/dialog интерфейсом
И продовать
Но ядро и userspace (libc, e.t.c) - в опен сорц
Все будет очень быстро
А если просто прицепить типа Xen, то можно в uefi запихнуть и продавать
Миниатюрная OS, которая грузится за секунды и имеет при себе гипервизор, умеющий Windows и Linux

ubuntuawp ★★
()
Ответ на: комментарий от Xenius

Да, если эти загрузчики будут уметь читать файлы с этой ФС (а иначе какой смысл их ставить).

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Интересная затея. Желаю успеха, у Линуса в 91-м Линукс вообще с дискеты стартовал и был по сути терминалом. Так что: Верной дорогой идете товарищи! :)

Twissel ★★★★★
()

О как! Как же я пропустил эту тему.

Хотел бы услышать советы, что мне делать дальше. Возможно, ли как-то применить моё желание написать свою ОС на практике и т. д.

  1. Самое главное это время. Время лечит всё. Пробуй, рассказывай специалистам, в общем трать время до понимания, что «написал ненужно».
  2. Загляни ко мне в профиль и пройди по ссылке из него.
  3. Решай, сколько у тебя есть лет чтобы догнать и перегнать.

В общем, у меня есть предложение. Причём, я не предлагаю «присоединиться» - наверняка твои амбиции восстанут против этого. Я предлагаю «пилить» какую-либо часть ОС, которая будет полезна не только тебе, но и другим людям. Выход в люди с ListFS - весьма удачное во всех смыслах решение. А так - всё правильно делаешь.

alman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.