Здесь находятся важные файлы ядра:
Makefile
– главный файл сборки ядра.boot/
– код загрузчика (bootloader).fs/
– код файловой системы.include/
– заголовочные файлы (.h).init/
– код инициализации ядра.kernel/
– основная логика ядра.lib/
– вспомогательные функции (строковые операции, память).mm/
– управление памятью.tools/
– вспомогательные утилиты.
- Нет виртуальной памяти – все процессы работают в общей памяти.
- Файловая система Minix – первая файловая система Linux.
- Простой планировщик процессов – использует counter и priority для переключения задач.
- 16-битный загрузчик – ядро загружается в реальном режиме (до перехода в 32-битный защищённый режим).
Я предвижу вопросы из зала: адекватен ли я? Справки у меня нет, но есть желание разобраться, не падая с небес, а медленно карабкаясь вверх.
Да, я сейчас перечитываю Just for Fun, и хочется воочию увидеть, о чём пишет Линус и хотя бы немного погрузиться в то, что он делал.
Что ещё из плюсов? Linux 0.11 — всего 10-12 тысяч строк кода (современные ядра >30 миллионов строк). Его реально разобрать за разумное время.
Да, скорее всего, я опущу большую часть ассемблера, который здесь широко применялся (всё-таки Линус тоже учился, хотел разобраться, как работает CPU, и выжать из него максимум).
Начну отсюда, но не буду сильно зацикливаться. Разберу самые интересные вещи:
В целом, хочется понять, как ядро управляет процессами и памятью. Может, ради шутки попробую собрать и запустить в QEMU.
Далее можно прыгать к более новым ядрам (например, 2.6 или 5.x). Если, конечно, не умру по дороге, потому что делаю это только в личное свободное время, которого практически и фактически нет 🥹 . Занятие для души, так сказать.
Это всё чисто человеческий интерес, возможно, ещё одно бесполезное, но интересное хобби.
Who knows? 😏
Ах и да, я не то чтобы искушён в C
, но в целом ещё в университетские годы немного писал на нём. Правда, это были совсем базовые программы, плюс немного ассемблера, так что есть шанс хоть немного вспомнить.
Я очень сентиментален 😂 .