2015-11-03

スクリプト rc.local の実行順序を変更する

Raspberry Piに 2015-09-24-raspbian-jessie をインストールしたところ、/etc/rc.localが起動シーケンスの最後より少し手前で実行されるようになりました。起動処理にsystemdが採用された影響だと思われます。

私の事例では、無線LANでアクセスポイントに接続して、DHCPでアドレスの取得が完了する前に、rc.localが走ってしまうような現象が見られました。このため、NASのマウントが失敗したり、ある種のネットワーク使用プログラムが実行できない症状が発生しました。この問題を回避するため、/etc/rc.localを、できるだけ起動シーケンスの最後ぎりぎりに実行されるように調整します。

ここに記載した情報は、入念な検証をしていません。やってみたら動いた、というレベルの経験則です。完璧な対策でない可能性があります。もっと良い方法をご存じでしたら、教えていただけるとありがたいです。

/lib/systemd/system/rc-local.service

After=network.target

↓変更

After=runlevel1.target runlevel2.target runlevel3.target runlevel4.target runlevel5.target

なお、systemdを採用したシステムにおいて、rc.localは基本的に推奨されない模様です。(筆者はsystemdに詳しくはないため実際のところはわかりかねます)