Как уменьшить время загрузки beaglebone с помощью systemd

В настоящее время я пытаюсь сократить время, затрачиваемое на загрузку моего beaglebone green и запуск скрипта python. Мой простой скрипт python просто включает реле на мысе.

Я использую время, необходимое для того, чтобы реле включилось, как время, необходимое для загрузки и сделать что-то полезное.

Раньше реле занимало 18 секунд, и я получал его до 14 секунд, возившись с systemd.

Я создал простой единичный файл, который запустит мою программу python

[Unit] Description=Relaycheck run on startup DefaultDependencies=no After=systemd-system.slice [Service] WorkingDirectory=/home/ ExecStart=/home/relaycheck2.py StandardOutput=null [Install] Alias=relaycheck2.service 

И вот кадрированная картина текущей загрузочной диаграммы: Bootchart

Насколько я понимаю, моя служба запускается довольно рано, а трудоемкие сервисы, такие как сетевое взаимодействие, не влияют на мое ретрансляционное обслуживание. Это верно?

Есть ли что-нибудь еще, что я могу сделать, сократить время загрузки с помощью systemd?

Должна ли ваша программа поддерживать состояние (вам нужен записываемый диск?) Пост, который вы, вероятно, можете сделать, вовсе не использует систему init. Вместо этого рассмотрите добавление этого аргумента ядра (скорее всего, в среду / конфигурацию uBoot):

 init=/path/to/your/program 

Поэтому вместо запуска systemd (диспетчер процессов) ядро ​​Linux запускает вашу программу в качестве первого процесса. Теперь вы сказали, что это скрипт Python. Я не думаю, что вы можете выполнить скрипт как init. Возможно, вам придется написать небольшую программу-оболочку на скомпилированном языке, на котором будет создано ваше приложение python.

Имейте в виду, что ваша программа оболочки / оболочки также должна обрабатывать сигналы (сигналы init / systemd для программ, у которых нет обработчиков сигналов по умолчанию). Возможно, вам удастся использовать что-то вроде dumb-init, которое обычно используется для контейнеров Docker.

Если вам нужен объем, доступный для записи, вы также можете установить программу для вашей оболочки для своего раздела (это не обязательно должен быть ваш корневой раздел. Возможно, вам понадобится установить USB-накопитель для хранения).

Я бы попробовал это на настольной виртуальной машине сначала, так как параметры ядра могут быть немного сложными для встроенных систем / uBoot.