Служба “timidity.service” не запускается, если она запускается автоматически при старте системы.

Вопрос или проблема

После создания файла timidity.service и соответствующей символической ссылки для автоматического запуска сервиса при перезагрузке системы я перезагрузил систему и ввел следующую команду:

sudo systemctl status timidity

Вывод:

× timidity.service - TiMidity++ Daemon
     Loaded: загружен (/lib/systemd/system/timidity.service; отключен; предустановленный вариант: включен)
     Active: не работает (Результат: код выхода) с Пн 2024-10-07 16:34:46 CEST; 50 секунд назад
    Process: 635 ExecStart=/usr/bin/timidity -iA Os (код=выход, статус=1/НЕУДАЧА)
   Main PID: 635 (код=выход, статус=1/НЕУДАЧА)
        CPU: 31ms

ott 07 16:34:46 netcom-Vostro-15-3510 systemd[1]: Запуск TiMidity++ Daemon завершен.
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: jack_client_new: устарело
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: Не удается подключиться к серверному сокету, ошибка = Нет такого файла или директории
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: Не удается подключиться к каналу запросов сервера
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: jack-сервер не запущен или не может быть запущен
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: JackShmReadWritePtr::~JackShmReadWritePtr - Инициализация не выполнена для -1, пропускаем освобождение
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: JackShmReadWritePtr::~JackShmReadWritePtr - Инициализация не выполнена для -1, пропускаем освобождение
ott 07 16:34:47 netcom-Vostro-15-3510 timidity[635]: Не удалось открыть выходное устройство
ott 07 16:34:46 netcom-Vostro-15-3510 systemd[1]: timidity.service: Главный процесс завершился, код=выход, статус=1/НЕУДАЧА
ott 07 16:34:46 netcom-Vostro-15-3510 systemd[1]: timidity.service: Завершился с результатом 'код выхода'.

Мое имя пользователя связано с группой audio.

Символическая ссылка:

/usr/lib/systemd/system/multi-user.target.wants/timidity.service

Сервис:

/usr/lib/systemd/system/timidity.service

Содержит:

[Unit]
Description=TiMidity++ Daemon
After=sound.target
Requires=sound.target

[Service]
ExecStart=/usr/bin/timidity -iA Os
Type=simple

[Install]
WantedBy=multi-user.target

Я также пробовал изменить файл “timidity.service” на следующий:

[Unit]
Description=TiMidity++ Daemon
After=pulseaudio.service
Requires=pulseaudio.service

[Service]
ExecStart=/usr/bin/timidity -iA Os
Type=simple

[Install]
WantedBy=multi-user.target

Но после повторной перезагрузки системы ошибка остается прежней.

При попытке вручную запустить сервис из терминала, когда система уже запущена, сервис запускается правильно.

Что я делаю не так?

Ответ или решение

Проблема, с которой вы сталкиваетесь, заключается в том, что сервис timidity.service не может подключиться к серверу JACK при запуске на старте системы. Когда вы запускаете его вручную после загрузки системы, он работает корректно, что указывает на то, что необходимые компоненты уже активированы в этот момент.

Существует несколько шагов для устранения этой проблемы:

Шаг 1: Проверьте зависимости JACK

Сервис timidity требует, чтобы сервер JACK был запущен до его активации. Однако, как видно из ваших логов, JACK не запущен. Ниже приведены рекомендации по устранению этой проблемы:

  1. Убедитесь, что JACK установлен. Используйте следующую команду для проверки:

    jackd -v

    Если JACK не установлен, установите его:

    sudo apt install jackd
  2. Настройте автоматический запуск JACK. Вы можете использовать qjackctl (графический интерфейс управления JACK) или включить автозапуск сервера JACK через systemd.

    Создайте файл сервиса для JACK:

    sudo nano /etc/systemd/system/jack.service

    Добавьте следующий контент:

    [Unit]
    Description=JACK Audio Connection Kit
    After=multi-user.target
    
    [Service]
    ExecStart=/usr/bin/jackd -d dummy
    Type=simple
    
    [Install]
    WantedBy=multi-user.target

    Затем активируйте и запустите его:

    sudo systemctl enable jack.service
    sudo systemctl start jack.service

Шаг 2: Обновление timidity.service

Вернитесь к вашему файлу timidity.service. Убедитесь, что вы указали правильные зависимости и порядок запуска:

[Unit]
Description=TiMidity++ Daemon
After=jack.service
Requires=jack.service

[Service]
ExecStart=/usr/bin/timidity -iA Os
Type=simple

[Install]
WantedBy=multi-user.target

Шаг 3: Активируйте изменения

После внесения изменений в .service файлы выполните команды для перезагрузки даемонов и повторной активации сервиса:

sudo systemctl daemon-reload
sudo systemctl enable timidity.service

Шаг 4: Проверьте статус

Перезагрузите систему и проверьте статус сервиса:

sudo systemctl status timidity.service

Если проблемы сохраняются, вы можете просмотреть логи с помощью команды:

journalctl -u timidity.service

Заключение

Следуя представленным шагам, вы создадите зависимость сервиса TiMidity от JACK, что позволит ему успешно запускаться при старте системы. Обратите внимание, что для корректной работы звук должен быть правильно настроен в системе. Если будут дополнительные проблемы, вы можете рассмотреть другие механизмы управления звуком, такие как PulseAudio, в зависимости от ваших потребностей.

Оцените материал
Добавить комментарий

Капча загружается...