ブート過程を表示するツール、Bootchart
Linuxパソコンのブートに時間がかかるときは、 Bootchart で調べてみよう。ブート過程を完全に記録しわかりやすいグラフで表示してくれるので、これを見ればトラブルシューティングもできるし、古き良き時代のようにパソコン自慢もできる。
Bootchartを使いたいときは、まずお使いのディストリビューションのパッケージ管理システムを調べてみよう。Bootchartは広く使われているユーティリティーなので含まれている可能性が高い。ない場合は、BootchartのダウンロードページにDebian、Ubuntu、Gentoo、SUSE、Mandriva用の公式パッケージへのリンクがあるのでこれを利用する。ソースコードは、RPM形式とtarball形式のものがbootchart.orgで提供されている。このパッケージにはインストール用とアンインストール用のスクリプトとコンパイル手順書も含まれている。
ツールは2つの部分、ロギングデーモンbootchartdとそのログファイルをわかりやすいグラフに変換するコマンドラインユーティリティーから成る。ソースからパッケージをコンパイルした場合は/boot/grub/menu.lstのカーネルコマンドラインの引数に「init=/sbin/bootchartd
」を追加する。通常、カーネルは初期化スクリプト/sbin/initを起動するが、こうすると、代わりにロギングデーモンを起動するようになる。/sbin/initはロギングデーモンが起動するため、ブート過程のほかの部分を変更する必要はない。
起動されたbootchartdは、CPU負荷やディスクの動作といった統計データのほか、自身を除く動作中の全プロセスについてその起動時刻と状態を記録する。そして、KDE Display ManagerまたはGNOME Display Managerのgreeterを検知した時点で記録を停止し、データを/var/logに書き出す。ログは、Bootchartの解説書では/var/log/bootchart.tgzという名のファイルになるはずだが、Ubuntuでは/var/log/bootchart/ディレクトリーに日時を名とするファイルとして保存される。いずれのディレクトリーにもない場合はお使いのディストリビューションの解説書を見ていただきたい。
一見にしかず
bootchartdのログファイルは、bootchartというユーティリティーが洒落たグラフに変換する。このユーティリティーはシェルスクリプトで、何とJavaを使っている。bootchartを実行する方法はいくつかあり、ディストリビューションがBootchartパッケージ提供している場合は自動的に実行されるようになっていることが多い。また、自分でログファイルを指定してスクリプトを起動することもできる。さらに、BootchartサイトにあるオンラインWebレンダラーを使えば、指定した画像ファイル形式でログファイルからグラフを作ることもできる。
グラフはガントチャート形式になっている。時間を表す横軸の上に、さまざまなプロセスが依存関係に応じて縦に並び、CPUとディスクの利用状態によって色分けされている。
ここに例示したグラフは筆者のUbuntu 8.04マシンのもので、ブートは1分弱で完了している。もっと速くブートさせたいときは、まず、このグラフから通常とは異なる点を探す。この場合、ブート開始43秒から51秒までのCPU負荷が非常に高い。そこで、この時間帯のプロセスをガントチャートで調べるとcx25840_fwモジュールが動いていることがわかる。これはHauppaugeビデオキャプチャーカード用のモジュールでこのマシン上で動作しているMythTVのバックエンドが使っている。したがって、これほどにCPUを多用するモジュールが本当に必要かどうかを検討し、また構成ミスでロードに時間がかかっていないかシステムログを調べることになる。
同様に、CUPSとTorもCPUを多用している。このマシンは筆者しか使わないため、いずれかまたは両方をシステムブート時ではなくログイン時に起動するようにすれば、ブート時間を短縮できるだろう。MythTVのバックエンドとは異なり、ログインして使っているときにしか必要としないからだ。
十分な知識がない限り、スタートアップ過程に手を入れるのは好ましいことではない。しかし、現実を見れば、Linuxパソコンをメチャクチャにしてしまい何とか修復するというのは昔からの伝統だ。そう考えれば、Arjan van de VenとAuke KokがAsus Eee PCを調整し5秒足らずでブートするようにしたことが少々羨ましく思えてくるだろう。ならば、まずBootchartをインストールしシステムのブート過程を調べてみよう。そして、パソコン自慢をしよう。