openrc 시스템에서 특정 dbus 시스템 서비스를 비활성화하는 방법

openrc 시스템에서 특정 dbus 시스템 서비스를 비활성화하는 방법

dbus를 재정의하는 것이 가능하다는 것을 알고 있습니다.회의서비스~/.local/share/dbus-1/services

그러나 이것은 확실히 작동하지 않을 것입니다체계제공하다.

openrc에서, 그래서 systemd의 systemctl 명령을 얻지 못합니다.

빠르고 더러운(다음 업데이트 시 서비스가 복원되므로) 접근 방식은 관련 서비스 파일의 이름을 바꾸는 것입니다. /usr/share/dbus-1/system-services이것이 계속할 수 있는 유일한 방법입니까?

답변1

방금 같은 문제가 발생했고 dbus 코드를 조사한 후 해결책이 있다고 생각합니다.

/usr/local/share/dbus-1/system-services에 있는 파일을 에 있는 파일을 덮어씁니다 /usr/share/dbus-1/system-services. 따라서 서비스가 자동으로 시작되지 않도록 빈 파일을 만들 수 있습니다. 예를 들어, dbus가 login1을 자동으로 시작하지 않도록 하려면 다음을 수행하십시오.

mkdir -p /usr/local/share/dbus-1/system-services
touch /usr/local/share/dbus-1/system-services/org.freedesktop.login1.service

또한 이를 통해 사용자 서비스를 전역적으로 비활성화할 수 있습니다 /usr/local/share/dbus-1/services.

자체적으로 서비스를 시작하는 것을 방지하는 또 다른 효과적인 방법은 를 사용하는 것입니다 -Dtraditional_activation=false.

답변2

D-Bus 서비스 SystemdService=에 Systemd 장치 파일을 가리키는 줄이 있습니까 SystemdService=systemd_unit_name.service?

/etc/systemd/system/systemd_unit_name.service그렇다면 에서 까지의 심볼릭 링크를 추가할 수 있습니다 /dev/null. 이것이 systemctl mask systemd_unit_name.service작동하는 방식입니다.

그러면 연결된 Systemd 서비스가 차단되므로 D-Bus 서비스를 활성화하려는 모든 시도가 실패합니다. 그러나 서비스가 차단되었으므로 로그에 활성화 실패에 대한 성가신 로그가 표시될 수 있습니다.

줄이 없으면 from to (테스트되지 않음)에 SystemdService=심볼릭 링크를 추가해 볼 수 있습니다. Systemd 유닛 파일 이름이라는 D-Bus 유닛 파일에 별칭 매핑이 없으면 D-Bus 활성화는 D-Bus 유닛 파일과 동일한 이름을 가진 Systemd 유닛 파일만 찾습니다./etc/systemd/system/dbus_unit_name.service/dev/nulldbus_unit_name.servicesystemd_unit_name.servicedbus_unit_name.service

나는 D-Bus 시스템 서비스를 무시할 수도 있다고 믿습니다 /etc/dbus-1/system-services/(다시 말하지만, 테스트되지 않았습니다).

관련 정보