SystemD - Jak to uruchamia system

SystemD - Jak to uruchamia system
SystemD został opracowany, gdy programiści stwierdzili, że uruchomienie systemu równolegle nie było możliwe. Starsze systemy przechodzą przez ich pliki uruchamiania systemu jeden po drugim. Może to spowodować, że rozruch zatrzymał się podczas oczekiwania na powolne zasoby. Jednym z przykładów jest to, że proces musi uruchomić sieć. Korzystanie z sieci jest bardzo powolne, inne zasoby nie powinny czekać. Problem ten można złagodzić na inne sposoby, ale w przypadku SystemD cały uruchomienie jest wykonane równolegle w miarę możliwości. Rezultatem powinien być znacznie szybszy uruchomienie dla złożonych systemów, który obejmuje system komputerów stacjonarnych.

Systemd: ojciec wszystkich innych procesów

Linux i każdy inny *Nix, system zawsze rozpoczyna proces, który jest ojcem wszystkich innych procesów. Podczas korzystania z SystemD proces ten jest systemd, proces jest zawsze nazywany „init”, niezależnie od systemu init. Po uruchomieniu SystemD uruchomi demony uruchamiające podsystemy. Demony kontrolują, jakie masz zasoby i jakie systemy są otwarte. Twój monit logowania to usługa zarządzana przez SystemD. SystemD uruchamia wiele innych usług, a także zamontuje wszystkie Twoje dyski, w tym mocowania snap.

Jak kontrolujesz to, co zaczyna się?

Po pierwsze, najwcześniejszy system init miał poziomy, które wielu czytelników rozpoznaje. RunLevel 1 był trybem pojedynczego użytkownika, 2 tryb wielu użytkowników bez sieci oraz 3-5 wielu użytkowników i graficznych. Ustawienie runLevel na 0 oznaczało zatrzymanie, a 6 oznaczało ponowne uruchomienie. Twórcy SystemD stwierdzili, że poziomy te są niejasne, więc zmieniono to, aby nazywać się celami. Cele nie są dokładnie takie same, ale mają podobną funkcję. Kiedy działa określony cel, działa określony zbiór jednostek. Więcej o jednostkach później.

Ustawienie „RunLevel”, zwanego celu.

Możesz zmienić cel podczas uruchamiania, na przykład możesz użyć terminala, aby ustawić cel na wiele użytkowników. To zatrzymałoby twoje GUI, X lub Wayland, ale pozwoliłoby tobie i innym, zaloguj się z konsolą tekstową. Użyj następującego polecenia.

$ Systemctl izolat multiuser.cel

Lub, jeśli chcesz założyć pulpit, zamiast tego użyj następującego polecenia.

$ Systemctl izolat graficzny.cel

To, co naprawdę Cię interesuje, to sposób rozpoczęcia właściwego poziomu, możesz dowiedzieć się, co masz teraz w ten sposób.

$ Systemctl Get-Default

Aby zmienić domyślne, ustaw go.

$ Systemctl set-default graficzny.cel

To polecenie faktycznie sprawia, że ​​wiele jednostek i usług zaczyna się podczas uruchamiania komputera. Możesz jednak rozpocząć lub zatrzymać jedną usługę.

Rozpoczęcie, zatrzymanie, włączanie i wyłączanie usługi.

Tutaj masz szansę zmienić to, co dzieje się podczas rozruchu i podczas normalnej operacji. W przeciwieństwie do celów, jednostki są specjalne dla określonej usługi. Aby zatrzymać usługę, używasz „SystemCtl Stop”, równie możesz użyć „Start” i „Restart”. Aby usługa uruchomiła się w rozruchu, używasz „enable”, aby ją zatrzymać „wyłączyć”. Wybierz usługę i rozpocznij i zatrzymaj ją podczas jej uruchomienia.

$ SystemCtl Pucharki.praca

To polecenie pokazuje status usługi, pokazuje także listę działań podjętych przez system dotyczącą usługi. Aby zatrzymać usługę, użyj poniższego polecenia.

$ Systemctl Stop Cups.praca

Usługa jest teraz zatrzymana na bieżącą sesję. Aby to zmienić na nie rozpoczynając się od następnego rozruchu Użyj wyłącz.

$ Systemctl wyłącz kubki.praca

Zauważ, że można wyłączyć usługę, nie miałoby to żadnego wpływu na twoją obecną sytuację. Usługa po prostu działa. Przy następnym rozruchu nie uruchomi usługi.

SystemD kontroluje również mocowania, urządzenia, gniazda i inne. Jednostki są niższe i łatwiejsze do zrozumienia, jeśli wcześniej radziłeś sobie z Linux. Możesz także ustawić je samodzielnie, ale największym wpływem na uruchamianie jest kontrolowanie usług.

Jak dodać własne skrypty?

Możesz dość łatwo dodać własne skrypty, szczegóły, które są interesujące, to sposób, w jaki sposób tworzysz skrypt lub usługę, aby polegać na innych. Jest to starannie wykazane w tym pliku serwisowym Wi-Fi-Resume.

[Jednostka]
Opis = Uruchom ponownie NetworkManager w CV
Po = zawiesić.cel
Po = hibernacja.cel
Po = hybrydowy such.cel
[Praca]
Typ = OneShot
ExecStart =/bin/systemctl restart sieć-manager.praca
[Zainstalować]
Wantby = zawiesić.cel
Wantby = hibernacja.cel
Wantby = Hybrid-Sleep.cel

Ten kod tworzy usługę, która zdarza się raz (OneShot) po trzech celach wymienionych w kodzie. Wykonany kod jest w tym przypadku pojedynczym polecenie. Możesz równie dobrze poinformować exectart do scenariusza wyboru.

Wniosek

Zmiana systemu, zwłaszcza jak się budzi, możesz zrobić sam, ale uważaj, że ma to wiele konsekwencji dla każdej usługi, więc upewnij się, że Twój kod jest stabilny i szybki do wykonania.