FreeBSD QandA 837

FreeBSD QandA

Q. ブート時にかかる時間が長いです。待ちきれません。

A. そんなせっかちなあなたは、カーネルコンフィギュレーションをいじるとよ
   いでしょう。

   A1. 不要なデバイスの記述をコメントアウトする。

     認識されることのないデバイスを毎回調べにいく必要はありません。
     最初からコメントアウトしておけば、その分 起動時間が短くなります。

     ブート時に
       xxx not found at ....
     などと表示されるデバイスをコメントアウトしてください。dmesgの
     出力を見ながら作業するといいでしょう。

   A2. 不要な device を外すだけならカーネルを再構築せずとも UserConfig で
     disable することができます。カーネルコンフィギュレーションに
       options        USERCONFIG

     が含まれているなら (GENERIC カーネルには含まれています)、起動時に
     出る boot: という prompt で
       boot: -c

     と入力した後、不要な device を disable します。
     command line からは
       config> disable <device_name>

     とします。ls でデバイス一覧が、help で簡単な説明がでます。
     カーネルコンフィギュレーションに
       options        VISUAL_USERCONFIG

     が入っているなら (こちらも GENERIC カーネルに含まれています) 、
       config> visual

     と入力すればインストール時と同様の設定画面になります。
     以後はこの設定が使われますので、起動するたびに設定する必要はありません。

   A3. SCSI デバイス認識の待ち時間を短く設定する。

     デフォルトでは
       options         SCSI_DELAY=15

     とSCSIデバイス認識のために15秒待ちます。古いものなら15秒待たないと
     ダメかもしれませんが、最近のSCSI機器はそんなに待たなくても認識されます。
       options         SCSI_DELAY=5

     などとするといいでしょう。

     参考: handbook
       <URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/kernelconfig-config.html>


   3. 繋がっていないIDEのデバイスをコメントアウトする。

     例えば、IDEのプライマリ・マスタしか使っていなかったら、

       controller     wdc0    at isa? port "IO_WD1" bio irq 14 vector wdintr
       disk           wd0     at wdc0 drive 0
       #disk           wd1     at wdc0 drive 1
       #controller     wdc1    at isa? port "IO_WD2" bio irq 15 vector wdintr
       #disk           wd2     at wdc1 drive 0
       #disk           wd3     at wdc1 drive 1

     と、不要なデバイスをコメントアウトしてください。IDE を全く使って
     いないなら、上記のデバイスを全てコメントアウトするといいでしょう。

     参考: handbook
       <URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/kernelconfig-config.html#KERNELCONFIG-ATAPI>



   なお、カーネルの再構築については、
     handbook <URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/kernelconfig-building.html>
   を参考にしてください。

   FreeBSD2.2.7+Celeron266 に、FDD、SCSIカード、CD-ROM(SCSI)、HDD(SCSI)、
   MO(SCSI)、56k モデム、ネットワークカードを付けたマシンで (IDE 未使用)、
   カーネルコンフィギュレーションを書き換えることで、どれだけ起動時間が変わ
   るかを試しました (もちろん環境によって起動時間は違うでしょうから参考までに)。

   計ったのは、boot: プロンプトが表示されてから、ログインプロンプトが表示
   されるまでの時間です。

     a) GENERIC (デフォルトのカーネル)                      1分30秒
     b) GENERIC から認識されない不要なデバイスを削ったもの  1分21秒
     c) GENERIC の SCSI_DELAY を 5 にしたもの               1分23秒
     d) GENERIC から IDE のデバイスを全て削ったもの            52秒
     e) GENERIC に b)、c)、d)の全てを行ったもの                30秒

   うまくいけば起動時間が3分の1に短縮されるというのは、結構うれしく
   ありませんか? ;-)

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。