Anatomia do GNU / Linux

Algum tempo atrás no Habré houve uma pequena onda de posts sobre o tópico “Por que eu [não] escolhi o Linux”. Como um fanático decente, cortei o cabelo, mas decidi que era mais produtivo contar algo sobre meu sistema favorito do que quebrar cópias nos comentários.





Tive a impressão de que muitos usuários do GNU / Linux não têm ideia do que esse sistema operacional é feito, então eles afirmam que ele é arrastado de peças que vieram à mão. Ao mesmo tempo, a arquitetura da maioria das distribuições é bem estabelecida e governada por vários padrões, incluindo o padrão de ambiente gráfico freedesktop.org e o Linux Standard Base, que estende os padrões Unix. Quando fui apresentado ao GNU / Linux alguns anos atrás, eu não tinha um mapa anatômico simples de uma distribuição típica para imersão, então tentarei falar sobre isso eu mesmo.





Carregador

Uma sessão do sistema operacional começa com um bootloader como um teatro de um cabide. O bootloader padrão hoje é GNU GRUB , também conhecido como GRUB 2 . A primeira ramificação, agora chamada " GRUB Legacy ", ainda está disponível . Outro bootloader com uma longa história é o Syslinux .





O trabalho do carregador de inicialização é inicializar o kernel do Linux. Para fazer isso, em geral, você precisa saber onde está o kernel e ser capaz de ler este local (seção Ext4, por exemplo). Para ajudar o kernel, o carregador de boot geralmente também puxa a imagem de boot inicial, sobre a qual falaremos mais tarde. GRUB faz muitas outras coisas, como construir menus muito complexos e carregar em cadeia outros carregadores de inicialização (Gerenciador de inicialização do Windows, por exemplo). GRUB tem sintaxe de configuração semelhante a shell e é extensível em módulos.





O GRUB é grande e poderoso, às vezes muito poderoso, e os sistemas embarcados costumam usar o compacto Das U-Boot .





Núcleo

Linux (« , !»). , , POSIX- . /boot/



vmlinuz



, «vm» , «z» , .





, :





  • mainline («»);





  • LTS ( );





  • rt ( );





  • (zen, hardened etc);





  • libre ( , ).





  • -Linux Debian GNU/Hurd ( GNU Hurd) Debian GNU/kFreeBSD ( FreeBSD ). , , GNU/Linux.





initrd initramfs. , . , .





(- ZFS, - LUKS). . . , . :





  • initramfs-tools — Debian.





  • Dracut ( ) — RHEL (CentOS, Scientific Linux etc.). , .





  • mkinitcpio Archlinux, Dracut, .





  • make-initrd — Alt Linux.





Plymouth, . (-), , , « »™ Ubuntu Fedora.





Init

— . PID 1. . , , /sbin/init



( /usr/bin/init



, , ).





. Sysvinit, Unix System V. Sysvinit . , , , , «-». 00-- 10- : OpenRC Gentoo, Upstart Canonical, Systemd Red Hat . Systemd. . . , - Apache 153 , apache Arch Linux — 15 . , , , , , Unix.





, . — « , », , POSIX . « » (login shell) — , . , . , /etc/passwd



.





:





  • Bourne shell (sh) — « », .





  • Bourne again shell (bash) — GNU/Linux sh.





  • Debian Almquist shell (dash) — , sh. Debian, /usr/bin/sh



    .





  • Z shell (zsh) — bash, . , .





  • BusyBox — , , — POSIX- ( : $ busybox sh



    ).





, . — X Window System 1984 . , . , Unix- . GNU/Linux ( BSD) Xfree86. X.Org Server, Xorg, XFree86.





X Window System — , , — . , . SSH , , ( sshd):





$ ssh -X hostname firefox
      
      



, X Window System : , — . «The UNIX-HATERS Handbook».





X, , , , .





X keyboard extension, , .





