Jak już zauważyli inni, teoretycznie nie powinno to wpływać na nietechnicznego użytkownika końcowego - i teoretycznie nie ma różnicy między teorią a praktyką, ale w praktyce jest.
Wyjaśnienie
Myślę, że kilka opublikowanych tutaj rzeczy wymaga wyjaśnienia:
To system inicjujący, a nie coś, z czym użytkownicy tradycyjnie wchodzą w interakcje.
Tak było w przypadku SysV init i Upstart, ale już tak nie jest w przypadku systemd. Robi wiele rzeczy, z którymi użytkownicy tradycyjnie wchodzą w interakcje:
Powinien całkowicie zastąpić funkcjonalność zapewnianą przez Upstart - i zrobić kilka dodatkowych rzeczy
Dwie rzeczy do wyjaśnienia - po pierwsze o całkowitym zastąpieniu Upstart:
Brak skryptów inicjujących SysV
Jednym z problemów, które ludzie mają z systemd, jest to, że nie uruchamia on skryptów inicjujących SysV. Jest więc jeden przykład, że nie zastępuje całkowicie funkcjonalności zapewnianej przez Upstart.
Jest to coś, na czym moglibyśmy polegać przez ponad 30 lat i tradycyjnie pisałeś skrypty inicjujące SysV dla maksymalnej przenośności bez powtarzania się (pisząc wiele wersji tych samych skryptów), co nie jest już prawdą.
Nie powinno to stanowić problemu przy korzystaniu wyłącznie z pakietów z oficjalnych repozytoriów, ponieważ przypuszczalnie wszystkie pakiety, które miały kiedyś skrypty init SysV lub Upstart, musiałyby zostać przepisane, zanim zostaną spakowane.
Będzie to problem tylko dla osób, które korzystają z oprogramowania firm trzecich lub niestandardowych, które mają swoje skrypty init napisane dla SysV init lub Upstart, a one będą musiały przepisać skrypty init przed aktualizacją do systemu za pomocą systemd (lub uzyskać zainstalowany upstart, który jest również opcją , lub migruj do systemu, który nie używa systemd).
Istnieje systemd-sysv-generator, który ma automatycznie tłumaczyć skrypty inicjujące SysV na skrypty systemowe, ale jest kilka błędów i długa lista wyraźnych niezgodności .
Teraz drugie wyjaśnienie - o tych kilku dodatkowych rzeczach:
Kilka dodatkowych rzeczy
Te „kilka dodatkowych rzeczy”, które systemd zamierza omówić - według Perspektywy dla systemd - Co zostało osiągnięte i Co dalej przed prezentacją Lennarta Poetteringa w 2014 roku na GNOME.asia - są następujące:
- system init
- rejestrowanie dziennika
- zarządzanie loginami
- zarządzanie urządzeniami
- zarządzanie plikami tymczasowymi i lotnymi
- rejestracja w formacie binarnym
- zapisz / przywróć podświetlenie
- rfkill zapisz / przywróć
- program rozruchowy
- readahead
- konfiguracja szyfrowanej pamięci
- Wykrywanie partycji EFI / GPT
- rejestracja maszyny wirtualnej / kontenera
- zarządzanie kontenerami
- zarządzanie nazwą hosta
- zarządzanie lokalizacjami
- zarządzanie czasem
- losowe zarządzanie nasionami
- zarządzanie zmiennymi sysctl
- zarządzanie konsolą
- introspekcja
- automatyczne wykrywanie
- podłącz i graj
- zarządzanie siecią
- systemd-networkd
- Pamięć podręczna DNS
- odpowiadający mDNS
- Odpowiadający LLMNR
- Weryfikacja DNSSEC
- IPC w jądrze
- kdbus
- sd-bus
- synchronizacja czasu z NTP
- systemd-timesyncd
- integracja z pojemnikami
- piaskownica usług
- piaskownica aplikacji
- Format obrazu systemu operacyjnego
- Format obrazu kontenera
- Format obrazu aplikacji
- GPT z automatycznym wykrywaniem
- Systemy bezstanowe
- systemy chwilowe
- przywrócenie ustawień fabrycznych
- inicjalizacja i aktualizacje węzłów
- integracja z chmurą
- zarządzanie usługami między węzłami
- weryfikowalne obrazy systemu operacyjnego aż do oprogramowania wewnętrznego
- Ładowanie rozruchu
- Budowanie internetowego systemu operacyjnego nowej generacji Ujednolicanie bezcelowych różnic między dystrybucjami
Wracając do: „To system inicjujący, a nie coś, z czym użytkownicy tradycyjnie wchodzą w interakcje”. - należy zauważyć, że system inicjujący jest tylko jedną pozycją na tej liście.
I na koniec ostatnia rzecz, którą chciałbym skomentować:
[T] tylko raz użytkownik nietechniczny zobaczy, że dzieje się tak, gdy coś pójdzie nie tak.
Co za ulga. :)
Zmiany
Najważniejsze zmiany dla użytkowników końcowych (innych niż same skrypty) to uruchamianie i zatrzymywanie usług oraz używanie poleceń takich jak:
które nie działają już zgodnie z oczekiwaniami. Na przykład nohup
jest poleceniem POSIX, aby upewnić się, że proces będzie kontynuowany po wylogowaniu z sesji. To już nie działa na systemd. Również programy takie jak screen
i tmux
muszą być wywoływane w specjalny sposób, w przeciwnym razie procesy, które uruchamiasz za ich pomocą, zostaną zabite (chociaż nie zabicie tych procesów jest zwykle głównym powodem uruchomienia screena lub tmuxa).
To nie jest błąd, to wybór projektowy, więc prawdopodobnie nie zostanie naprawiony w przyszłości. Oto, co Lennart Poettering powiedział na ten temat:
Moim zdaniem, w rzeczywistości UNIX był dość dziwny, że domyślnie pozwalał na swobodny dostęp dowolnego kodu użytkownika po wylogowaniu. Od wieków jest dyskutowane przez wiele osób z OS, że powinno to być możliwe, ale z pewnością nie powinno być domyślnym, ale nikt nie odważył się dotąd przesunąć przełącznika, aby zmienić go z domyślnego na opcję. Brak czyszczenia sesji użytkownika po wylogowaniu jest nie tylko brzydki i nieco hackerski, ale także stanowi problem bezpieczeństwa. systemd 230 teraz w końcu przestawił przełącznik i wreszcie domyślnie czyści wszystko poprawnie po wylogowaniu użytkownika.
Aby uzyskać więcej informacji zobacz:
Bieganie screen
- dorobkiewicz:
screen
- systemd:
systemd-run --user --scope screen
(Uwaga: zachowanie „upstart” powyżej jest naprawdę wszystkim oprócz systemd, nie jest to specyficzne dla upstart)
Rozpoczęcie pracy foo:
- dorobkiewicz:
start foo
- systemd:
systemctl start foo
Zatrzymywanie pracy foo:
- dorobkiewicz:
stop foo
- systemd:
systemctl stop foo
Ponowne uruchamianie zadania foo:
- dorobkiewicz:
restart foo
- systemd:
systemctl restart foo
Wyświetlanie ofert pracy według ich statusu:
- dorobkiewicz:
initctl list
- systemd:
systemctl status
(Zobacz moją odpowiedź na Jakie są zalety / wady Upstart i systemd ?, aby uzyskać więcej informacji, które są poza zakresem tego pytania.)
Kłody
Istnieje również duża różnica w obsłudze dzienników, ponieważ w przeciwieństwie do tradycji uniksowej dzienniki systemd są przechowywane w plikach binarnych w niestandardowym formacie, więc zamiast:
cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log
musisz użyć specjalnych poleceń, aby uzyskać dostęp do dzienników:
sudo journalctl -u foo
sudo journalctl -u foo -f
Kontrowersje
Wprowadzenie systemud najpierw do Debiana, a później do Ubuntu nie obyło się bez kontrowersji i ogromnego sprzeciwu, jak wiadomo każdemu, kto napisał jeden z następujących artykułów:
Oficjalne stanowisko Debian na Systemd i otrzymaną kontrowersje doprowadziły do deklaracji Exodus w 2014 roku i zakończył się rezygnacji Iana Jacksona .
Powstały inicjatywy Init Freedom , Without-Systemd.org i Systemd-Free.org , z dużą ilością dyskusji w Hacker News .
Dalsza lektura