Всех приветствую.
Небольшой дисклеймер: специально отключил анонимные комментарии чтобы было как-можно меньше «советов», хотя неадекватные и среди зарегистрированных тоже имеются, но не суть.
Суть вот в чём - меня интересует разработка операционных систем.
Я, как пользователь оффтопика (что в принципе не мешает мне задавать данный вопрос), привык к user-friendly в виде консистентной разработки - если мне что-то надо будь-то C, C++ или же .NET то всё легко доставляется через Visual Studio Installer без сторонних источников. Достаточно давно я «не особо» (на самом деле очень но альтернатив для меня нет кроме как Hackintosh и повторно покупать весь софт чтобы всё было лицензионным и готовым к коммерции но в свете событий перехода на свои процессоры я просто не стал пробовать) доволен развитием оффтопика в плане пользовательского пространства - от коряво выглядящих утилит со времён XP до ограничений для публикации своих приложений в Microsoft Store (для Ъ: разрешено публиковать только UWP приложения за исключением игр - там можно использовать WinAPI или же просто на чистых C/C++).
И вот недавно заинтересовался процессом создания своей ОС что собственно поставило на распутье:
- Использовать что-либо из систем BSD просто не вариант ибо достаточно большой срок выхода релизов хотя выходят они качественными.
- Использовать Linux как базу и просто поверх неё построить всё то что мне хочется.
- Написать своё с использованием EDK2. В данном случае есть удобность в виде разработки на оффтопике но рано или поздно придётся от этого отказаться в сторону самостоятельности системы (если она вообще будет, конечно).
Пока-что интересуют 2 и 3 варианты и хотелось бы, от пользователей ЛОРа, получить ответы или хотя-бы советы по тому куда двигаться и что искать по данным вопросам:
- Интересует компиляции a.out формата вместо ELF. Мне интересно изучать всё постепенно но при этом основная цель создания своей ОС - графика и звук. Остальное, для меня на данный момент, не важно. Соответственно если надоест то будет интересно пробовать сделать новый формат дабы понять как и что устроено.
- Возможность создать файловую систему без использования inode - т.е. просто некое пространство на блочном устройстве которое последовательно можно считать и что-нибудь в итоге получить если там нужный формат данных. Как устроена разработка FS как модуля ядра, в принципе мне понятно. Но на сколько я помню там требуется создание структур где как раз и есть информация о inode.
- Возможно ли использовать GCC как единственный компилятор для компиляции всех необходимых целей, в частности, amdgpu и всего что касается графики и драйверов. На сколько знаю, графика требует llvm и хотелось бы так же иметь хотя бы какую-нибудь консистентность в плане инструментария разработки. Ну или же наоборот - на сколько будет удобно использовать только LLVM & Clang.
- С набором параметров из menuconfig из почти всех разделов разобрался но остался вопрос - как быть с микрокодом? Допустим, производитель выпустил обновление и обновить только этот кусок возможно лишь при перекомпиляции ядра?
- Возможно ли отключить любые возможные зависимости по типу wchan? Хочется попробовать, в первую очередь в данном случае, разработку пользовательского пространства, соответственно хочется иметь Linux именно как чистое ядро без функционала который зависим из стороннего ПО. Пусть даже при условии что можно и своё написать для взаимодействия.
- Стоит ли использовать libgbm как основу для графики? Хочется использовать и OpenGL и Vulkan но для разных задач (Рабочий стол -> полноэкранные приложения).
Пока-что это основные вопросы. И ещё просьба - не надо советовать в стиле «это всё говно, надо делать не так». Да, я знаю что надо не так но лично я хочу именно так и не как иначе. Просто пройдите мимо, не надо срать в треде. Мне не нужно советовать LFS и прочие его аналоги, мне не нужен очередной дистрибутив, мне нужно только ядро и полностью построенный в соответствии с моими предпочтениями user-land.
Касаемо пункта с EDK2 - там всё понятно и надеяться на что-то большее чем DOS-like смысла не вижу. С ядром же дела обстоят по другому и наличии функционала для графики и звука хочется использовать.