«» . — Wayland. Wayland . , Wayland 2008 , X .





Weston Window Manager
Weston

Weston — Wayland. . , weston



.





. « » (root window), , , «» , . «» . .





, (DM) . , , ( ) . - , ( , , ). , . ~/.xinitrc



. startx



.





Vida sem DM
DM
Viver com SDDM
c SDDM

:





  • GDM GNOME;





  • SDDM KDE;





  • LightDM — ;





  • FlyDM — Astra Linux.





(DE) , , :





  • ;





  • ;





  • ;





  • ;





  • , ;





  • ;





  • , ;





  • ( );





  • ., .





, GNOME KDE, , . Awesome i3.





Window Maker Window Maker
Window Maker

Window Maker GNUstep. GNUstep NeXTSTEP. .





— , , . , Windows Forms , Motif (Open Motif ).





GTK Qt. GTK GIMP GNOME. C , Python C++, Vala. Qt — , ( - ). C++ , (). . KDE .





API

Mesa — . API OpenGL , , Vulkan ( API VDPAU VAAPI). , Mesa , DirectX .





, , , , .





PAM — Pluggable Authentication Modules — . , , , . PAM , PAM Kerberos ( MIT' krb5), PAM . ( so



) . , (pam_mkhomedir.so



) (pam_mount.so



).





su sudo ( root



). — su , - , sudo — . sudo , - , - .





Polkit . sudo, , sudo — . , , JavaScript'.





Linux Security Modules (LSM) — Linux, ́ . ́ , . — SELinux AppArmor. Red Hat, Immunix Canonical Ltd. , SELinux RHEL , AppArmor — Ubuntu. . , , . , - . - . , .





GNU/Linux , , , .





CUPS — « UNIX», Apple. , , , . CUPS - ( localhost:631).





Focinho CUPS
CUPS

CUPS , SANE. , SANE . CUPS. , , HPLIP HP Inc. HPLIP GNU/Linux HP. , HPLIP CUPS , HP CUPS, . hp-setup



.





ALSA. , PulseAudio ALSA. , PulseAudio — , , . JACK, . , MIDI-.





Red Hat PipeWire PulseAudio JACK. .





POSIX- . GNU/Linux , (IPC) -. D-Bus, . ? , , . .





GNU/Linux ( ). NetworkManager — Red Hat, , . NM , . NetworkManager , , , VLAN' , , nmtui



nmcli



. , Red Hat, , Debian , « » NM . , — Wicd.





WiFi-, , WPA supplicant, iwd, , Intel.





Bluez, Bluetooth-.





iptables . , , Linux Netfilter. ( ) nftables nft. , , IPv4, IPv6, ARP L2-. iptables nftables . , nft iptables.





- nftables ( ), RHEL firewalld, Ubuntu — UFW.





— . — RPM Red Hat dpkg Debian. — pacman Arch Linux. RPM dpkg : , , . , . RHEL yum, dnf, Debian apt-get apt-cache, apt. pacman , . , . nix, .





— - . , ( GNU/Linux). : Flatpack Gnome, Snap Canonical AppImage . , . , . .





, — GNOME Software KDE Discover.





KDE Discover
KDE Discover
Software GNOME com um botão de marca na barra de título
GNOME Software

:





GNU / Linux contemporâneo visto por um artista
GNU/Linux

GNU/Linux, , . :





  • GNU Free Software Foundation;





  • Red Hat, , IBM;





  • kernel.org Linux Foundation.





, , — , ? , : open source. , . , , - , , -, . , GNU/Linux, - .






@ajijiadduh, , , .





Você pode enviar edições e sugestões para https://gitlab.com/bergentroll/gnu-linux-anatomy .





Copyright © 2020 Anton "bergentroll" Karmanov.





Este trabalho está licenciado sob a licença Attribution-ShareAlike 4.0 Worldwide (CC BY-SA 4.0) .












All Articles