В большинстве литератур о Linux ядро представляется как нечто загадочное, словно «черный ящик», который выполняет свою работу за кулисами. Однако, я решил развеять мифы и показать, что ядро Linux — это на самом деле просто исполняемый файл без магии. Мы проведем несколько простых экспериментов, чтобы лучше понять, как устроен Linux и как его компоненты взаимодействуют.
Итак, что такое ядро? Это посредник между аппаратным обеспечением и программами. Оно предоставляет единый API для работы с устройствами, позволяя разработчикам не заботиться о различиях между производителями. Ядро управляет ресурсами, распределяя процессорное время и доступ к памяти.
Чтобы найти ядро, достаточно заглянуть в директорию /boot. Мы увидим файл vmlinuz-6.12.48+deb13-amd64, который является сжатым образом ядра.
В первом эксперименте мы попытаемся запустить ядро в виртуальной машине QEMU. После некоторых шагов установки, мы сталкиваемся с ошибкой, потому что ядру не хватает файловой системы.
Во втором эксперименте мы создадим initramfs — временную файловую систему, которая загрузится в память, пока ядро не найдет основной диск. Мы напишем простую программу на Go, которая будет выполнять функцию init. После этого, ядро успешно находит нашу файловую систему и запускает программу.
Таким образом, мы видим, что ядро — это просто файл, который инициализирует аппаратные компоненты, а дистрибутив Linux включает в себя ядро и набор утилит. Теперь черный ящик стал прозрачным, и мы можем понимать, как работает Linux.
