Сохранить экран загрузки Plymouth видимым во время инициализации приложения.

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

На моем Raspberry я включил экран загрузки plymouth и у меня есть пользовательская служба systemd, которая запускает приложение при загрузке.

Моя проблема в том, что инициализация приложения занимает некоторое время, и в настоящее время экран загрузки plymouth исчезает задолго до того, как приложение будет готово, что приводит к долгому черному экрану.

Какой был бы правильный способ сохранить экран загрузки plymouth видимым во время инициализации приложения?

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

Для решения проблемы с исчезновением экрана загрузки Plymouth на Raspberry Pi, когда ваша система запускает пользовательское приложение через службу systemd, необходимо предпринять несколько шагов. Ваша цель — удерживать экран загрузки видимым до полной инициализации приложения, чтобы избежать долгого черного экрана. Ниже приведены рекомендации по решению этой задачи:

  1. Изучение работы Plymouth и systemd:
    Plymouth отвечает за отображение загрузочного экрана и интегрируется с systemd. Задача заключается в том, чтобы заставить Plymouth оставаться активным до тех пор, пока ваше приложение, загружаемое через systemd, не завершит свою инициализацию.

  2. Использование Plymouth-quit-wait.service:
    В стандартных конфигурациях systemd служба plymouth-quit-wait.service ожидает завершения всех задач перед закрытием экрана загрузки. Вам необходимо убедиться, что служба, которая запускает ваше приложение, корректно взаимодействует с этой службой. Для этого выполните следующие шаги:

    • Найдите файл вашего пользовательского сервиса, например /etc/systemd/system/my-custom-app.service.
    • Добавьте After=plymouth-quit-wait.service и Before=plymouth-quit.service в секцию [Unit] вашего файла сервиса. Это гарантирует, что ваш сервис будет завершён до завершения Plymouth.

    Пример:

    [Unit]
    Description=Мой пользовательский сервис
    After=network.target plymouth-quit-wait.service
    Before=plymouth-quit.service
    
    [Service]
    ExecStart=/usr/bin/ваше-приложение
    ...
    
    [Install]
    WantedBy=multi-user.target
  3. Обновление exec команды и состояния:
    Добавьте команду для взаимодействия с Plymouth в секцию [Service], переходя в активное состояние, когда приложение полностью инициализировано:

    ExecStartPre=/bin/plymouth --wait
  4. Отладка и проверка:
    После внесения изменений, перезагрузите systemd для применения настроек и перезагрузите Raspberry Pi:

    sudo systemctl daemon-reload
    sudo reboot
  5. Мониторинг запуска:
    Убедитесь, что система правильно управляет Plymouth в течение загрузки, проверяя журналы:

    journalctl -u plymouth-quit-wait.service

Таким образом, настройка синхронизации работы Plymouth с вашим приложение позволит удержать экран загрузки на протяжении всего процесса инициализации, улучшая общее впечатление пользователя. Подробно проработав данную рекомендацию, вы обеспечите более плавный и профессиональный опыт запуска вашего устройства.

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

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