LinuxSoft

InitNG で高速ブートを実現しよう

InitNG って?

 InitNG は /sbin/init に替わり高速で各種デーモンの起動やシステムのセットアップを行うツールです。通常のブート手順を踏まないため、高速な起動が出来ます。起動時だけではなく、ついでに再起動や電源停止時も非常に速くなるのが特徴的です。

 ちなみに私の環境 Fedora Core 4(Linux 2.6.12-1.1398_FC4)、CPU は Celeron 2.66GHz、HDD は ATA 100 です。システム構成は"ワークステーション"でインストールした直後の状態です。導入前は起動にちょうど1分かかっていたものが、導入後は15秒まで短縮されました。4倍高速化されたことになります。  bootchart というブート時のシステム状況をグラフ化するツールを使った比較した画像をアップしてみました。

 どうでしょう? 起動手順がスッキリして高速化されていることが分かります。(ただし、初期状態の InitING インストール直後は必要最低限のサービスしか起動されず、その分が速いといえば当然ですが、それでもネットワークや X も起動しますし、rc.sysinit を経由しない高速起動は目を見張るものがあります。一度、実際に目で見て感じてください)

システム必要条件

 基本的に Linux 系で動作するようです。ただし、ハードディスク内の構成が論理ボリュームだと動作しません。必ず df で見たとき、以下のような物理ボリュームでなくてはいけません。

$ df -Th
Filesystem    Type  サイズ  使用  残り 使用% マウント位置
/dev/hda2     ext3     10G  2.6G  6.9G  28% /
/dev/hda1     ext3     99M  9.2M   85M  10% /boot
/dev/shm     tmpfs    110M     0  110M   0% /dev/shm

 Fedora Core 4 では通常、論理ボリューム(LVM)へのインストールがデフォルト(初期設定値)となっています。その場合は正常に動作できません。。もし df を実行して、中に論理ボリューム(/dev/mapper/VolGroupXX〜の記述)がある場合は残念ですが現行バージョンでは対応していません。

$ df -TH
Filesystem    Type     Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
              ext3      85G   4.3G    76G   6% /
/dev/hda1     ext3     104M    11M    88M  11% /boot
/dev/shm     tmpfs     393M      0   393M   0% /dev/shm

 色々試してみましたが、必ずシングル・ユーザ・モードになってしまって通常のサーバとしては機能をなしません。。。以下のようなエラーを吐いてシングル・ユーザ・モードに移行してしまいます。

** "initing_main.c", ready_to_quit():


    *********         No more services!        ************

-- line:76 WARN         Sending all processes the TERM signal, and 2 sec...
-- line:79 WARN         Sending all processes the KILL signal...
   system is start up!

Give root password for maintenance
(or type Control-D to continue):

 ここで root パスワードを入れないと Kernel Panic を起こしてリセットボタンを押すはめになってしまいます……。

 今後の InitNG バージョンアップ時の対応に期待しましょう。

 また、ここでは Fedora Core 4 での検証方法を紹介します。ディストリビューション毎に注意事項があるようです。詳しい個別情報がフォーラム(英語)に公開されてます。記述があるのは Debian, Fedora Core, Gentoo, Ubuntu についてです。

 あわせて、本当に高速化されているかどうか目で確認できるように、予め bootchart というブート時のシステム状況をグラフ化するツールをセットアップされた状態を想定しています。

 なお、SELinux が有効な場合 Targeted では動作するようです。strict モードで動作させるには別途パッチが必要になるようです。

ライセンス

GNU Public License (GPL) version 2

 ということで、無料で利用できます。作者さんに感謝ですね!

英語情報

InitNG のセットアップ

 ここでは以下の条件下でのセットアップ情報を掲載しています。もし他の環境でうまく動作できましたら、私のページからリンクをはりますので、どうかお知らせ下さい

セットアップ条件

  • ディストリビューション:Fedora Core 4
  • ファイルシステム:物理ボリュームを使用
  • bootchart をインストール済み
  • SELinux は無効もしくは targeted モード

セットアップ手順

 まずは、アーカイブの取得と展開。ここのあたりはお約束ですね。

