Linux: distribuce, správa a skriptování

Linux: Distribuce, správa a skriptování

Co je Linux a kde se používá

Linux je rodina svobodných operačních systémů založených na Linux kernelu a uživatelském prostoru pocházejícím primárně z projektu GNU. Díky modulární architektuře a otevřenému vývoji běží na všem od embedded zařízení (routery, IoT, automotive) přes servery, superpočítače a cloud až po desktopové distribuce a mobilní platformy (Android).

Historie a licencování

  • 1991: Linus Torvalds uvolňuje první verzi jádra pro x86.
  • Nástroje GNU poskytují shell, kompilátory a základní uživatelský prostor.
  • Licence GPLv2: zajišťuje copyleft – modifikace jádra musí zůstat otevřené.
  • Ekosystém vzniká spoluprací komunit, univerzit a firem (distribuce, ovladače, subsystémy).

Architektura jádra: monolit s moduly

Linuxové jádro je monolitické s možností dynamicky načítaných modulů (ovladače, souborové systémy, protokoly). Klíčové subsystémy:

  • Správa procesů a plánovač (CFS): spravedlivé plánování, priority, afinita, NUMA.
  • Správa paměti: stránkování, page cache, HugeTLB/THP, cgroups v2, memory compaction, zram/zswap.
  • V/V a bloková vrstva: multi-queue (blk-mq), I/O plánovače, io_uring pro asynchronní I/O s nízkou latencí.
  • Síťový stack: Netfilter/nftables, TC/Qdisc, XDP, eBPF hooky, tun/tap, WireGuard.
  • Bezpečnost: DAC, POSIX ACL, Linux capabilities, LSM (SELinux, AppArmor), seccomp-bpf, integrita (IMA/EVM).
  • Zařízení: udev, devtmpfs, subsystémy (USB, PCI, DRM/KMS, HID, ALSA).
  • Virtualizace: KVM (hardwarová akcelerace), virtio/virtiofs, VFIO/IOMMU.

Proces zavádění: od firmwaru k uživatelskému prostoru

  1. Firmware (BIOS/UEFI) inicializuje HW a předá řízení zavaděči.
  2. Bootloader (GRUB/systemd-boot) načte kernel a initramfs.
  3. Kernel detekuje zařízení, připojí rootfs a spustí PID 1.
  4. Init systém (systemd, OpenRC, runit) spouští služby a cíle (targets/runlevels).

Distribuce a správa balíčků

  • Debian/Ubuntu (APT, dpkg), RHEL/CentOS/Alma/Rocky/Fedora (DNF/RPM), SUSE (zypper/RPM), Arch (pacman), Alpine (apk, musl libc).
  • Modely aktualizací: bodová vydání vs. rolling release, LTS a podpora pro podniky.
  • Alternativy: Nix/Guix (deklarativní), Flatpak/Snap/AppImage (sandboxované desktopové aplikace).

Souborové systémy a správa úložišť

  • Ext4: výchozí, žurnálování, stabilita.
  • XFS: velké souborové systémy, paralelismus.
  • Btrfs: copy-on-write, snapshoty, subvolumes, send/receive, kontrolní součty, komprese.
  • ZFS on Linux: COW, pokročilé RAID-Z, deduplikace (licenční specifika mimo jádro).
  • LVM2: logické svazky, thin provisioning, snapshoty; mdadm pro softwarový RAID.
  • F2FS: optimalizace pro flash/NAND.
  • Síťové souborové systémy: NFSv4, SMB3, 9p, CephFS, GlusterFS.

Síťování a bezpečnost provozu

  • Konfigurace: ip, ss, ethtool, systemd-networkd/NetworkManager, netplan.
  • Firewall a filtrování: nftables (nástupce iptables), firewalld, UFW; TC pro řízení provozu (shaping/policing), fq_codel/cake proti bufferbloatu.
  • Tunelování/VPN: WireGuard, IPsec, GRE/VXLAN/Geneve; bridging/bonding/LACP.
  • Zero trust a identita: strongSwan, SSSD, Kerberos, PAM, FIDO2/U2F.

Init, služby a logování

  • systemd: units (service/socket/timer), integrace s cgroups, targets, sandboxing (ProtectSystem, PrivateTmp, CapabilityBoundingSet).
  • Journald a tradiční syslog (rsyslog, syslog-ng), rotace logů.
  • Čas: chrony/systemd-timesyncd, NTP/PTP pro přesnou synchronizaci.

Virtualizace, kontejnery a orchestrace

  • KVM/QEMU: plná virtualizace, libvirt/virsh, virtio, cloud-init.
  • Namespaces a cgroups: izolace PID/NET/IPC/MNT/UTS/USER; řízení CPU/paměti/IO.
  • LXC/LXD a Docker/Podman: OCI image, overlayfs, kontejnery bez oprávnění root.
  • Kubernetes: ovladače CRI/CNI/CSI, kubelet, containerd/cri-o, network policy (Calico/Cilium), service mesh (Istio/Linkerd).

Bezpečnostní model

  • DAC & ACL: vlastník/skupina/práva, POSIX ACL pro jemnozrnné řízení přístupu.
  • Capabilities: rozdělení oprávnění privilegovaného uživatele root (např. CAP_NET_ADMIN).
  • LSM: SELinux (kontextové politiky), AppArmor (profilování), Smack; auditd/auditctl.
  • Sandboxing: seccomp-bpf, namespaces, Landlock, portály Flatpaku, systémové politiky MAC.
  • Aktualizace: livepatch (kpatch/kGraft), automatizace bezpečnostních oprav, reprodukovatelná sestavení.
  • Šifrování: dm-crypt/LUKS2, fscrypt (po jednotlivých souborech), integrace s TPM 2.0, FIDO2.

