Как «отследить» службу systemd при запуске?

Я работаю над встроенной системой, использующей урезанную версию Ubuntu 22.04. Недавно мы обновили некоторое оборудование во встроенной системе, и я работаю над тем, чтобы наш образ Ubuntu работал на новом оборудовании.

На старом оборудовании служба PulseAudio всегда работала без каких-либо проблем, но на новом оборудовании возникла проблема: PulseAudio не обнаруживает карту Alsa 0, когда служба запускается во время загрузки. Если я перезапущу службу черезsystemctl --user restart pulseaudio.serviceзатем он обнаруживает карту Alsa 0, и все работает.

Я подозреваю, что Pulseaudio проверяет наличие символьного устройства в/dev/snd/или, возможно, наличие файла/папки в/proc/asound/, но искомое устройство или файл еще не существует и создается позже при загрузке модуля ядра.

Чтобы проверить свои подозрения, я пытаюсь запустить strace в сервисе во время загрузки. Я обновил /usr/lib/systemd/user/pulseaudio.service и изменил строку ExecStart следующим образом:

      ExecStart=strace -e trace=file -o /home/user/trace_erronly_fail.log -Z -f -tt /usr/bin/pulseaudio --daemonize=no --log-target=journal --log-level=debug

После запускаsystemctl --user daemon-reload, я пытаюсь запустить службу, чтобы проверить, будет ли работать трассировка, но служба не запускается. Статус службы сообщает следующее:

      x pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
     Active: failed (Result: core-dump) since Wed 2023-04-19 12:33:21 UTC; 2s ago
TriggeredBy: x pulseaudio.socket
    Process: 1673 ExecStart=strace -e trace=file -o /home/user/trace_erronly_fail.log -Z -f -tt /usr/bin/pulseaudio --daemonize=no --log-target=journal --log-level=debug (code=dumped, signal=SYS)
   Main PID: 1673 (code=dumped, signal=SYS)
        CPU: 49ms

Apr 19 12:33:21 Ubuntu-V8 systemd[780]: pulseaudio.service: Scheduled restart job, restart counter is at 5.
Apr 19 12:33:21 Ubuntu-V8 systemd[780]: Stopped Sound Service.
Apr 19 12:33:21 Ubuntu-V8 systemd[780]: pulseaudio.service: Start request repeated too quickly.
Apr 19 12:33:21 Ubuntu-V8 systemd[780]: pulseaudio.service: Failed with result 'core-dump'.
Apr 19 12:33:21 Ubuntu-V8 systemd[780]: Failed to start Sound Service.

Похоже, он поднимает сигнал SIGSYS, который, согласноman 7 signalвозникает при неправильном системном вызове.

Я не совсем понимаю, почему возникла эта проблема. Я могу запустить команду ExecStart вручную, не вызывая при этом сигнала SIGSYS, поэтому она выполняет это только тогда, когда запускается как служба systemd.

Итак, как я могу заставить strace работать при запуске в качестве службы systemd?

0 ответов

Другие вопросы по тегам