내 컴퓨터(Arch Linux)에서 systemd-generator는 /run/systemd/generator/
부팅 시 어떻게든 시작되는 것처럼 보이는 일부 유닛 파일을 생성합니다. 무엇이 시작하게 되었나요?
예를 들어 boot.mount
systemd에 의해 생성됩니다. systemctl list-dependencies --all
연결되어 있음 local-fs.target
(생성되지 않음)을 나타냅니다. 그들은 어떻게 연결되어 있나요? 두 장치 모두 start 를 트리거하는 항목이 없는 것 같습니다 boot.mount
. 음, 에는 boot.mount
가 있지만 Before=local-fs.target
서비스가 시작되지는 않죠?
답변1
생성된 단위 파일은 systemd에 의해 자동으로 활성화되지 않습니다. systemd에 관한 한 특별한 것은 없습니다. 각 개별 생성기는 생성된 유닛을 대상에 연결하는 심볼릭 링크를 명시적으로 생성해야 합니다. 따라서 대상을 활성화하면 일반적인 방법으로 종속성을 통해 생성된 유닛이 활성화됩니다.
이는 유닛 간의 모든 연결이 유닛 파일 내에 표현되지 않는다는 사실을 활용합니다. Wants 및 Requires 종속성은 *.wants/
및 하위 디렉터리 *.requires/
의 기호 링크 필드를 통해 표현할 수 있습니다. 이러한 기호 링크 필드에는 하위 디렉터리 /run/systemd/
등이 포함됩니다.
WantedBy=local-fs.target
즉, 심볼릭 링크를 생성하기 위해 명시적으로 호출해야 하는 유닛을 작성하는 대신 sytemctl enable
(enable이 수행하는 작업) 생성기는 프로세스를 단락시키고 심볼릭 링크 자체를 생성합니다. 일반적으로 그렇지 않은 임시 위치에 배치하여 systemctl enable
다음 종료 시 심볼릭 링크가 살아남지 못하게 하고 다음 부팅 시 혼란을 줍니다.
특히 시스템에서 /run/systemd/generator/boot.mount
슬레이브 심볼릭 링크를 찾을 수 있습니다 /run/systemd/generator/local-fs.target.wants/boot.mount
. systemd-fstab-generator
이 심볼릭 링크를 만들었습니다., 이는 boot.mount
Wanted 를 만듭니다 local-fs.target
. 생성기는 시스템이 활성화를 시작하기 전에 부트로더 초기에 실행됩니다 local-fs.target
. 즉, local-fs.target
생성된 종속성을 활성화하기 시작할 때 이를 따라야 합니다.
추가 읽기
- https://unix.stackexchange.com/a/233581/5132
- 조나단 데보인 폴라드(2016). "
systemd.unit
매뉴얼 페이지에 시스템 검색 경로가 없습니다.".systemd doco 정오표. 자주 주어지는 답변입니다.