Vývojářský ekosystém

  • Toolchain: GCC/Clang, glibc nebo musl, binutils, make/ninja, CMake/Meson.
  • Jazyky: C/C++, Rust (rustc/LLVM, Rust-for-Linux), Go, Python, Java.
  • Ladění a profilování: gdb/lldb, strace/ltrace, perf, eBPF (bcc/bpftrace), valgrind, systemtap.
  • Sestavovací systémy distribucí: OBS (SUSE), Koji (Fedora/RHEL), Launchpad (Debian/Ubuntu).

Observabilita a výkon

  • Metodika: měřit → analyzovat → optimalizovat; sledovat CPU, paměť, IO, síť, latence.
  • Nástroje: top/htop/atop, vmstat/iostat, sar, pidstat, perf record/report, bpftrace, ss -tinap, ethtool -S.
  • Technologie jádra: eBPF/XDP pro zpracování paketů, kprobes/tracepoints/uprobes, io_uring.
  • Monitoring: Prometheus + node_exporter, Grafana, journald/rsyslog → Loki/ELK/OpenSearch.

Desktopová prostředí a grafický stack

  • DE: GNOME, KDE Plasma, Xfce, Cinnamon, MATE; správci oken (i3, sway).
  • Grafika: DRM/KMS v kernelu, Mesa (OpenGL/Vulkan), Wayland (náhrada X.Org), PipeWire (audio/video).
  • Správa balíčků a sandbox: Flatpak (portály), Snaps; fontconfig, motivy/vzhledy a ikony.

Linux v cloudu a na serveru

  • Cloud-native: neměnné image, zavádění přes cloud-init/Ignition, systemd-timers pro úlohy.
  • SLA a spolehlivost: HA (Pacemaker/Corosync), clustering, keepalived/VRRP, rozdělení rolí (control/data/storage).
  • Bezstavové vs. stavové služby: databáze (PostgreSQL, MySQL, Redis), vrstvy úložiště (Ceph, Longhorn), vyvažování zátěže (HAProxy, NGINX, Envoy).

Embedded systémy, real-time a specifické případy použití

  • Yocto/OpenEmbedded, Buildroot: vlastní obrazy pro zařízení.
  • PREEMPT_RT: deterministické latence, izolace CPU, vláknové zpracování IRQ.
  • Automotive/Industrial: AGL, CIP, OPC UA, TSN (Time-Sensitive Networking).

Tabulka: klíčové komponenty systému Linux

Komponenta Role Typické nástroje
Jádro Správa HW, plánování, paměť, bezpečnost config, modprobe, sysctl, /proc, /sys
Init/logování Spouštění služeb, evidence událostí systemd, journald, rsyslog
Balíčky Instalace/aktualizace SW apt/dnf/zypper/pacman/apk
Síť Konektivita, firewall, QoS ip, nmcli, nft, tc, wg
Úložiště FS, LVM, RAID, šifrování mkfs, lvm, mdadm, cryptsetup
Virtualizace VM a kontejnery kvm, qemu, libvirt, podman, docker
Observabilita Měření a ladění perf, bpftrace, sar, iostat

Kontrolní seznam: zavedení Linuxu v produkci

  1. Výběr distribuce podle podpory, ekosystému a životního cyklu.
  2. Definice bezpečnostních politik (LSM, firewall, okna pro aktualizace, zálohování).
  3. Standardizace image (benchmarky CIS, hardening, minimální footprint).
  4. Automatizace (Ansible/Puppet/Salt, IaC – Terraform pro cloud, deklarativní konfigurace).
  5. Monitoring a logování (metriky + logy + trace), upozorňování a SLO/SLI.
  6. Obnova po havárii: zálohy, testy obnovy, dokumentace běžných operací (runbooky).

Tipy pro výkon a spolehlivost

  • Oddělte kritické úlohy pomocí cgroups, cpuset a NUMA policy.
  • Pro vysokou propustnost sítě zvažte XDP/eBPF, správnou velikost ring bufferů a offloadů.
  • Pro nízkou latenci I/O použijte io_uring a moderní NVMe stack, zvažte fstrim a volby připojení (noatime, lazytime).
  • U úloh citlivých na jitter nastavte podle potřeby IRQ affinity, CPU isolation a rtprio.

Osvědčené bezpečnostní postupy

  • Princip nejmenších oprávnění, služby bez oprávnění root, capabilities místo plných oprávnění root.
  • Aktivní LSM (SELinux nebo AppArmor) v režimu enforcing, pravidelný audit logů.
  • Samostatné přípojné body (noexec,nodev,nosuid), kořenový souborový systém pouze pro čtení u kontejnerů/neměnných sestavení.
  • Rotace a instalace oprav (kernel livepatch, automatizované bezpečnostní aktualizace v servisních oknech).
  • Ověřování integrity (AIDE, IMA), bezpečná správa tajemství (pass, sops, vault).

Závěr

Linux poskytuje robustní, škálovatelný a bezpečný základ pro moderní infrastrukturu – od mikrokontrolérů po globální clustery. Otevřený vývoj, široký výběr distribucí a bohatý ekosystém nástrojů umožňují systém přizpůsobit specifickým požadavkům. Úspěšné nasazení stojí na disciplíně: standardizaci, automatizaci, měření a průběžném zabezpečení.