Skip to content

My attempt to figure out how the Linux kernel works using an old version, where theoretically, it's still possible to grasp something with my small mind.

Notifications You must be signed in to change notification settings

wwwlde/linux-kernel-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Корневой каталог (linux-0.11/)

Здесь находятся важные файлы ядра:

  • Makefile – главный файл сборки ядра.
  • boot/ – код загрузчика (bootloader).
  • fs/ – код файловой системы.
  • include/ – заголовочные файлы (.h).
  • init/ – код инициализации ядра.
  • kernel/ – основная логика ядра.
  • lib/ – вспомогательные функции (строковые операции, память).
  • mm/ – управление памятью.
  • tools/ – вспомогательные утилиты.

Интересные моменты в Linux 0.11

  • Нет виртуальной памяти – все процессы работают в общей памяти.
  • Файловая система Minix – первая файловая система Linux.
  • Простой планировщик процессов – использует counter и priority для переключения задач.
  • 16-битный загрузчик – ядро загружается в реальном режиме (до перехода в 32-битный защищённый режим).

Дисклеймер

Отвечаю на главный вопрос: почему 0.11?

Я предвижу вопросы из зала: адекватен ли я? Справки у меня нет, но есть желание разобраться, не падая с небес, а медленно карабкаясь вверх.

Да, я сейчас перечитываю Just for Fun, и хочется воочию увидеть, о чём пишет Линус и хотя бы немного погрузиться в то, что он делал.

Что ещё из плюсов? Linux 0.11 — всего 10-12 тысяч строк кода (современные ядра >30 миллионов строк). Его реально разобрать за разумное время.

Да, скорее всего, я опущу большую часть ассемблера, который здесь широко применялся (всё-таки Линус тоже учился, хотел разобраться, как работает CPU, и выжать из него максимум).

Начну отсюда, но не буду сильно зацикливаться. Разберу самые интересные вещи:

В целом, хочется понять, как ядро управляет процессами и памятью. Может, ради шутки попробую собрать и запустить в QEMU.

Далее можно прыгать к более новым ядрам (например, 2.6 или 5.x). Если, конечно, не умру по дороге, потому что делаю это только в личное свободное время, которого практически и фактически нет 🥹 . Занятие для души, так сказать.

Это всё чисто человеческий интерес, возможно, ещё одно бесполезное, но интересное хобби.

Who knows? 😏

Ах и да, я не то чтобы искушён в C, но в целом ещё в университетские годы немного писал на нём. Правда, это были совсем базовые программы, плюс немного ассемблера, так что есть шанс хоть немного вспомнить.

Я очень сентиментален 😂 .

About

My attempt to figure out how the Linux kernel works using an old version, where theoretically, it's still possible to grasp something with my small mind.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published