Библиотека — Linux — план цикла статей для базы знаний [X]
Шифр
linux-knowledge-base-plan
Разделы
linux
Сверено
2 сентября — в этот день утверждения статьи сверялись с первоисточниками, а не правился текст
Объём
8 383 знака · 18 разделов · чтения около 10 минут

Linux — план цикла статей для базы знаний


Чем этот файл является

Замысел Linux-цикла: почему он такой, из чего состоит и чем отличается от предыдущего цикла по FreeBSD. Написан до того, как правила базы переехали в CLAUDE.md, и стайлгайд, который был в нём раньше, оттуда убран — он успел разойтись с действующими правилами и превратился во второй источник истины. Шаблон статьи, требования к оформлению, порядок ресёрча и правила проверки живут в CLAUDE.md и в разделе «Правила оформления заметок» в README.

Здесь осталось то, что относится к предметной области, а не к процессу.

Чем Linux-цикл отличается от FreeBSD-цикла

Linux — не монолитная система. У FreeBSD есть base system, один init, один пакетный менеджер и одна точка правды; в Linux ядро отделено от всего остального, а init, пакеты и конфигурация зависят от дистрибутива. Из этого следует три вещи, определившие структуру цикла:

  • статьи держатся ядра и общих механизмов, а не особенностей конкретной сборки;
  • там, где дистрибутивная специфика неизбежна (пакеты, init, firewall), показываются два-три варианта: Debian/Ubuntu, RHEL/Fedora, Arch;
  • в тексте явно разделено универсальное (ядро, системные вызовы, /proc, /sys) и то, что дистрибутив волен решать сам.

Сравнение с FreeBSD в конце каждой статьи — не дань симметрии: цикл писался для читателя, у которого база по FreeBSD уже есть, и аналогия с известной системой объясняет быстрее, чем описание с нуля.


План статей

1. Файловая иерархия и FHS

  • FHS (Filesystem Hierarchy Standard) — что стандартизировано, а что на усмотрение дистрибутива
  • /proc и /sys — виртуальные ФС как интерфейс к ядру (в FreeBSD этого почти нет)
  • /etc, /usr, /var, /opt, /srv — логика разделения
  • Слияние /usr (UsrMerge) — зачем и кто уже сделал
  • tmpfs, devtmpfs, sysfs, procfs, cgroup fs — виртуальные ФС
  • Сравнение с FreeBSD: base system vs пакеты, /usr/local

2. systemd: init, сервисы, таймеры

  • Архитектура systemd: PID 1, units, targets, dependencies
  • Unit-файлы: service, timer, socket, mount, path — синтаксис и жизненный цикл
  • systemctl: управление сервисами, enable/disable, mask
  • Таймеры как замена cron
  • Альтернативы: OpenRC (Gentoo/Alpine), runit (Void), s6
  • Сравнение с FreeBSD: rc-система, rc.conf, service jails

Примечание: journald и journalctl перенесены в статью 10 (Мониторинг и отладка), где они рассматриваются в контексте всей подсистемы логирования. systemd-networkd и systemd-resolved перенесены в статью 3 (Сеть), где они сравниваются с альтернативными сетевыми стеками.

3. Сеть: стек, конфигурация, firewall

  • ip (iproute2) vs ifconfig — почему ip победил
  • NetworkManager vs systemd-networkd vs /etc/network/interfaces — когда что
  • systemd-resolved: DNS-резолвинг, split DNS, интеграция с networkd и NetworkManager
  • Namespaces как основа сетевой изоляции (veth, bridge, macvlan)
  • nftables vs iptables — архитектура, цепочки, таблицы
  • XDP и eBPF-based networking — упоминание как эволюции dataplane (Cilium, подробнее об eBPF в статье 10)
  • tc (traffic control) — базовые концепции
  • /proc/sys/net/ — сетевые tunables
  • Сравнение с FreeBSD: ifconfig, PF, netgraph

4. Пакетные менеджеры

  • Два мира: deb (apt/dpkg) и rpm (dnf/yum/rpm)
  • Arch: pacman и AUR
  • Общие концепции: репозитории, зависимости, транзакции, GPG-подписи
  • Flatpak, Snap, AppImage — песочницы для десктопного софта
  • Сборка из исходников: configure/make/make install, checkinstall
  • Сравнение с FreeBSD: pkg, порты, poudriere

5. Ядро: модули, параметры, сборка

  • Архитектура Linux kernel: монолит с модулями
  • /proc/sys/ и sysctl — runtime-параметры
  • Модули: lsmod, modprobe, modinfo, /etc/modprobe.d/
  • Подпись модулей (module signing) и Secure Boot — цепочка доверия от прошивки до модулей ядра (связь с hardening в статье 7)
  • DKMS — автосборка модулей при обновлении ядра
  • Параметры ядра (cmdline) через GRUB/systemd-boot
  • Сборка кастомного ядра (make menuconfig) — когда нужно
  • Сравнение с FreeBSD: sysctl, loader.conf, KLD, securelevel

