Her şeyden önce, systemd
geleneksel bir unix değildir init
. Systemd çok daha fazla, bu yüzden ikisini karşılaştırmak biraz haksızlık.
Soruyu cevaplamak için gerekli görünen bazı ikili dosyalar ve aşağıdaki yapılandırma dosyalarıdır:
/usr/lib/systemd/system/default.target
/usr/lib/systemd/system/basic.target
/usr/lib/systemd/system/sysinit.target
/usr/lib/systemd/system/getty.target
/usr/lib/systemd/system/getty@.service
/usr/lib/systemd/system/console-getty.service
veren systemctl enable console-getty.service getty@tty2.service
daha sonra bu sembolik oluşturur:
/etc/systemd/system/default.target.wants/getty@tty2.service -> / lib / systemd / system / getty @ hizmeti
/etc/systemd/system/getty.target.wants/console-getty.service -> /lib/systemd/system/console-getty.service
NOT : Dinamik olarak systemd
başlatmak için özel özelliklerini kullanmak için agetty
, Alt+ tuşuna basarken isteğe bağlı F3vb. En azından şu iki dosyaya sahip olmanız gerekir:
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
autovt@.service
için bir sembolik bağlantı nerede getty@.service
.
Yapılandırma dosyalarının içeriği:
default.target
, getty.target
, sysinit.target
Dosyalar haricinde boş olabilir [Unit]
etiketi ve (muhtemelen) Description=xxx
.
basic.target
ayrıca bağımlılık bilgileri içerir:
[Birim]
Açıklama = Temel Sistem
= Sysinit.target gerektirir
İstiyor = sockets.target timers.target paths.target dilimleri.target
Sonra = sysinit.target sockets.target timers.target paths.target dilimleri.target
Dosya olarak var olmayan hedeflere yapılan referansların gerekli olup olmadığından emin değilim. Bunlar systemd.special(7)
kılavuz sayfasında açıklanmıştır .
console-getty.service
: (Konsolda agetty için özel durum)
[Birim]
Açıklama = Konsol Getty
Sonra = systemd-user-sessions.service plymouth-quit-wait.service
= Getty.target önce
[Hizmet]
ExecStart = - / sbin / agetty --noclear --keep-baud konsolu 115200,38400,9600 $ TERM
Tür = boşta
Yeniden her zaman =
RestartSec = 0
UtmpIdentifier = aleyhte
TTYPath = / dev / konsol
TTYReset = yes
TTYVHangup = yes
KillMode = İşlem
IgnoreSIGPIPE = no
SendSIGHUP = yes
[Yüklemek]
WantedBy = getty.target
getty@.service
: (konsol hariç tüm getty hizmetleri için genel yapılandırma)
[Birim]
Açıklama = Getty% I
Sonra = systemd-user-sessions.service plymouth-quit-wait.service
= Getty.target önce
IgnoreOnIsolate = yes
ConditionPathExists = / dev / tty0
[Hizmet]
ExecStart = - / sbin / agetty --noclear% I $ TERM
Tür = boşta
Yeniden her zaman =
RestartSec = 0
UtmpIdentifier =% I
TTYPath = / dev /% I
TTYReset = yes
TTYVHangup = yes
TTYVTDisallocate = hayır
KillMode = İşlem
IgnoreSIGPIPE = no
SendSIGHUP = yes
[Yüklemek]
WantedBy = getty.target
DefaultInstance = tty1
Sonunda muhtemelen bu özel ikili dosyalardan birkaçına ihtiyacınız var (hangilerinin çok önemli olduğunu denemedim):
/ lib / systemd / systemd (/ sbin / init genellikle bunu gösterir)
/ Lib / systemd / systemd-logind
/ Lib / systemd / systemd-cgroups aracısı
/ Lib / systemd / systemd-kullanıcı oturumları
/ Lib / systemd / systemd-vconsole-kurulum
/ Lib / systemd / systemd-update-utmp
/ Lib / systemd / systemd-uyku
/ Lib / systemd / systemd-sysctl
/ Lib / systemd / systemd-initctl
/ Lib / systemd / systemd-cevap-şifre
/ Lib / systemd / systemd-AC gücü
/ Lib / systemd / systemd-aktive
/ Lib / systemd / systemd-arka
/ Lib / systemd / systemd-binfmt
/ Lib / systemd / systemd-bootchart
/ Lib / systemd / systemd-otobüs-proxyd
/ Lib / systemd / systemd-coredump
/ Lib / systemd / systemd-cryptsetup
/ Lib / systemd / systemd-fsck
/ Lib / systemd / systemd-hostnamed
/ Lib / systemd / systemd-journald
/ Lib / systemd / systemd-dergi-gatewayd
/ Lib / systemd / systemd-dergi-uzak
/ Lib / systemd / systemd-localed
/ Lib / systemd / systemd-işlenmiş
/ Lib / systemd / systemd-modülleri yük
/ Lib / systemd / systemd-çoklu sistem-X
/ Lib / systemd / systemd-networkd
/ Lib / systemd / systemd-networkd-bekle-çevrimiçi
/ Lib / systemd / systemd-quotacheck
/ Lib / systemd / systemd rasgele tohum
/ Lib / systemd / systemd-önceden okuma
/ Lib / systemd / systemd-yeniden bağlama-fs
/ Lib / systemd / systemd-çözüldü
/ Lib / systemd / systemd-rfkill
/ Lib / systemd / systemd kapanma
/ Lib / systemd / systemd-shutdownd
/ Lib / systemd / systemd-soket proxyd
/ Lib / systemd / systemd-timedated
/ Lib / systemd / systemd-timesyncd
/ Lib / systemd / systemd-udevd
/ Lib / systemd / systemd güncelleme pişmiş
Systemd başlatma sürecini özetlemek için, bunun böyle bir şey olduğunu düşünüyorum:
- systemd bulur
basic.target
(veya tüm *.target
dosyalar?)
- bağımlılıkları dayalı çözülmedi edilir
WantedBy=
, Wants=
, Before=
, After=
... yönergelerin [Install]
bölümünde *.service
ve *.target
yapılandırma dosyaları.
*.service
başlaması gereken ("özel" hizmetler olmayan) [Service]
bir ExecStart=
yönergeye sahip olan ve çalıştırılacak yürütülebilir dosyayı gösteren bir bölümü vardır .