Dla SysV init
, muszę /etc/inittab
respawning wpisy getty Z /sbin/init
binarnej pliki binarne i biblioteki współdzielone dla powłoki, login
The getty
, PAM / security / cień rzeczy, a kilka plików urządzeń.
Bo upstart
potrzebuję prawie takich samych wymagań, ale zamiast tego /etc/inittab
mam kilka *.conf
plików poniżej /etc/init
: jeden * .conf, start on startup
który ustawia poziom uruchamiania telinit
, i jeden * .conf dla każdego tty, który uruchamia się / odradza getty
na tym tty na odpowiednich poziomach pracy .
Jakiej konfiguracji i plików binarnych potrzebuję systemd
init
?
Wydaje mi się, że dokumentacja skupia się na tym, jak używać już zainstalowanego systemu do uruchamiania i zatrzymywania usług.
Minimalna lista plików do skopiowania (z wyjątkiem jądra / initrd) z działającej instalacji Arch lub Fedory byłaby w porządku, ale nie mogę znaleźć takich informacji na ten temat systemd
.
Co chciałbym wiedzieć, na systemd
co potrzebne są pliki i jakie muszą one zawierać, aby uruchomić powłokę logowania po initramfs nie jest to switch_root
wezwanie do systemd
/sbin/init
.
Przykład dla upstart
plików binarnych i dwóch *.conf
plików:
Plik /etc/init/whatever.conf
:
zacznij przy starcie emituje poziom pracy zadanie scenariusz telinit 2 koniec skryptu
Plik /etc/init/tty1.conf
:
uruchom na poziomie pracy [12345] odrodzenie exec / sbin / agetty -8 --noclear 38400 tty1 linux
Przykład dla sysvinit
plików binarnych i 1 pliku conf o nazwie /etc/inittab
:
id: 2: initdefault: c1: 12345: respawn: / sbin / agetty 38400 tty1 linux
Teraz szukam systemd
ekwiwalentu.
Zakładam, że *.service
gdzieś potrzebny jest co najmniej 1 plik z [Service]
wpisem zawierającym ExecStart=-/sbin/agetty --noclear %I linux
i Restart=always
, ale co jeszcze jest potrzebne?
Odpowiedzi:
Po pierwsze,
systemd
nie jest to tradycyjny unixinit
. Systemd to o wiele więcej, więc porównywanie tych dwóch jest trochę niesprawiedliwe.Aby odpowiedzieć na pytanie, niezbędne wydają się niektóre pliki binarne i następujące pliki konfiguracyjne:
wydanie
systemctl enable console-getty.service [email protected]
następnie tworzy następujące dowiązania symboliczne:UWAGA : Aby skorzystać
systemd
ze specjalnych funkcji doagetty
dynamicznego uruchamiania , na żądanie po naciśnięciu Alt+ F3i tak dalej, wydaje się, że musisz mieć co najmniej te dwa pliki:gdzie
[email protected]
jest dowiązanie symboliczne do[email protected]
.Zawartość plików konfiguracyjnych:
default.target
,getty.target
,sysinit.target
Pliki mogą być pusta z wyjątkiem[Unit]
zmiennej i (prawdopodobnie)Description=xxx
.basic.target
zawiera również informacje o zależnościach:Nie jestem pewien, czy potrzebne są odniesienia do celów, które nie istnieją jako pliki, czy nie. Są one opisane na stronie
systemd.special(7)
man.console-getty.service
: (Specjalny przypadek agetty na konsoli)[email protected]
: (ogólna konfiguracja dla wszystkich usług Getty oprócz konsoli)Wreszcie prawdopodobnie potrzebujesz kilku z tych specjalnych plików binarnych (nie próbowałem tych, które są kluczowe):
Podsumowując systemowy proces uruchamiania, myślę, że działa on mniej więcej tak:
basic.target
(lub wszystkie*.target
pliki?)WantedBy=
,Wants=
,Before=
,After=
... dyrektyw w[Install]
sekcji*.service
i*.target
konfiguracji plików.*.service
s, które powinny się uruchomić (które nie są „specjalnymi” usługami), mają[Service]
sekcję zExecStart=
dyrektywą, która wskazuje plik wykonywalny do uruchomienia.źródło
[Install]
sekcja nie jest używana przez sekwencję rozruchową, tylko przezsystemctl enable
. Boot patrzy na dowiązania symboliczne/etc/systemd/system/basic.target.wants/
, które są tworzone przezsystemctl enable
.systemd
automatycznie tworzy getty po przejściu do terminali, do pewnej maksymalnej liczby. Domyślnie jest to 6 (więc dostajesz automatycznie getty za alt + f1 do alt + f6). Jeśli chcesz zmienić ten parametr, możesz edytować,/etc/systemd/logind.conf
aby zmienićNAutoVTs
parametr na inną liczbę (maks. 12)Jeśli chcesz getty na tarło nawet jeśli nie ręcznie przełączyć można dodać do dowiązania
/usr/lib/systemd/system/[email protected]
do/etc/systemd/system/getty.target.wants/
katalogu:spowoduje to
getty.target
wymaganie jeszcze jednejgetty@
usługi. Obiekt docelowy to zbiór usług, które muszą zostać odrodzone, zastąpienie poziomów uruchomieniowych, które obsługuje zależności. Domyślny cel zależy odgetty.target
Zobacz na systemd FAQ w ArchWiki
edycja: Trochę więcej zbadałem w dokumentacji .
Podczas uruchamiania
systemd
demon ładuje wszystkie systemy wdefault
celu i ich zależności. Pliki docelowe określają celCel ma listę dołączonych usług określonych przez dowiązania symboliczne w katalogach
/etc
Wersja zastępuje domyślne dystrybucyjne w/usr/lib
..target
Wymagany jest tylko jeden plik, a żaden katalog nie jest wymaganygetty
jest tylko jedną z usług, które mogą być uruchamiane przez skrypty init. W dystrybucji, którą sprawdziłem (fedora, arch)getty
jest uruchamiany na dwa różne sposoby:/usr/lib/systemd/system/[email protected]
pliku, w którym nazwa tty jest podstawiona przezsystemd
z nazwy pliku linku )logind
gdy użytkownik przełącza się na terminal wirtualny (podobnie jak stareinetd
przywołane usługi tylko po otrzymaniu żądania).logind
jest innym demonem rozpowszechnianym zsystemd
i odczytuje jego konfigurację z/etc/systemd/logind.conf
pliku.Mam nadzieję, że to jest satysfakcjonujące.
źródło
systemd
.systemd
jest to wrogie, tak jak w przypadku wrogiego przejęcia sposobu uruchamiania systemu otwartego. Odwraca GNU / Linuksa od Uniksa. Nie mówię, że to zła rzecz, ale bardzo różni się od tego, jak tradycyjnie było. A przeglądanie go trochę wskazuje, że nie jestem sam.