6. Контейнеризация: namespaces, cgroups, Docker

  • Linux namespaces: pid, net, mnt, uts, ipc, user, cgroup — фундамент изоляции
  • cgroups v1 vs v2: контроль ресурсов
  • Как Docker/Podman используют namespaces + cgroups + overlay FS
  • Docker: images, containers, volumes, networking — архитектура
  • Podman как rootless/daemonless альтернатива
  • LXC/LXD — системные контейнеры (ближе к jail/VM)
  • Сравнение с FreeBSD: jails, VNET, rctl

7. Безопасность: hardening, SELinux/AppArmor, аудит

  • DAC → MAC: модель безопасности Linux
  • SELinux: архитектура, контексты, политики, troubleshooting (audit2why/audit2allow)
  • AppArmor: профили, enforce vs complain — проще чем SELinux, но менее гибок
  • Landlock: LSM для application-level sandboxing (с ядра 5.13) — проще SELinux/AppArmor, не требует привилегий
  • Capabilities: разделение root-привилегий (cap_net_bind_service и др.)
  • seccomp: фильтрация системных вызовов
  • auditd: настройка, правила, ausearch/aureport
  • SSH hardening, fail2ban
  • Сравнение с FreeBSD: MAC framework, securelevel, blacklistd, chflags

8. Файловые системы: ext4, XFS, Btrfs, LVM

  • ext4 — дефолт: журналирование, limits, tunefs
  • XFS — для больших файлов и высокой нагрузки
  • Btrfs — CoW, снепшоты, субтома, send/receive (ближайший аналог ZFS)
  • LVM: PV/VG/LV, снепшоты, thin provisioning — слой абстракции
  • LUKS/dm-crypt: шифрование
  • fstab, mount options, noatime, discard
  • Сравнение с FreeBSD: ZFS (интеграция vs out-of-tree), UFS, GELI

9. Обновление и управление загрузкой

  • GRUB2: конфигурация, rescue, multiple kernels
  • systemd-boot: альтернатива для UEFI
  • Обновление ядра: как работает в deb/rpm
  • Btrfs snapshots для отката (snapper, timeshift)
  • Live patching (kpatch, livepatch) — обновление ядра без ребута
  • Dist-upgrade: стратегии (apt dist-upgrade, dnf system-upgrade)
  • Сравнение с FreeBSD: freebsd-update, bectl, boot environments

10. Мониторинг и отладка

  • journald и journalctl — структурированное логирование, фильтрация, следование, boot'ы (архитектурно часть systemd, но используется как основной инструмент диагностики)
  • dmesg, kern.log, syslog vs journald
  • /proc и /sys — чтение состояния системы
  • top/htop, vmstat, iostat, sar (sysstat) — базовая диагностика
  • strace, ltrace — трассировка
  • perf: профилирование, flame graphs
  • eBPF/bpftrace — динамическая трассировка (аналог DTrace), XDP для сетевой диагностики
  • ss vs netstat
  • Brendan Gregg's USE Method для Linux
  • Сравнение с FreeBSD: DTrace, truss, procstat, systat, SIGINFO

11 (бонус). Cheatsheet

  • Сводный quick reference по всем статьям
  • Организация по задачам
  • Карта статей

Порядок написания

Рекомендуемый порядок совпадает с нумерацией — от фундамента к практике. Но можно адаптировать по интересу. Каждая статья должна быть самодостаточной, хотя и ссылаться на другие.

Граф зависимостей между статьями

Статьи самодостаточны, но некоторые строятся на понятиях из предыдущих:

  • Статья 3 (Сеть) → Статья 6 (Контейнеризация): namespaces, veth, bridge
  • Статья 5 (Ядро) → Статья 6 (Контейнеризация): cgroups, модули
  • Статья 5 (Ядро) → Статья 7 (Безопасность): module signing, Secure Boot
  • Статья 6 (Контейнеризация) → Статья 8 (ФС): overlay FS
  • Статья 2 (systemd) → Статья 10 (Мониторинг): journald
  • Статья 3 (Сеть) → Статья 10 (Мониторинг): eBPF/XDP

Примечание

Этот план — отправная точка. Можно изменить порядок, объединить или разделить темы, добавить специфичные статьи (например, отдельная статья по eBPF или по Kubernetes networking). План адаптируется по ходу работы.

Так и вышло: цикл перерос эти десять пунктов. К ним добавились статьи о пользователях, группах и PAM и о времени и синхронизации, а диагностика производительности выделилась в отдельное семейство — карта инструментов по слоям системы и восемь справочников команд к ней. Актуальный состав всегда виден в README и в сводной карте; этот файл описывает замысел и шаблон, а не текущий перечень.


Связанные заметки

Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.

Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.