Ядро (kernel)
Что такое ядро Linux, чем занимается и как посмотреть его версию и параметры.
Шпаргалка
7 команд Версия для печати-
uname -rверсия ядра (например, 6.8.0-45-generic) -
uname -aверсия + архитектура + дата сборки -
cat /proc/versionто же самое, из /proc -
cat /proc/cmdlineпараметры, с которыми ядро загрузилось -
dmesg | tailпоследние сообщения ядра -
sysctl vm.swappinessтекущее значение параметра ядра -
ls /bootфайлы ядра (vmlinuz) и initramfs
Обзор
Ядро — центральная часть операционной системы: единственная программа,
которая напрямую управляет процессором, памятью, устройствами и файловыми
системами. Все остальные программы (включая оболочку и systemd) обращаются
к этому через системные вызовы — строго определённый интерфейс, а не
напрямую к железу.
Три вещи, за которые отвечает ядро:
- процессы — кто и когда получает время процессора (планировщик);
- память — выделение, защита между процессами, подкачка (см. memory-swap);
- устройства и файловые системы — драйверы (многие — как kernel-modules, подгружаемые отдельно) и доступ к дискам через файловые системы.
Ядро — это не вся операционная система: дистрибутив (Ubuntu, Debian) — это ядро плюс системные программы, менеджер пакетов и настройки поверх него.
Эта статья — про ядро как концепцию: что оно делает и как на него посмотреть.
Про загрузку модулей, dmesg-диагностику драйверов и blacklist — отдельная
статья kernel-modules. Про параметры времени выполнения (sysctl) —
sysctl. Про этапы загрузки до старта ядра — boot-grub.
Рецепты
3Параметры, с которыми ядро загрузилось
Сообщения ядра при старте и в работе
Неполадки
4uname -r показывает старую версию после apt upgrade
Обновление ядра ставит новые файлы, но работает всё ещё старое, пока не
случится перезагрузка. uname -r покажет новую версию только после ребута.
Не понимаю разницы между ядром и дистрибутивом
Ядро — один процесс и набор драйверов; дистрибутив — ядро плюс системные утилиты, пакетный менеджер и настройки (см. uname для команды, glossary «дистрибутив» — для понятия).
Не грузится нужный драйвер
Это почти всегда про модуль ядра, а не про ядро целиком — смотри
kernel-modules: lsmod, modprobe, dmesg | grep.
Хочу изменить поведение ядра без перезагрузки
Часть параметров меняется на лету через sysctl (см. sysctl), но не все:
некоторые применяются только на этапе загрузки (параметры в cmdline).
Опасно
1Удаление работающего ядра
apt remove linux-image-$(uname -r) (или пакета, который сейчас загружен)
может оставить систему без загружаемого ядра при следующем ребуте. Оставляй
хотя бы одну предыдущую версию ядра, пока не убедишься, что новая работает
стабильно (несколько дней/перезагрузок), — GRUB покажет старые версии в
меню на случай отката (см. boot-grub).
Термины
1- дистрибутив distribution
- Поддерживаемый набор ядра, системных программ, пакетов и настроек, например Ubuntu. Ещё встречается в: uname, Служба (service), systemd
См. также
- kernel-modules — Загрузка модулей ядра, просмотр сообщений ядра, параметры.
- boot-grub — Этапы загрузки, GRUB, цели systemd, аварийный режим восстановления.
- sysctl — Параметры ядра времени выполнения — чтение, изменение, постоянные настройки.
Есть неточность? Сообщить об ошибке в статье