Wyszukiwanie w witrynie

Historia „init” i „systemd”: dlaczego „init” należało zastąpić „systemd” w systemie Linux


Subskrybuję kilka list mailingowych związanych z różnymi dystrybucjami i aplikacjami Linuksa, aby być na bieżąco z tym, co i gdzie się dzieje. Jakie są nowe błędy? Jakie są wydane poprawki? Czego można się spodziewać w następnej wersji? i całą masę innych rzeczy. Obecnie lista mailingowa jest mocno zapełniona słowami „Wybierz swoją stronę w Linux Divide”, głównie na liście mailingowej Debiana i kilku innych.

Na czym polega „Wybierz swoją stronę w Linux Divide”?

Demon init zostanie zastąpiony demonem systemd w niektórych dystrybucjach Linuksa, chociaż wiele z nich już go zaimplementowało. To tworzy/będzie tworzyło ogromną przepaść pomiędzy tradycyjnym Unixem/Linux Guardem a Nowym Linux Guardem – programistami i administratorami systemu.

W tym artykule omówimy i rozwiążemy wszystkie zapytania jeden po drugim.

  1. Co to jest init?
  2. Co to jest systemowy?
  3. Dlaczego init wymagał wymiany?
  4. Jakie funkcje będzie posiadał system.

Co jest w środku?

W Linuksie init to skrót od Inicjalizacja. init to proces demona, który rozpoczyna się zaraz po uruchomieniu komputera i działa aż do jego wyłączenia. W rzeczywistości init jest pierwszym procesem rozpoczynającym się podczas uruchamiania komputera, co czyni go rodzicem wszystkich innych uruchomionych procesów, bezpośrednio lub pośrednio, i dlatego zazwyczaj przypisuje się mu „pid=1”.

Jeśli w jakiś sposób demon init nie mógł się uruchomić, żaden proces nie zostanie uruchomiony, a system osiągnie etap zwany „Panią jądra”. init jest najczęściej określany jako init Systemu V. System V jest pierwszym komercyjnym systemem operacyjnym UNIX zaprojektowanym, a użycie init w większości współczesnych dystrybucji Linuksa jest identyczne z systemem operacyjnym System V z kilkoma wyjątkami, jak Slackware używający stylu BSD i Gentoo używający niestandardowego init .

Potrzeba zastąpienia init czymś doskonalszym była odczuwalna od dawna i od czasu do czasu opracowywano kilka alternatyw, z których część stała się natywnym zamiennikiem init dystrybucji, a niektóre z nich to:

  1. Upstart – demon zastępujący init zaimplementowany w Ubuntu GNU/Linux i zaprojektowany do asynchronicznego uruchamiania procesu.
  2. Epoch – demon zastępujący init, zbudowany wokół prostoty i zarządzania usługami, zaprojektowany do uruchamiania procesów jednowątkowych.
  3. Mudar – demon zastępujący init napisany w Pythonie, zaimplementowany na Pardus GNU/Linux i zaprojektowany do asynchronicznego uruchamiania procesu.
  4. systemd – Demon zastępujący init przeznaczony do równoległego uruchamiania procesów, zaimplementowany w wielu standardowych dystrybucjach – Fedora, OpenSuSE, Arch, RHEL, CentOS itp.

Co to jest systemd?

systemd to demon zarządzania systemem, którego nazwa jest zgodna z konwencją UNIX i polega na dodaniu „d” na końcu demona. Aby można było je łatwo rozpoznać. Początkowo był wydawany na licencji GNU General Public License, ale obecnie wydania są wydawane na licencji GNU Lesser General Public License. Podobnie jak init, systemd jest rodzicem wszystkich innych procesów, bezpośrednio lub pośrednio, i jest pierwszym procesem rozpoczynającym się podczas rozruchu, dlatego zwykle przypisuje się mu „pid=1”.

systemd może odnosić się do wszystkich pakietów, narzędzi i bibliotek wokół demona. Został zaprojektowany, aby przezwyciężyć niedociągnięcia init. Sam jest to proces w tle, który ma na celu równoległe uruchamianie procesów, redukując w ten sposób czas uruchamiania i obciążenie obliczeniowe. Ma wiele innych funkcji w porównaniu do init.

Dlaczego konieczna była wymiana init?

Proces init rozpoczyna się szeregowo, tzn. jedno zadanie rozpoczyna się dopiero po pomyślnym uruchomieniu ostatniego zadania i jego załadowaniu do pamięci. Często skutkowało to opóźnionym i długim czasem uruchamiania. Jednak systemd nie został zaprojektowany z myślą o szybkości, ale o dokładnym wykonywaniu zadań, co z kolei pozwala uniknąć wszelkich opóźnień niezbędnych przez ONZ.

