Anatomía de GNU / Linux

Hace algún tiempo en Habré hubo una pequeña ola de publicaciones sobre el tema “Por qué [no] elegí Linux”. Como fanático decente, me corté el pelo, pero decidí que era más productivo contar algo sobre mi sistema favorito que romper copias en los comentarios.





Me dio la impresión de que muchos usuarios de GNU / Linux tienen poca idea de de qué está hecho este sistema operativo, por lo que afirman que está arrastrado por las piezas que tenían a mano. Al mismo tiempo, la arquitectura de la mayoría de las distribuciones está bien establecida y se rige por una serie de estándares, incluido el estándar de entorno gráfico freedesktop.org y el estándar Linux Standard Base, que amplía los estándares de Unix. Cuando me presentaron a GNU / Linux hace unos años, carecía de un mapa anatómico simple de una distribución típica para inmersión, así que intentaré contárselo yo mismo.





Cargador

Una sesión de sistema operativo comienza con un gestor de arranque como un teatro de una percha. El cargador de arranque predeterminado hoy en día es GNU GRUB , también conocido como GRUB 2 . La primera rama, ahora llamada " GRUB Legacy ", todavía está disponible . Otro gestor de arranque con una larga trayectoria es Syslinux .





El trabajo del gestor de arranque es inicializar el kernel de Linux. Para hacer esto, en general, necesita saber dónde está el kernel y poder leer este lugar (sección Ext4, por ejemplo). Para ayudar al kernel, el cargador de arranque también suele extraer la imagen de arranque inicial, de la que hablaremos más adelante. GRUB hace muchas otras cosas, como crear menús muy complejos y cargar en cadena otros cargadores de arranque (Windows Boot Manager, por ejemplo). GRUB tiene una sintaxis de configuración similar a la de un shell y es extensible en módulos.





GRUB es grande y potente, a veces demasiado potente, y los sistemas integrados suelen utilizar el 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 .





Administrador de ventanas de Weston
Weston

Weston — Wayland. . , weston



.





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





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



. startx



.





Vida sin DM
DM
Viviendo con SDDM
c SDDM

:





  • GDM GNOME;





  • SDDM KDE;





  • LightDM — ;





  • FlyDM — Astra Linux.





(DE) , , :





  • ;





  • ;





  • ;





  • ;





  • , ;





  • ;





  • , ;





  • ( );





  • ., .





, GNOME KDE, , . Awesome i3.





Administrador de ventanas Creador de ventanas
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).





CUPS de bozal
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.





Descubrir KDE
KDE Discover
Software GNOME con un botón de marca en la barra de título
GNOME Software

:





GNU / Linux contemporáneo visto por un artista
GNU/Linux

GNU/Linux, , . :





  • GNU Free Software Foundation;





  • Red Hat, , IBM;





  • kernel.org Linux Foundation.





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






@ajijiadduh, , , .





Puede enviar ediciones y sugerencias a https://gitlab.com/bergentroll/gnu-linux-anatomy .





Copyright © 2020 Anton "bergentroll" Karmanov.





Esta obra está autorizada bajo la licencia Attribution-ShareAlike 4.0 Worldwide (CC BY-SA 4.0) .












All Articles