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 .
Weston — Wayland. . , weston
.
. « » (root window), , , «» , . «» . .
, (DM) . , , ( ) . - , ( , , ). , . ~/.xinitrc
. startx
.
:
GDM GNOME;
SDDM KDE;
LightDM — ;
FlyDM — Astra Linux.
(DE) , , :
;
;
;
;
, ;
;
, ;
( );
., .
, GNOME KDE, , . Awesome i3.
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 , 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.
:
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) .