私はraspbian(Debianベース)を実行しています。 initが実行する最初のスクリプトが自動的に作成されるように、initサービスの優先順位を変更したいと思います。どうすればいいですか?
ランレベルSIには、3つの優先順位の01スクリプト(hostname.sh、fake-hwclock、およびmountkernfs.sh)があります。優先順位が01のランレベルSにスクリプトを置くと、最初に実行されるスクリプトではありません。 (たとえば、mountkernfs.shの場合)を使用して、これらすべてのスクリプトの優先順位を02に変更してみました。
sudo update-rc.d -f mountkernfs.sh remove
sudo update-rc.d mountkernfs.sh start 02 S
最初のコマンドは /etc/rcS.d からスクリプトを効果的に削除します。 2番目のコマンドはmountkernfs.shを優先順位01にリセットします。
どんなアイデアがありますか?ありがとうございます!
答え1
/etc/init.d/のinitスクリプトは、LSBヘッダーに関するいくつかの情報を指定します。 LSBヘッダーは、基本的にスクリプトの先頭にある数行にすぎません。一部のスクリプトの「必須開始」フィールドを使用すると、このスクリプトの前に初期化する必要があるサービスを指定できます。insserv
LSB ヘッダーの初期化スクリプトを自動的に追加します。
したがって、この問題を解決するには、次の手順を実行します。
- LSBヘッダーの「提供」フィールドを使用して、スクリプト名を「X」として指定します。
- LSBヘッダーの「Default-Start」フィールドと「Default-Stop」フィールドを使用して、それぞれスクリプトを開始および停止する必要がある実行レベルを追加します。
- 優先順位が01のスクリプト(hostname.sh、fake-hwclock、およびmountkernfs.sh)のLSBヘッダーの「Required-Start」フィールドに「X」を設定します。
sudo insserv name_of_your_script_file
(オファーフィールドに指定した名前ではありません)を使用してサービスを追加します。
これにより、関連スクリプトの必要なすべてのスクリプト優先順位が依存関係と一致するように移動されます。私:
- S01X.sh
- S02mountkernfs.sh
- S02 ホスト名.sh
- S02 偽時計時計
- S03udev
源泉:http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot
。