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