yoctoで起動スクリプト(systemd)

edisonの標準OS yoctoでは起動スクリプトにsystemdが採用されている。SystemVとは全く違った概念でランレベルとかもなくなったようだ。

systemdでは制御対象を、サービスや従来で言うランレベルに近いものを内包したユニットという単位で管理する。

edisonでシステム起動時にデーモン起動などをするには以下の手順でユニットを追加、有効化する。

hogeというユニットを追加する場合"/etc/systemd/system"以下に*.serviceというファイルを作成し、以下の様にする。

# vi /etc/systemd/system/hoge.service
[Unit]
Description=hoge service

[Service]
ExecStart=/usr/bin/hoge

[Install]
WantedBy=multi-user.target 

書式は他所を参照してくださいw

これでsystemdから認識されるはず。"systemctl status"でstatusをチェックする。ファイル名が間違ってたりするとこの時点でエラーになる。以下のようになればOK

# systemctl status hoge
● hoge.service - hoge service
   Loaded: loaded (/etc/systemd/system/hoge.service; disabled)
   Active: inactive (dead)


これで準備OK。"systemctl enable"で有効にする。

# systemctl enable hoge
ln -s '/etc/systemd/system/hoge.service' '/etc/systemd/system/multi-user.target.wants/hoge.service'

再起動すると、スタートアップ時にサービスで指定したスクリプトが実行されているはず。


参考)
https://wiki.archlinuxjp.org/index.php/Systemd_FAQ?rdfrom=https%253A%252F%252Fwiki.archlinux.org%252Findex.php%253Ftitle%253DSystemd_FAQ_%2528%2525E6%252597%2525A5%2525E6%25259C%2525AC%2525E8%2525AA%25259E%2529%2526redirect%253Dno#.E3.83.96.E3.83.BC.E3.83.88.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.E3.81.AE.E9.96.93.E3.81.AB.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.82.92.E8.B5.B7.E5.8B.95.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.99.E3.82.8C.E3.81.B0.E3.81.84.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F

http://wiki.bit-hive.com/tomizoo/pg/systemd%20%26%20systemctl