LINUX.ORG.RU

Компиляция ядра

 , ,


0

1

Всех приветствую.

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

Суть вот в чём - меня интересует разработка операционных систем.

Я, как пользователь оффтопика (что в принципе не мешает мне задавать данный вопрос), привык к user-friendly в виде консистентной разработки - если мне что-то надо будь-то C, C++ или же .NET то всё легко доставляется через Visual Studio Installer без сторонних источников. Достаточно давно я «не особо» (на самом деле очень но альтернатив для меня нет кроме как Hackintosh и повторно покупать весь софт чтобы всё было лицензионным и готовым к коммерции но в свете событий перехода на свои процессоры я просто не стал пробовать) доволен развитием оффтопика в плане пользовательского пространства - от коряво выглядящих утилит со времён XP до ограничений для публикации своих приложений в Microsoft Store (для Ъ: разрешено публиковать только UWP приложения за исключением игр - там можно использовать WinAPI или же просто на чистых C/C++).

И вот недавно заинтересовался процессом создания своей ОС что собственно поставило на распутье:

  1. Использовать что-либо из систем BSD просто не вариант ибо достаточно большой срок выхода релизов хотя выходят они качественными.
  2. Использовать Linux как базу и просто поверх неё построить всё то что мне хочется.
  3. Написать своё с использованием EDK2. В данном случае есть удобность в виде разработки на оффтопике но рано или поздно придётся от этого отказаться в сторону самостоятельности системы (если она вообще будет, конечно).

Пока-что интересуют 2 и 3 варианты и хотелось бы, от пользователей ЛОРа, получить ответы или хотя-бы советы по тому куда двигаться и что искать по данным вопросам:

  1. Интересует компиляции a.out формата вместо ELF. Мне интересно изучать всё постепенно но при этом основная цель создания своей ОС - графика и звук. Остальное, для меня на данный момент, не важно. Соответственно если надоест то будет интересно пробовать сделать новый формат дабы понять как и что устроено.
  2. Возможность создать файловую систему без использования inode - т.е. просто некое пространство на блочном устройстве которое последовательно можно считать и что-нибудь в итоге получить если там нужный формат данных. Как устроена разработка FS как модуля ядра, в принципе мне понятно. Но на сколько я помню там требуется создание структур где как раз и есть информация о inode.
  3. Возможно ли использовать GCC как единственный компилятор для компиляции всех необходимых целей, в частности, amdgpu и всего что касается графики и драйверов. На сколько знаю, графика требует llvm и хотелось бы так же иметь хотя бы какую-нибудь консистентность в плане инструментария разработки. Ну или же наоборот - на сколько будет удобно использовать только LLVM & Clang.
  4. С набором параметров из menuconfig из почти всех разделов разобрался но остался вопрос - как быть с микрокодом? Допустим, производитель выпустил обновление и обновить только этот кусок возможно лишь при перекомпиляции ядра?
  5. Возможно ли отключить любые возможные зависимости по типу wchan? Хочется попробовать, в первую очередь в данном случае, разработку пользовательского пространства, соответственно хочется иметь Linux именно как чистое ядро без функционала который зависим из стороннего ПО. Пусть даже при условии что можно и своё написать для взаимодействия.
  6. Стоит ли использовать libgbm как основу для графики? Хочется использовать и OpenGL и Vulkan но для разных задач (Рабочий стол -> полноэкранные приложения).

Пока-что это основные вопросы. И ещё просьба - не надо советовать в стиле «это всё говно, надо делать не так». Да, я знаю что надо не так но лично я хочу именно так и не как иначе. Просто пройдите мимо, не надо срать в треде. Мне не нужно советовать LFS и прочие его аналоги, мне не нужен очередной дистрибутив, мне нужно только ядро и полностью построенный в соответствии с моими предпочтениями user-land.

Касаемо пункта с EDK2 - там всё понятно и надеяться на что-то большее чем DOS-like смысла не вижу. С ядром же дела обстоят по другому и наличии функционала для графики и звука хочется использовать.

С набором параметров из menuconfig из почти всех разделов разобрался но остался вопрос - как быть с микрокодом? Допустим, производитель выпустил обновление и обновить только этот кусок возможно лишь при перекомпиляции ядра?

Фирмвари отдельным файлом лежат, можно перезагрузить. Есть технология Live Patch, не то что без перекомпиляции, а и без перезагрузки можно налепить

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

На сколько я помню из пунктов касаемо микрокода то они помечены [ * ], и как я понимаю, это означает только встраивание, опции < M > не помню но завтра обязательно гляну. Спасибо за ответ.

golovastik
() автор топика
Последнее исправление: golovastik (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Есть технология Live Patch, не то что без перекомпиляции, а и без перезагрузки можно налепить

Это случайно не kexec?

golovastik
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Звездочка - в ядре, M - отдельным модулем (файл *.ko), не знаю какая связь с фирмварями

Для опций связанных с фирмварями вроде нет M, только встраивание в ядро

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

Это случайно не kexec?

Нет. kexec даёт возможность прыгнуть в новое ядро, минуя BIOS/UEFI. Технологии лайвпатча (их несколько, кстати) работают через ftrace, kprobe и подобное.

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

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

mv ★★★★★
()

файловую систему

без использования inode

inode это по сути дела и есть файл с точки зрения ядра, так что без них никак

vvvvvvvv
()

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

тебе бы в год эдак 2005 скакнуть, собсно это единственно правильный путь, чтоб хотя бы частично удовлетворить твои запросы(в те времена не существовало ни llvm, ни вулканов, ни прочих сущностей). Которые, по большей части выглядят как «вот если я отрублю себе МПХ, то к примеру как мне заинтересовать женщину, при условии, что денег я ей не предлагаю... но это нужно, т.к. я хочу от неё детей».

Если тебе нужно только ядро, не совсем понятно как ты собрался его собирать без стороннего(для ядра) софта ал-ля перл-питон-openssl-архиваторы(в ассортименте)-сиды и прочие «мелочи» из core-utils, glibc'ы те же, без которых gcc просто набор бесполезной писанины?,.. может стоит изучить что такое LFS? ну чтоб просто понимать кто на ком стоял?

если тебе нужен только gcc, не совсем понятно как ты собрался строить графику(имеется ввиду современные наработки) без вулканов, llvm'ов и прочей мешпухи, хотя можно пойти дорогой строителей иксов, но тогда возникнет резонный вопрос - нафейхоа нам ещё один вейланд и ещё одни иксы. Если тебе это нужно просто для себя, ну что сказать - безумству храбрых споём отходную, им это нужно...

Gramozeka ★★
()
Последнее исправление: Gramozeka (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.