組み込みLinuxを使用していますが、initramfsを使用せずにカーネルをコンパイルしましたが、カーネルは正常に起動しています。しかし、rcS
ファイルが見つからないことを示しています。/etc/init.d/rcS
に入れましたが、rcS
ファイルは次のようになります。
#!/bin/sh
echo "Hello world"
ファイルシステムがカーネルによってマウントされた後、ファイルシステムはHello world
を出力します。
このファイルが必要な理由と、それらの起動スクリプトを特定の順序で開始するにはどうすればよいかを誰かに教えて説明できますか?
私はbusyboxでRaspberryPiを使用していますが、正常に動作しますが、起動時にスタックします。
/etc/init.d/rcS
を使用すると、起動時に追加のプログラムを実行できます。その典型的な使用法は、追加のファイルシステムをマウントし(その時点でルートファイルシステムのみがマウントされます)、いくつかのデーモンを起動することです。
通常、rcS
はシェルスクリプトであり、その場で簡単にカスタマイズできます。一般的なディストリビューションでは、rcS
を/etc/rcS.d
でさらにスクリプトを実行する単純なスクリプトにします(正確な場所はディストリビューションによって異なります)。これにより、各デーモンを独自のinitスクリプトでパッケージ化できます。ファイル/etc/rc.local
は、存在する場合はrcS
によっても実行されます。これは、システム管理者によって作成されたコマンドを対象としています。
Initの従来のSysVinit実装では、/etc/init.d/rcS
は/etc/inittab
(sysinit
設定)にリストされます。 BusyBoxを使用すると、inittab
(機能がコンパイルされている場合)を指定することもできますが、(とりわけ)/etc/init.d/rcS
を読み取るようにする組み込みのデフォルトがあります。
/etc/init.d/rcSは通常、/ etc/rcS.d /のスクリプトを開始します。
これが私のものです:
$ cat /etc/init.d/rcS
#! /bin/sh
#
# rcS
#
# Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order
#
exec /etc/init.d/rc S
$ ls /etc/rcS.d/
README S25brltty S37apparmor S55urandom S70x11-common