systemd-module-load.service
Linux에서 기본적으로 systemd 서비스가 시작되는 방식을 이해하려고 합니다 . main()
( systemd 에서) 루틴을 살펴봤지만 src/core/main.c
systemd 장치/서비스에 대한 직접적인 참조를 찾을 수 없습니다.
답변1
systemd-modules-load.service
종속성으로 지정됩니다 sysinit.target
. 다음과 같은 종속성을 검색/확인할 수 있습니다.
$ systemctl list-dependencies --reverse systemd-modules-load.service
systemd-modules-load.service
● └─sysinit.target
● ├─abrt-ccpp.service
...
sysinit.target
출력은 많은 수의 종속 단위를 알파벳순으로 나열하므로 반드시 편리한 것은 아닙니다. 적어도 이것은 그것이 sysinit.target
매우 중요하다는 것을 보여줍니다 :). systemd의 어느 부분이 시작되었는지 물어볼 수 있습니다 sysinit.target
. 이 참조가 귀하의 질문에 답할 것이라고 생각합니다.
systemd가 시스템을 시작하면 모든 종속 장치를 활성화합니다
default.target
(그리고 해당 종속성에 대한 모든 종속성을 재귀적으로 활성화합니다). 일반적으로 이는default.target
시스템이 그래픽 사용자 인터페이스로 구성되었는지 아니면 텍스트 콘솔로만 구성되었는지에 따라 graphic.target 또는 multiuser.target의 별칭일 뿐입니다. 도입된 유닛 간의 최소 순서를 시행하기 위해 위에 나열된 것처럼 잘 알려진 여러 대상 유닛을 사용할 수 있습니다.systemd.special(7).
sysinit.target
- 이 문장 뒤에는 의 간접 의존성을 설명하는 다이어그램이 따라오고 multi-user.target
따라서 의 간접 의존성을 보여줍니다 graphical.target
.
참조: man bootup
또는https://www.freedesktop.org/software/systemd/man/bootup.html
main() 루틴(systemd의 src/core/main.c)을 살펴봤지만 systemd 장치/서비스에 대한 직접적인 참조를 찾을 수 없습니다.
특정 단위에 대한 참조가 포함되어 있습니다 src/core/
. 그들은 SPECIAL_
의 정의를 통해 간접적으로 진행됩니다 src/basic/special.h
. 여기에는 다음이 포함됩니다.
#define SPECIAL_DEFAULT_TARGET "default.target"
답변2
당신이 정확히 무엇을 찾고 있는지 명확하지 않습니다.
이 바이너리는 실제로 커널을 로드하는 프로그램에 의해 실행 /lib/systemd/systemd-modules-load
됩니다 .systemd-modules-load.service