Anatomie de GNU / Linux

Il y a quelque temps sur Habré il y avait une petite vague de messages sur le sujet «Pourquoi je [n'ai pas] choisi Linux». En tant que fanatique décent, j'ai eu des coupes de cheveux, mais j'ai décidé qu'il était plus productif de parler de mon système préféré que de casser des copies dans les commentaires.





J'ai eu l'impression que de nombreux utilisateurs de GNU / Linux ont peu d'idée de ce dont est fait ce système d'exploitation, alors ils prétendent qu'il est brouillé à partir de morceaux qui sont venus sous la main. En même temps, l'architecture de la plupart des distributions est bien établie et régie par un certain nombre de normes, y compris la norme d'environnement graphique freedesktop.org et la base standard Linux, qui étend les normes Unix. Quand j'ai découvert GNU / Linux il y a quelques années, il me manquait une simple carte anatomique d'une distribution typique pour l'immersion, alors je vais essayer de vous en parler moi-même.





Chargeur

Une session du système d'exploitation commence par un chargeur de démarrage comme un théâtre à partir d'un cintre. Le chargeur de démarrage par défaut est aujourd'hui GNU GRUB , également connu sous le nom de GRUB 2 . La première branche, désormais appelée " GRUB Legacy ", est toujours disponible . Un autre chargeur de démarrage avec une longue histoire est Syslinux .





Le travail du bootloader est d'initialiser le noyau Linux. Pour ce faire, en général, il faut savoir où se trouve le noyau et pouvoir lire cet endroit (section Ext4, par exemple). Pour aider le noyau, le chargeur de démarrage extrait aussi généralement l'image de démarrage initiale, dont nous parlerons plus tard. GRUB fait beaucoup d'autres choses, comme la création de menus très complexes et le chargement en chaîne d'autres chargeurs de démarrage (Windows Boot Manager par exemple). GRUB a une syntaxe de configuration de type shell et est extensible dans les modules.





GRUB est grand et puissant, parfois trop puissant, et les systèmes embarqués utilisent souvent le Das U-Boot compact .





Noyau

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 .





Gestionnaire de fenêtres Weston
Weston

Weston — Wayland. . , weston



.





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





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



. startx



.





La vie sans DM
DM
Vivre avec SDDM
c SDDM

:





  • GDM GNOME;





  • SDDM KDE;





  • LightDM — ;





  • FlyDM — Astra Linux.





(DE) , , :





  • ;





  • ;





  • ;





  • ;





  • , ;





  • ;





  • , ;





  • ( );





  • ., .





, GNOME KDE, , . Awesome i3.





Gestionnaire de fenêtres 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).





COUPES À MUSELINE
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.





Découvrez KDE
KDE Discover
Logiciel GNOME avec un bouton de marque dans la barre de titre
GNOME Software

:





GNU / Linux contemporain vu par un artiste
GNU/Linux

GNU/Linux, , . :





  • GNU Free Software Foundation;





  • Red Hat, , IBM;





  • kernel.org Linux Foundation.





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






@ajijiadduh, , , .





Vous pouvez envoyer des modifications et des suggestions à https://gitlab.com/bergentroll/gnu-linux-anatomy .





Copyright © 2020 Anton "bergentroll" Karmanov.





Ce travail est sous licence Attribution-ShareAlike 4.0 Worldwide (CC BY-SA 4.0) .












All Articles