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 — 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, , , .
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) .