LoginSignup
5
5

More than 5 years have passed since last update.

[Unity] Unity プログラムを Intel Edison で自動起動する

Last updated at Posted at 2015-08-26

実行はできたけど

[Unity] Intel Edison で Unity を実行する
にて Unity のプログラムを実行することができました。が、これはログインして実行コマンドを入力しています。
つまりこういう状態で、
IMG_1385.jpg
ログインして、シェルから実行コマンドを入力しているわけです。これはいただけません。
ガジェットならガジェットらしく、独立で起動してくれないと夢が広がらないですね。

というわけで、Unity プログラムを自動起動させます。

サービスを設定する

作成した実行ファイルが /var/linux.x86 だとして、
/lib/systemd/system/unityplayer.service
というファイルを、以下の内容で作成します。

[Unit]
Description=Unity Player
Requires=wpa_supplicant.service
After=wpa_supplicant.service

[Service]
Environment="HOME=/usr/root"
ExecStart=/var/linux.x86 -batchmode -nographics
#ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

まだ systemctl の理解が浅くて、この記述が最適なのか自信がありません。(rc.init の頃と比べて洗練された気はしますが、どうも難しいですね)
実際、wifi の接続を待ってから起動するようにしたかったのですが、効いてないようです。なので
After=wpa_supplicant.service
このあたりの記述には意味がないかも。

そしてこの設定ファイルでは、自動実行(非ログイン実行)する際の Unity の問題をひとつクリアしています。
Environment="HOME=/usr/root"
これです。どうやら Unity Player は、環境変数 HOME が未定義だと落ちてしまうようです。この事実を見つける難易度が高かったのですが、わかってしまえばこのように、回避は容易です。

サービスを登録する

/lib/systemd/ で、
systemctl enable unityplayer.service
を実行します。

root@yuji-edison:/lib/systemd/system# systemctl enable unityplayer.service 
ln -s '/lib/systemd/system/unityplayer.service' '/etc/systemd/system/multi-user.target.wants/unityplayer.service'

これで自動起動に登録されました。準備完了です。

単体で起動してみる

PC ではなく壁に刺します。

IMG_1386.jpg

さあ、どうだ!前回使用した受信プログラムを走らせます。

スクリーンショット 2015-08-26 23.36.19.png

動作しています。めでたしめでたし。
送信プログラムでアドレスを送っているので、そのアドレスに ssh でログインすることもできます。

今後

これで、電源さえ供給すれば、Break Out Board すら外した状態で Unity で作ったプログラムを動作させられるはずです。何ができますかねー

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5