Funkcje systemd
  1. Czysty, nowoczesny i wydajny projekt.
  2. Prostszy proces uruchamiania.
  3. Przetwarzanie współbieżne i równoległe podczas rozruchu.
  4. Lepsze API.
  5. Prosta składnia jednostek.
  6. Możliwość usunięcia opcjonalnych komponentów.
  7. Niskie ślady pamięci.
  8. Ulepszona technika wyrażania zależności.
  9. Instrukcja inicjalizacji zapisana w pliku konfiguracyjnym, a nie w skrypcie powłoki.
  10. Skorzystaj z gniazda domeny Unix.
  11. Planowanie zadań przy użyciu systemowych zegarów kalendarza.
  12. Rejestrowanie zdarzeń za pomocą Journald.
  13. Wybór rejestrowania zdarzeń systemowych za pomocą systemd i syslog.
  14. Logi zapisywane są w pliku binarnym.
  15. stan systemd można zachować, aby wywołać go później w przyszłości.
  16. Śledź proces za pomocą cgroup jądra, a nie PID.
  17. Logowanie użytkowników zarządzane przez systemd-logind.
  18. Lepsza integracja z Gnome w celu zapewnienia interoperacyjności.
Wąskie gardła systemowe
  1. Wszystko w jednym miejscu.
  2. Nie jest to standard POSIX.

Integracja Systemd i Distro

Linux Distribution

Integracja

Fedora

Tak, pierwsza dystrybucja, która przyjęła systemd

Arch

Tak

RedHat

Tak

CentOS

Tak

Debian

Tak, nazwa kodowa Debiana 8 Jessie będzie domyślnie mieć systemd

Gentoo

Tak, ale należy pobrać, zainstalować i skonfigurować stronę z niestandardowym programem inicjującym

OpenSUSE

Tak

Slack

Nie (chociaż nie zostało to jeszcze przyjęte w Slackware, Patric Volkerding nie ujawnił żadnych wskazówek, czy zostanie to przyjęte, czy nie)

Ubuntu

Tak, należy zainstalować i skonfigurować za pomocą Upstream.

Spór

Linus Torvalds, główny architekt jądra Linuksa, uważa, że podejście głównego twórcy systemu do użytkowników nie jest w porządku, a raporty o błędach nie wydają się w porządku. Donoszono również, że filozofia systemowa jest dziwnym i obcym sposobem kontrolowania procesów systemowych. To samo zostało odnotowane przez Patrica Volkerdinga i innych znaczących użytkowników i programistów Linuksa, a także od czasu do czasu na forach internetowych.

systemd vs init

Features init systemd
DBus Dependency – Mandatory No Yes
Device based Activation No Yes
Device dependency configuration with udev No Yes
Timer based Activation Cron/at Proprietary
Quota Management No Yes
Automatic Service Dependency Handling No Yes
Kills users Process at logout No Yes
Swap Management No Yes
SELinux integration No Yes
Support for Encrypted HDD No Yes
Static kernle module loading No Yes
GUI No Yes
List all the child processes No Yes
Sysv compatible Yes Yes
Interactive booting No Yes
Portable to non x86 Yes No
Adopted on Several Distro Several Distro
Parallel service startup No Yes
Resource limit per service No Yes
Easy extensible startup script Yes No
Separate Code and Configuration File Yes No
Automatic dependency calculation No Yes
Verbose debug Yes No
Version N/A V44+
Size 560 KB N/A
Number of Files 75 files 900 files + glib + DBus
Lines of code – LOC 15000 (Approx) 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code)

Wniosek

Wszystko, co działa jako pid=1, nie może się zepsuć, nie może powodować bałaganu i musi być skutecznie i wydajnie kontrolowane przez użytkowników. Wielu użytkowników uważa, że zastąpienie init systememd to nic innego jak wymyślanie koła na nowo za każdym razem jako efekt uboczny Linuksa. Ale taka jest różnorodna natura Linuksa. Dzieje się tak dlatego, że Linux jest tak potężny. Zmiana jest dobra i musimy ją docenić, jeśli ma dobry powód.

To wszystko na teraz. Wrócę tu ponownie z kolejnym ciekawym artykułem, który ludzie z chęcią przeczytają. Do tego czasu bądź na bieżąco i połącz się z Tecmint. Nie zapomnij podzielić się z nami swoimi cennymi opiniami w komentarzach poniżej.