ビーグルボーンの開始時間を短縮するためにsystemdを使用する方法

ビーグルボーンの開始時間を短縮するためにsystemdを使用する方法

私は現在、beaglebone greenを起動し、Pythonスクリプトを起動するのにかかる時間を短縮しようとしています。私の単純なPythonスクリプトはケープの中継をオンにします。

私はリレーが回転するのにかかる時間を、リレーが始まり、便利なタスクを実行するのにかかる時間として使用しました。

以前はリレーに18秒かかりましたが、systemdで14秒に短縮しました。

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

以下は、現在のリリースチャートの切り取り画像です。 案内図

私が理解しているように、私のサービスは非常に早く実行され、ネットワーキングなどの時間がかかるサービスは私のリレーサービスに影響を与えません。そうですか?

systemdでブート時間を短縮するために他の方法がありますか?

ベストアンサー1

プログラムが状態を維持する必要があるかどうか(書き込み可能なディスクが必要ですか?)できる最も簡単なことは、initシステムをまったく使用しないことです。代わりに、これをカーネルパラメータに追加することを検討してください(ほとんどのuBoot環境/設定で)。

init=/path/to/your/program

systemdしたがって、Linuxカーネルは実行されず(プロセスマネージャ)、代わりにプログラムが最初のプロセスとして実行されます。今これはPythonスクリプトだと言います。私はいません。考えるスクリプトをinitとして実行できます。 Pythonアプリケーションを作成するには、コンパイルされた言語で小さなラッパープログラムを作成する必要があります。

シェル/ラッパーも信号を処理する必要があることを覚えておいてください(デフォルトのシグナルハンドラを持たないプログラムの場合は、init / systemdがシグナルを処理します)。次のようなものを使って逃げることもできます。愚かな初期化通常、Dockerコンテナで使用されます。

書き込み可能なボリュームが必要な場合は、ラッパーにパーティションをマウントするように要求することもできます(ルートパーティションである必要はありません。保存するためにUSBスティックをマウントする必要があるかもしれません)。

組み込みシステム/uBootではカーネルパラメータが少し難しいかもしれませんので、まずデスクトップ仮想マシンでこれを試してみましょう。

おすすめ記事