systemd의 어느 부분이 모듈 로딩 서비스를 시작합니까?

systemd의 어느 부분이 모듈 로딩 서비스를 시작합니까?

systemd-module-load.serviceLinux에서 기본적으로 systemd 서비스가 시작되는 방식을 이해하려고 합니다 . main()( systemd 에서) 루틴을 살펴봤지만 src/core/main.csystemd 장치/서비스에 대한 직접적인 참조를 찾을 수 없습니다.

답변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

관련 정보