$ cd /usr/local/src
$ wget http://initng.thinktux.net/download/initng-0.1.6.tar.gz
$ tar xfz initng-0.1.6.tar.gz
$ cd initng-0.1.6

 次に configure です。KERNEL-OS の指定をしないとエラーになるので、必ずづけてから make します。

$ ./configure KERNEL-OS=linux-gnu
$ make
$ make check

 特にエラーが出なければ問題ありません。

# make install

 問題が無ければ、次のような表示が出ます。

Initng is installed. Add init=/sbin/initng in your bootloader configuration
eg. at the end of the kernel line in /boot/grub/grub.conf
Have a lot of fun!

./gen_system_runlevel.sh
Automatically generating system,runlevel,default.runlevel and up.i
Adding daemon/sshd to default.runlevel
Adding daemon/acpid to default.runlevel
Done generating files.

 次にブート時に bootchart がデータを収集する bootchartd の記述を変更します。

# cat /sbin/bootchartd | sed 's:/sbin/init:/sbin/initng:g' > /sbin/bootchartdng
# chmod a+x /sbin/bootchartdng

 ちゃんと実行属性(x)がついているか念のために確認しておきます。

# ls -al /sbin/bootchartd
-rwxr-xr-x  1 root root 5835  7月 30 21:49 /sbin/bootchartd

 このようになっていれば問題ありません。

 最後にブートローダーの設定変更を行います。

# vi /etc/grub.conf
title Bootchart logging
        root (hd0,0)
        kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ rhgb quiet init=/sbin/bootchartd
        initrd /initrd-2.6.12-1.1398_FC4.img

 この中の【 init=/sbin/bootchartd 】の記述を【 init=/sbin/bootchartdng 】と書き換えます(書き換えるのは bootchart に関する grub.conf の行だけで、間違えて InitNG ではない元々の記述を書き換えないように注意)。

title Bootchart logging
        root (hd0,0)
        kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ rhgb quiet init=/sbin/bootchartdng
        initrd /initrd-2.6.12-1.1398_FC4.img

 次に InitNG の設定ファイルを変更します(Fedora Core 専用設定です)。

# vi /etc/initng/system.runlevel

 ファイルを開いたら、14行目

system/coldplug

 こちらをコメントします

#system/coldplug

 次にもう1つの設定ファイルを開きます。

# vi /etc/initng/default.runlevel

 ファイルの末尾に以下の行を追加します。

daemon/xfs
daemon/gdm
daemon/hald
system/alsasound

 ファイルを保存したあとは、サーバの再起動をしてテストします。

 あとは通常通りブートしたら設定成功です。

 この設定では bootchart 用のデータが /var/log/bootchart.tgz に保存されています。このデータを元に画像を作成すると、設定前と後の起動時間の違いがはっきりします

 今後 IntNG を使って常にブートさせたい場合は /etc/grub.conf を再度書き換えます。

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Bootchart logging
        root (hd0,0)
        kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ rhgb quiet init=/sbin/bootchartdng
        initrd /initrd-2.6.12-1.1398_FC4.img

 おそらく通常では【 default=1 】(上から2番目の通常の起動手順)が指定されていますが、これを1番上にするため【 default=0 】とします。

 また kernel 行の "init" も【 /sbin/bootchartdng 】から【 /sbin/initng 】に書き換えて起動時のログを取らなくします(必要であれば取るままにしておいても問題ありません)

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Bootchart logging
        root (hd0,0)
        kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ rhgb quiet init=/sbin/initng
        initrd /initrd-2.6.12-1.1398_FC4.img

 その他は必要に応じて /etc/initng/ 内のファイルの編集を行うことで、より細かな動作制御が出来るようです。詳しくはドキュメントをご覧下さい。

InitNG の日本語情報

 日本語訳の情報を掲載します(の予定です)。

  • Developer Documentation
    • InitNG のデバッグ?
    • service の作成?
    • plugin の作成?
    • chroot jail 環境での実行?

※出典がないとの指摘がありますが、 私は README 等オリジナルの一次情報を参照しています。特定の URL を参照している場合は書いています。あと、ここは wiki で凍結してない箇所ですので、気に入らなければどうぞご自由にお書き換えいただいて結構です。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Wed, 30 May 2007 00:04:03 JST (3652d)