ブログ

電源投入時のアプリケーションの起動高速化

at_ito
2019年6月2日 9時45分

Armadilloでシステムを構築する際には、電源投入後に独自に作成したアプリケーションを実行することになることが多いです。その際にはsystemdからアプリケーションを起動させますが、特に意識せずに設定した場合は、電源投入後からアプリケーション起動までに数十秒かかることが多いです。

そのため、ここでは電源投入後になるべく早くアプリケーションを動作させるための方法について紹介します。

1. systemdのUnitファイルの作成

例として以下のように、/etc/systemd/system/myapp.serviceファイルを作成してください。

[Unit]
Description=My application start faster than other
DefaultDependencies=no
 
[Service]
ExecStart=/usr/bin/myapp.sh
 
[Install]
WantedBy=default.target

今回は、アプリケーションの起動を高速化するために、DefaultDependencies=noと設定しています。もしアプリケーションが正常に起動しない場合は、アプリケーション起動時に必要なサービスが動作しているか確認し、適切に設定してください。

もしmyapp.shを起動するのではなく、他のアプリケーションを起動させる場合は、ExecStartに設定する文字列を変更してください。

2. アプリケーションを起動するシェルスクリプトを作成

前述に記載したUnitファイルではmyapp.shを起動するように設定しています。 そのため、ここではアプリケーションの起動を行うファイルを/usr/bin/myapp.shというファイル名で独自に作成してください。

3. 設定の有効化

以下のコマンドを実行して設定を有効化してください。

[armadillo ~]$ sudo chown root:root /etc/systemd/system/myapp.service
[armadillo ~]$ sudo chmod 644 /etc/systemd/system/myapp.service
[armadillo ~]$ sudo chmod +x /usr/bin/myapp.sh
[armadillo ~]$ sudo systemctl enable myapp.service

上記で設定完了となります。再起動すると起動時にmyapp.shが実行されます。

参考. 起動高速化結果

参考程度の情報ですが、Armadillo-640でGUI(フレームバッファへの表示)アプリケーションの起動(画面に表示されるまで)の時間を電源投入後7秒程度で表示することが可能です。

※: 条件によって変化するため、実際には各々のシステムでの評価をお願いします。

付録. Linuxカーネルの起動メッセージの非表示化

Armadilloは起動時にコンソールにLinuxカーネルの起動ログを表示します。このコンソールへのログ表示を非表示にすることで、起動時間を短縮することが可能です。ログが不要な場合はこちらの設定も併せて行うことにより、アプリケーションの起動を高速化できます。

コンソールへのログ表示を非表示にするには、U-bootのプロンプトで以下のコマンドを実行してください。

=> setenv optargs quiet systemd.show_status=0
=> saveenv