Ядро Linux (Linux kernel) — программа, которая является ядром операционной системы и работает в привилегированном режиме процессора (ring 0). Написано преимущественно на C (~97%) и ассемблере. Управляет центральным процессором, оперативной памятью, периферийными устройствами и предоставляет системные вызовы (syscalls) для пользовательских программ.
Как работает
Ядро Linux — монолитное с поддержкой загружаемых модулей. Монолитность означает, что все компоненты ядра (драйверы устройств, файловые системы, сетевой стек) работают в одном адресном пространстве с высокими привилегиями. Это даёт скорость (нет межпроцессного взаимодействия между компонентами), но любая ошибка в драйвере потенциально роняет всю систему.
Загружаемые модули ядра (LKM — Loadable Kernel Modules) позволяют добавлять функциональность без перезагрузки: modprobe kvm загружает поддержку KVM-виртуализации, modprobe zfs — файловую систему ZFS. Модули хранятся в /lib/modules/$(uname -r)/.
Ключевые подсистемы ядра: планировщик процессов (CFS — Completely Fair Scheduler), менеджер виртуальной памяти (обработка page fault, swap), подсистема ввода-вывода (блочные устройства, виртуальная файловая система VFS), сетевой стек (TCP/IP), подсистема безопасности (SELinux, AppArmor, seccomp).
История
Линус Торвальдс написал первую версию (0.01, 10 000 строк кода) в 1991 году на финском компьютере 386. В 1994 году вышла версия 1.0. В 2003 году разработка перешла на Git — систему контроля версий, которую Торвальдс создал специально для ядра. Linux 5.0 вышел в 2019 году. Linux 6.0 — в октябре 2022 года. Современное ядро содержит около 30 млн строк кода и более 2 000 активных контрибьюторов. Крупнейшие спонсоры разработки (2023): Intel, AMD, Google, RedHat, NVIDIA, Meta.
Версии ядра
- LTS (Long-Term Support) — поддерживается 2–6 лет. Рекомендуется для серверов. Пример: 6.1 LTS, 5.15 LTS.
- Stable — текущий стабильный выпуск, обновления несколько месяцев.
- Mainline — разработческая версия, новые функции, нестабильна для продакшена.
Ядро Linux: практика управления версиями
Установка конкретной версии ядра в Ubuntu: apt install linux-image-
Kernel panic — критическая ошибка ядра с немедленной остановкой системы. Конфигурация автоматической перезагрузки: echo 1 > /proc/sys/kernel/panic (перезагрузить через 1 секунду после kernel panic), закрепить через /etc/sysctl.conf. kdump — сохранение дампа памяти при kernel panic для post-mortem анализа. Crash-дамп анализируется через crash утилиту. Параметры ядра через /etc/sysctl.conf — persistent настройки (tcp, vm, kernel параметры). sysctl -a показывает все текущие значения.
На что обращать внимание
На VPS с OpenVZ-виртуализацией пользователь не может менять ядро — оно общее для всех контейнеров и управляется хостером. На KVM-серверах ядро обновляется через пакетный менеджер как обычный пакет. Номер текущего ядра: uname -r. Обновление ядра требует перезагрузки сервера — в продакшене это планируется в окно обслуживания.
Ядро Linux и хостинг
Хостинг-провайдеры используют ядро Linux на всех уровнях: KVM-гипервизор для виртуализации VPS, Docker через cgroups и namespaces ядра, сетевой стек для маршрутизации трафика. Версия ядра влияет на доступные функции: ядра 5.x поддерживают eBPF для observability, 6.x — улучшенный io_uring для async I/O. На Ubuntu 22.04 — ядро 5.15 LTS, на AlmaLinux 9 — ядро 5.14. Проверить версию: uname -r. Обновление ядра на VPS требует перезагрузки.