우선 systemd
, 전통적인 유닉스가 아닙니다 init
. Systemd는 훨씬 더 많으므로 둘을 비교하는 것은 약간 불공평합니다.
질문에 대답하기 위해 필요한 것으로 보이는 것은 일부 바이너리와 다음 구성 파일입니다.
/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
발행 systemctl enable console-getty.service getty@tty2.service
하면 다음과 같은 심볼릭 링크가 생성됩니다.
/etc/systemd/system/default.target.wants/getty@tty2.service-> / lib / systemd / system / getty @ service
/etc/systemd/system/getty.target.wants/console-getty.service-> /lib/systemd/system/console-getty.service
참고 : + 등을 누를 때 필요에 따라 동적으로 systemd
시작 하기 위해 의 특수 기능 을 활용하려면 다음 두 파일도 있어야합니다.agetty
AltF3
/etc/systemd/logind.conf
/lib/systemd/system/autovt@.service
에 autovt@.service
대한 심볼릭 링크는 어디에 있습니까 getty@.service
?
구성 파일의 내용 :
는 default.target
, getty.target
, sysinit.target
파일을 제외하고 비어있을 수 있습니다 [Unit]
태그와 (아마도) Description=xxx
.
basic.target
종속성 정보도 포함합니다.
[단위]
Description = 기본 시스템
요구 사항 = sysinit.target
Wants = sockets.target timers.target paths.target slices.target
After = sysinit.target sockets.target timers.target paths.target slices.target
파일로 존재하지 않는 대상에 대한 참조가 필요한지 확실하지 않습니다. systemd.special(7)
매뉴얼 페이지 에 설명되어 있습니다.
console-getty.service
: (콘솔에서 사용하는 특별한 경우)
[단위]
Description = 콘솔 게티
After = systemd-user-sessions.service plymouth-quit-wait.service
Before = getty.target
[서비스]
ExecStart =-/ sbin / agetty --noclear --keep-baud console 115200,38400,9600 $ TERM
유형 = 유휴
다시 시작 = 항상
RestartSec = 0
UtmpIdentifier = 단점
TTYPath = / dev / console
TTYReset = 예
TTYVHangup = 예
KillMode = 프로세스
무시 SIGPIPE = 아니오
SendSIGHUP = 예
[설치]
WantedBy = getty.target
getty@.service
: (콘솔을 제외한 모든 게티 서비스에 대한 일반 구성)
[단위]
Description = % I에 게티
After = systemd-user-sessions.service plymouth-quit-wait.service
Before = getty.target
IgnoreOnIsolate = 예
ConditionPathExists = / dev / tty0
[서비스]
ExecStart =-/ sbin / agetty --noclear % I $ TERM
유형 = 유휴
다시 시작 = 항상
RestartSec = 0
UtmpIdentifier = % I
TTYPath = / dev / % I
TTYReset = 예
TTYVHangup = 예
TTYVT 할당 해제 = 아니오
KillMode = 프로세스
무시 SIGPIPE = 아니오
SendSIGHUP = 예
[설치]
WantedBy = getty.target
DefaultInstance = tty1
마지막으로 몇 가지 특수 바이너리가 필요할 것입니다 (중요한 것이 무엇인지 시도하지 않았습니다).
/ lib / systemd / systemd (/ sbin / init는 보통 이것을 가리 킵니다)
/ lib / systemd / systemd-logind
/ lib / systemd / systemd-cgroups-agent
/ lib / systemd / systemd-user-sessions
/ lib / systemd / systemd-vconsole-setup
/ lib / systemd / systemd-update-utmp
/ lib / systemd / systemd-sleep
/ lib / systemd / systemd-sysctl
/ lib / systemd / systemd-initctl
/ lib / systemd / systemd-reply-password
/ lib / systemd / systemd-ac-power
/ lib / systemd / systemd-activate
/ lib / systemd / systemd-backlight
/ lib / systemd / systemd-binfmt
/ lib / systemd / systemd-bootchart
/ lib / systemd / systemd-bus-proxyd
/ lib / systemd / systemd-coredump
/ lib / systemd / systemd-cryptsetup
/ lib / systemd / systemd-fsck
/ lib / systemd / systemd-hostnamed
/ lib / systemd / systemd-journald
/ lib / systemd / systemd-journal-gatewayd
/ lib / systemd / systemd-journal-remote
/ lib / systemd / systemd-localed
/ lib / systemd / systemd-machined
/ lib / systemd / systemd-modules-load
/ lib / systemd / systemd-multi-seat-x
/ lib / systemd / systemd-networkd
/ lib / systemd / systemd-networkd-wait-online
/ lib / systemd / systemd-quotacheck
/ lib / systemd / systemd- 랜덤 시드
/ lib / systemd / systemd-readahead
/ lib / systemd / systemd-remount-fs
/ lib / systemd / systemd-resolved
/ lib / systemd / systemd-rfkill
/ lib / systemd / systemd-shutdown
/ lib / systemd / systemd-shutdownd
/ lib / systemd / systemd-socket-proxyd
/ lib / systemd / systemd-timedated
/ lib / systemd / systemd-timesyncd
/ lib / systemd / systemd-udevd
/ lib / systemd / systemd-update-done
시스템 시작 프로세스를 요약하면 다음과 같이 작동합니다.
- systemd는
basic.target
(또는 모든 *.target
파일을 찾습니다 )
- 종속의 기반이 해결
WantedBy=
, Wants=
, Before=
, After=
...에서 지침 [Install]
의 섹션 *.service
및 *.target
구성 파일.
*.service
시작해야하는 ( "특별한"서비스가 아닌) 지시문 이있는 [Service]
섹션이 있으며 ExecStart=
실행 파일이 시작되도록 지정합니다.