Чем этот файл является
Замысел 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 и в сводной карте; этот файл описывает замысел и шаблон, а не текущий перечень.
Связанные заметки
- Linux — сводный cheatsheet — карта готовых статей цикла
- FreeBSD — сводный cheatsheet — карта статей предыдущего цикла, взятого за образец
- Устройство ОС — план цикла статей — план соседнего цикла: те же механизмы с позиции того, кто их реализует
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.