읽기 전용 파일 시스템에서 systemd 서비스 활성화 및 비활성화를 관리하는 방법에 대한 정책을 찾고 있습니다. multi-user.target.wants 디렉터리의 내용이 수정되었기 때문에 이는 불가능합니다.
/etc/systemd/system이 서비스의 기본 위치인 경우 대상에서 실행 중인 응용 프로그램이나 스크립트가 계속 활성화되거나 비활성화될 수 있도록 시작 "테이블" /multi-user.target.wants 디렉터리를 관리하는 방법을 시도한 사람이 있습니까? 파일 시스템이 RO입니까, 아니면 특정 서비스(또는 서비스)를 지정할 수 있습니까?
나는 multi-user.target.wants 디렉터리를 작은 rw "config" 파티션의 위치와 필요에 따라 부팅/재시작 시 미리 설정된 multi-user.target.wants 디렉터리 사이에 심볼릭 링크하는 것을 고려했습니다. 또는 스크립트나 응용 프로그램이 항목을 추가하거나 제거하여 이 심볼릭 링크 위치를 직접 수정할 수 있다고 생각합니다.
아직 테스트하지 않았습니다. 누구든지 이에 대한 경험이 있는지, 가능한 전략이 있는지, 아니면 보다 표준화된 접근 방식을 알고 있는지 알고 싶습니다. 감사해요.
답변1
완전한 답변은 아니지만 댓글에 세부정보가 너무 많습니다.
변경하려면 파일 시스템에 대한 쓰기 액세스 권한이 필요합니다. 지금은 쓰기 권한이 있지만 읽기 전용으로 잠그고 나중에 변경할 수 있기를 원할 것입니다.
systemd
/run
읽기 전용이 아닌 장치 경로는 여러 위치에서 검색됩니다 . 서비스를 매우 일찍 로드하고 다음 로드 경로 중 하나에서 일부 단위를 생성/편집할 수 있는 기회가 있을 수 있습니다.
인용하다:https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Unit%20File%20Load%20Path
길 | 설명하다 |
---|---|
/etc/systemd/system.control | dbus API를 사용하여 지속적 및 임시 구성 만들기 |
/run/systemd/system.control | " |
/run/systemd/일시적 | 임시 장치의 동적 구성 |
/run/systemd/generator.early | 우선순위가 높은 유닛 생성(systemd.generator(7)의 Early-dir 참조) |
/etc/systemd/시스템 | 관리자가 생성한 시스템 장치 |
/실행/시스템/시스템 | 런타임 단위 |
/run/systemd/generators | 중간 우선순위의 생성 장치(systemd.generator(7)의 Normal-dir 참조) |
/usr/local/lib/systemd/시스템 | 관리자가 설치한 시스템 장치 |
/usr/lib/systemd/시스템 | 배포 패키지 관리자가 설치한 시스템 장치 |
/run/systemd/generator.late | 우선순위가 낮은 유닛 생성(systemd.generator(7)의 Late-dir 참조) |
시작 프로세스 초기에 실행되고, 명령 센터의 소켓에 연결하고, 유닛 지침을 가져온 다음 dbus-API를 사용하여 유닛을 생성하는 애플리케이션을 작성할 수 있습니다./run/systemd/system.control
또 다른 옵션은 생성기를 작성하는 것입니다. 바라보다systemd.generator(7)더 알아보기. 생성기는 부팅 프로세스 초기(유닛 파일이 로드되기 전)에 systemd에 의해 실행되는 프로그램입니다. 이러한 생성기는 /run/systemd/generator/
읽기 전용 파일 시스템 외부에 있어야 합니다 .
생성기의 예는 기본 시스템 단위를 systemd-fstab-generator
읽고 생성하는 것 입니다 ./etc/fstab
*.mount