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.
- Co to jest init?
- Co to jest systemowy?
- Dlaczego init wymagał wymiany?
- 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:
- Upstart – demon zastępujący init zaimplementowany w Ubuntu GNU/Linux i zaprojektowany do asynchronicznego uruchamiania procesu.
- Epoch – demon zastępujący init, zbudowany wokół prostoty i zarządzania usługami, zaprojektowany do uruchamiania procesów jednowątkowych.
- Mudar – demon zastępujący init napisany w Pythonie, zaimplementowany na Pardus GNU/Linux i zaprojektowany do asynchronicznego uruchamiania procesu.
- 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
- Czysty, nowoczesny i wydajny projekt.
- Prostszy proces uruchamiania.
- Przetwarzanie współbieżne i równoległe podczas rozruchu.
- Lepsze API.
- Prosta składnia jednostek.
- Możliwość usunięcia opcjonalnych komponentów.
- Niskie ślady pamięci.
- Ulepszona technika wyrażania zależności.
- Instrukcja inicjalizacji zapisana w pliku konfiguracyjnym, a nie w skrypcie powłoki.
- Skorzystaj z gniazda domeny Unix.
- Planowanie zadań przy użyciu systemowych zegarów kalendarza.
- Rejestrowanie zdarzeń za pomocą Journald.
- Wybór rejestrowania zdarzeń systemowych za pomocą systemd i syslog.
- Logi zapisywane są w pliku binarnym.
- stan systemd można zachować, aby wywołać go później w przyszłości.
- Śledź proces za pomocą cgroup jądra, a nie PID.
- Logowanie użytkowników zarządzane przez systemd-logind.
- Lepsza integracja z Gnome w celu zapewnienia interoperacyjności.
Wąskie gardła systemowe
- Wszystko w jednym miejscu.
- 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.