Systemd Initrd 서비스 및 지속성

Systemd Initrd 서비스 및 지속성

시스템 initrd 이미지에서 간단한 데몬 프로세스를 실행해야 합니다. system.initrd 문서에 따르면 systemd가 initrd에서 직접 실행되면 기본 프로세스가 char이 switch-root아닌 이상 실행 중인 모든 프로세스가 종료됩니다 . 내가 찾은 유일한 변경 방법 은 응용 프로그램 소스 코드에 올바른 설명을 추가하는 것입니다. 그러나 불행하게도 이것은 독점 소프트웨어이므로 해당 소스 코드에 액세스할 수 없습니다. 또한 쉘 명령이 매개변수를 변경하여 다른 이름으로 프로세스를 실행할 수 있다는 것을 알았습니다 . 그래서 새 프로세스를 배포하는 systemd용 간단한 서비스 파일을 작성했는데 작동하여 서비스 프로세스가 올바른 이름으로 실행되고 있음을 보여줍니다( ) 달리다. 앞서 언급했듯이 문자로 시작하는 프로세스는 에서 종료되어서는 안 됩니다 .argv[0][0]@argv[0]execargv[0]execps aux@bin/process-name ...argv[0]@switch-root

내 시스템 레시피:

[Unit]
Description=Simple service

[Service]
ExecStart=/bin/bash -c 'exec -a "@bin/process-name" /bin/application'

switch-root이전에는 initrd 단계에서 서비스를 수동으로 활성화하여 서비스가 작동 중인지 확인했지만 다른 실행 중인 프로세스처럼 서비스가 종료되었습니다. 일반 응용 프로그램으로 실행해 보았으나 작동하지 않았습니다. 나는 심지어 그것을 변경한 내 자신의 앱을 작성했고 argv[0][0]그것은 @그것이 죽기 전처럼 작동했습니다 switch-root. 그렇다면 initrd에서 영구 서비스를 어떻게 실행합니까? systemd는 switch-root종료되어서는 안되는 특별한 프로세스조차도 남기지 않고 모든 프로세스를 종료하는 것처럼 보입니다 .

Initrd: Dracut
OS: Debian Jessie
Systemd version: 208-8

원천:http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/

관련 정보