少し前にHabréで、「なぜ私がLinuxを選択しなかったのか」というトピックに関する小さな投稿の波がありました。まともな狂信者として、私は髪を切ったが、コメントでコピーを壊すよりも、私のお気に入りのシステムについて何かを話す方が生産的であると判断した。
多くのGNU / Linuxユーザーは、このオペレーティングシステムが何でできているのかほとんどわからないという印象を受けたため、手元にある断片からそれが不明瞭になっていると主張しています。同時に、ほとんどのディストリビューションのアーキテクチャは十分に確立されており、freedesktop.orgグラフィカル環境標準やUnix標準を拡張するLinux標準ベースなどの多くの標準によって管理されています。数年前にGNU / Linuxを紹介されたとき、私は浸漬のための典型的な分布の単純な解剖学的マップを欠いていたので、それについて自分で話そうと思います。
ローダ
オペレーティングシステムセッションは、ハンガーからの劇場のようなブートローダーから始まります。今日ブートローダデフォルトはGNU GRUBとしても知られている、GRUB 2。現在「GRUBLegacy」と呼ばれている最初のブランチは、引き続き利用できます。長い歴史を持つもう1つのブートローダーはSyslinuxです。
ブートローダーの仕事は、Linuxカーネルを初期化することです。これを行うには、一般に、カーネルがどこにあるかを知り、この場所を読み取ることができる必要があります(たとえば、セクションExt4)。カーネルを支援するために、ブートローダーは通常、最初のブートイメージもプルします。これについては後で説明します。GRUBは、非常に複雑なメニューの作成や他のブートローダー(Windows Boot Managerなど)のチェーンロードなど、他の多くのことを行います。GRUBにはシェルのような構成構文があり、モジュールで拡張できます。
GRUBは大きくて強力で、時には強力すぎることもあり、組み込みシステムはコンパクトなDasU-Bootを使用することがよくあります。
核
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, , , .
編集や提案はhttps://gitlab.com/bergentroll/gnu-linux-anatomyに送信できます。
Copyright©2020Anton "bergentroll" Karmanov。
この作品は、Attribution-ShareAlike 4.0 Worldwide(CC BY-SA 4.0)ライセンスの下でライセンスされています。