ドライバーやサービスなど(これらすべてのジョブはLinuxが起動時に行うこと)を順番にではなく並行して初期化できるかどうか疑問に思いました。積極的に起動時間を短縮したい。一部のサービスは相互に依存していることは知っていますが、簡単な例を挙げると、ネットワークデバイスのプローブ中に、ネットワークの準備ができるまで10秒間待つのではなく、オーディオも処理する必要があります。
systemdやInitNGのような概念を聞いたことがありますが、他の方法が必要だと確信しています。カーネル自体がこのように起動するためのオプションやフラグはありませんか?
/etc/init.d/rc
のCONCURRENCY
変数を見てください。いくつかの選択肢があります。makefile
に設定すると、initプロセスはそれを並行して実行します。
ディストリビューションに応じて異なるコメントがあります。
# #make likebootingを使用できるかどうかを確認します。 #insservパッケージを有効にする必要があります。ブートの同時実行性には、 #startparをインストールする必要もあります。 # CONCURRENCY = makefile
#同時init.dスクリプトを有効にするために使用するメソッドを指定します。 #有効なオプションは「none」と「makefile」です。以前に使用された廃止されたオプション #は、「Shell」と「startpar」です。廃止されたoptions #は、2010-05-14以降の「makefile」のエイリアスです。デフォルトのsince #同じ日付は 'makefile'です。これは、Debianのinit.dスクリプトが現在 #に依存関係情報を含み、この #情報を使用して順序付けられているためです。依存関係ベースの #ブートシーケンスについては、insservを参照してください。 #CONCURRENCY = makefile CONCURRENCY = none
init
スクリプトの行も参照してください。
eval "$(startpar -p 4 -t 20 -T 3 -M $ 1 -P $ previous -R $ runlevel)"
man startpar
も参照してください
Timoからの良いヒント: Bootchart パッケージを使用すると、ブートプロセスを視覚化できます。
[編集]
ブートチャートを使用するのは難しいことが多いので、ここにハウツーを示します。
Bootchart Micro Howto
apt-get install bootchart2 pybootchartgui
init=/sbin/bootchartd
を追加します。Sudo pybootchartgui
を実行します。bootchart.png
は作業ディレクトリにあります