
私は組み込みプラットフォーム(Solidrun HummingboardのiMX.6)でDebian wheezyを使用していますが、rfkillは私のWiFiをブロックします。
コマンドがsudo rfkill unblock wifi
機能したため、というスクリプトを作成してunblock_wifi.sh
次の場所に配置しました/etc/init.d
。
#!/bin/bash
logFile=/var/log/unblock_wifi.log
timestamp=$(date +%Y%m%d_%H%M%S)
echo "unblock_wifi - Started at $timestamp" > $logFile
rfkill unblock wifi &>> $logFile
timestamp=$(date +%Y%m%d_%H%M%S)
echo "unblock_wifi - Done at $timestamp" >> $logFile
起動時にスクリプトが呼び出されますが(ログは/ var / logに表示され、時刻は正確です。開始および停止メッセージのみが表示されます)、Wi-Fiはまだブロックされています。起動後にスクリプトを直接呼び出すと、Wi-Fiが有効になります。
私のスクリプトが開き、/etc/rc2.d/S05unblock_wifi.sh
最後にに表示されますls
。考えるこれは最後に実行されることを意味します。しかし、rfkillスクリプトはありません...
init.dにスクリプトがない場合、rfkillはどのように実行されますか?私のスクリプトが実行された後に実行できます。 rfkillの後に実行するスクリプトをどこに配置する必要がありますか?
編集:答えを見つけるためにどこかを見つけましたが、誰もがスクリプトに入れることを提案しているようです/etc/init.d
。ここに私が試したことがあります。
答え1
順番が合っているのは確実ですか?これ 問題は正しい順序で表示されないようですのでls
、他のサービスが終了したときにロードされることを確認することをお勧めします。
答え2
Timidgerのコメントの後、私はブートシーケンスをより深く掘り下げ始め、connmanがWi-Fiを無効にした主犯であることを発見しました。サービスを無効にすると、私の要件が満たされました。
後で注意してください:開始順序は、各サービスに必要な依存関係によって決まります。ある日以降にスクリプトを実行するには、依存関係としてスクリプトが必要です(参照この問題)--
答え3
systemdベースのシステムでは、rfkillステータスはsystemd-rfkill
サービスによって制御されるため、再起動後にロードおよび保存機能を実行する必要があります。