psplash-write не работает, когда psplash запускается из сценария инициализации (PID = 1)

Я интегрировал psplash в специальный слой Yocto для NVIDIA Jetson Nano. Я хочу запустить psplash из самого первого скрипта инициализации (PID = 1). Причина в том, чтобы покрыть время, затрачиваемое systemd на загрузку файлов модулей и служебных файлов. Я добавил init=/bin/newinit.sh в параметры ядра Linux. Вот содержание /bin/newinit.sh, заменяющего мой /sbin/init.

#!/bin/sh
/usr/bin/psplash &
/bin/psplashanimator.sh &
exec /sbin/init

Вот содержание /bin/psplashanimator.sh

#!/bin/sh
/bin/sleep 0.1 && /usr/bin/psplash-write "PROGRESS 50"

Я убедился, что psplash-write не вызывается никаким другим процессом, отключив демоны systemd (psplash-start, psplash-systemd). Тем не менее, я не могу обновить индикатор выполнения с помощью этих скриптов. Psplash отображается красиво, но ничего не отображается на индикаторе выполнения. Если я переставлю /bin/sleep 0.1 && /usr/bin/psplash-write "PROGRESS 50" в /bin/newinit.sh до exec, он будет работать нормально; но он блокирует основное выполнение сценария инициализации.

В общем, если я запустил psplash в специальном сценарии инициализации, psplash-write будет работать только до вызова exec. Я не могу понять, почему это так и как это исправить.

Если есть простое решение или объяснение того, почему это не сработает, я буду признателен за ваше руководство.

ПРИМЕЧАНИЕ1: Обратите внимание, что обычный способ обновления psplash с помощью служб systemd (psplash-systemd.service) работает нормально, когда psplash запускается с использованием psplash-start.service, я получаю обновления индикатора выполнения.

ПРИМЕЧАНИЕ2: Psplash использует драйвер фреймбуфера и FIFO.

ПРИМЕЧАНИЕ3. Связанные исходные файлы: psplash.c psplash-write.c

ПРИМЕЧАНИЕ4: текущее выполнение systemd (чтобы вы могли видеть, не упускаю ли я что-то, что должно быть готово перед запуском psplash)

Выполнение Systemd


person mozcelikors    schedule 07.10.2020    source источник
comment
Вы догадались, почему? Я думаю, что имею дело с той же проблемой.   -  person Adam Lee    schedule 04.01.2021
comment
@AdamLee К сожалению, я не смог понять это и решил свою проблему, используя неэффективный обходной путь, поскольку решение не имело решающего значения для моего приложения.   -  person mozcelikors    schedule 04.01.2021


Ответы (1)


Я не уверен на 100% насчет psplash и systemd, но, возможно, вам понадобится что-то вроде этого в вашей среде для управления psplash:

экспорт TMPDIR = / mnt / .psplash

person Florian    schedule 16.10.2020