Вопрос или проблема
На моем Raspberry я включил экран загрузки plymouth и у меня есть пользовательская служба systemd, которая запускает приложение при загрузке.
Моя проблема в том, что инициализация приложения занимает некоторое время, и в настоящее время экран загрузки plymouth исчезает задолго до того, как приложение будет готово, что приводит к долгому черному экрану.
Какой был бы правильный способ сохранить экран загрузки plymouth видимым во время инициализации приложения?
Ответ или решение
Для решения проблемы с исчезновением экрана загрузки Plymouth на Raspberry Pi, когда ваша система запускает пользовательское приложение через службу systemd, необходимо предпринять несколько шагов. Ваша цель — удерживать экран загрузки видимым до полной инициализации приложения, чтобы избежать долгого черного экрана. Ниже приведены рекомендации по решению этой задачи:
-
Изучение работы Plymouth и systemd:
Plymouth отвечает за отображение загрузочного экрана и интегрируется с systemd. Задача заключается в том, чтобы заставить Plymouth оставаться активным до тех пор, пока ваше приложение, загружаемое через systemd, не завершит свою инициализацию. -
Использование 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
- Найдите файл вашего пользовательского сервиса, например
-
Обновление exec команды и состояния:
Добавьте команду для взаимодействия с Plymouth в секцию[Service]
, переходя в активное состояние, когда приложение полностью инициализировано:ExecStartPre=/bin/plymouth --wait
-
Отладка и проверка:
После внесения изменений, перезагрузите systemd для применения настроек и перезагрузите Raspberry Pi:sudo systemctl daemon-reload sudo reboot
-
Мониторинг запуска:
Убедитесь, что система правильно управляет Plymouth в течение загрузки, проверяя журналы:journalctl -u plymouth-quit-wait.service
Таким образом, настройка синхронизации работы Plymouth с вашим приложение позволит удержать экран загрузки на протяжении всего процесса инициализации, улучшая общее впечатление пользователя. Подробно проработав данную рекомендацию, вы обеспечите более плавный и профессиональный опыт запуска вашего устройства.