Чтение кода ядра — звучит как занятие для академиков. Но на практике это скилл, который может однажды сэкономить тебе сутки дебага или открыть глаза на то, что происходит "под капотом".
📌 Когда это нужно:
- 🐛 Твой сервис падает на проде с
segfault, и strace`/`gdb не дают внятной картины.- 🔥 Системные лимиты или поведение
cgroup'ов не совпадают с документацией.- ⏱ Ты хочешь точно понять, что делает
epoll_wait() или почему OOM killer прибивает твой процесс.📖 Как начать:
1. Выбери версию ядра, с которой работаешь (
uname -r тебе в помощь).2. Клонируй исходники:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
git checkout v5.x.x # нужная версия
3. Ищи интересующие syscalls или подсистемы:
-
fs/, kernel/, mm/, net/, ipc/ — ключевые директории.-
grep -rn "do_fork" или grep -rn "epoll_wait" — твои друзья.🧠 Советы:
- Начинай с высокоуровневого понимания — читай документацию
kernel.org, LWN.net, статьи от разработчиков.- Используй
cscope, ctags или LSP в редакторе — иначе заблудишься.- Комментируй код для себя: через неделю забудешь, что понял.
Если ты начнёшь разбираться в ядре — ты уже на пути к тому, чтобы быть не просто DevOps, а системным ниндзя, которому по плечу всё — от тюнинга производительности до траблшутинга на голом железе.
Подпишись 👉 @devopslib