[[LinuxSoft]]
 * InitNG で高速ブートを実現しよう [#b941a3e7]
 #contents
 
 ** InitNG って? [#l926b5bb]
 
  InitNG は /sbin/init に替わり高速で各種デーモンの起動やシステムのセットアップを行うツールです。通常のブート手順を踏まないため、高速な起動が出来ます。起動時だけではなく、ついでに再起動や電源停止時も非常に速くなるのが特徴的です。
 
  ちなみに私の環境 Fedora Core 4(Linux 2.6.12-1.1398_FC4)、CPU は Celeron 2.66GHz、HDD は ATA 100 です。システム構成は"ワークステーション"でインストールした直後の状態です。導入前は起動にちょうど1分かかっていたものが、導入後は15秒まで短縮されました。4倍高速化されたことになります。
  [[bootchart>http://pocketstudio.jp/linux/?bootchart%A4%C7%B5%AF%C6%B0%BB%FE%A4%CE%A5%D7%A5%ED%A5%BB%A5%B9%BF%E4%B0%DC%A4%E4%C9%E9%B2%D9%A4%F2%A5%B0%A5%E9%A5%D5%B2%BD]] というブート時のシステム状況をグラフ化するツールを使った比較した画像をアップしてみました。
 
 - before 〜 [[通常のブート時間(1分):http://pocketstudio.jp/r_images/wiki_linux/2005/bootchart-FC4.png]]
 - before 〜 [[通常のブート時間(1分):http://www.23styles.com/bbs]]
 
 - after 〜 [[InitNG導入後のブート時間(15秒):http://pocketstudio.jp/r_images/wiki_linux/2005/bootchart-FC4-InitING.png]]
 - after 〜 [[InitNG導入後のブート時間(15秒):http://www.23styles.com/bbs]]
 
  どうでしょう? 起動手順がスッキリして高速化されていることが分かります。(ただし、初期状態の InitING インストール直後は必要最低限のサービスしか起動されず、その分が速いといえば当然ですが、それでもネットワークや X も起動しますし、rc.sysinit を経由しない高速起動は目を見張るものがあります。一度、実際に目で見て感じてください)
 
 
 ** システム必要条件 [#d51a58e8]
 
  基本的に 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 での検証方法を紹介します。ディストリビューション毎に注意事項があるようです。詳しい個別情報が[[フォーラム(英語):http://forum.initng.thinktux.net/]]に公開されてます。記述があるのは Debian, Fedora Core, Gentoo, Ubuntu についてです。
 
  あわせて、本当に高速化されているかどうか目で確認できるように、予め [[bootchart>http://pocketstudio.jp/linux/?bootchart%A4%C7%B5%AF%C6%B0%BB%FE%A4%CE%A5%D7%A5%ED%A5%BB%A5%B9%BF%E4%B0%DC%A4%E4%C9%E9%B2%D9%A4%F2%A5%B0%A5%E9%A5%D5%B2%BD]] というブート時のシステム状況をグラフ化するツールをセットアップされた状態を想定しています。
 
  なお、SELinux が有効な場合 Targeted では動作するようです。strict モードで動作させるには別途[[パッチ:http://forum.initng.thinktux.net/viewtopic.php?t=170]]が必要になるようです。
 
 ** ライセンス [#wf5dbbd1]
 
  GNU Public License (GPL) version 2
  ということで、無料で利用できます。作者さんに感謝ですね!
 
 ** 英語情報 [#n4fe62f5]
 
 - http://initng.thinktux.net/index.php/Main_Page#Forum 開発サイト
 - http://forum.initng.thinktux.net/ フォーラム(掲示板)
 - http://initng.thinktux.net/index.php/Documentation 各種ドキュメント類
 
 * InitNG のセットアップ [#nb735360]
 
  ここでは以下の条件下でのセットアップ情報を掲載しています。もし他の環境でうまく動作できましたら、私のページからリンクをはりますので、[[どうかお知らせ下さい:zem@pocketstudio.jp]]。
 
 ** セットアップ条件 [#y86e4991]
 
 - ディストリビューション:Fedora Core 4
 - ファイルシステム:物理ボリュームを使用
 - [[bootchart>http://pocketstudio.jp/linux/?bootchart%A4%C7%B5%AF%C6%B0%BB%FE%A4%CE%A5%D7%A5%ED%A5%BB%A5%B9%BF%E4%B0%DC%A4%E4%C9%E9%B2%D9%A4%F2%A5%B0%A5%E9%A5%D5%B2%BD]] をインストール済み
 - SELinux は無効もしくは targeted モード
 
 ** セットアップ手順 [#l094839d]
 
  まずは、アーカイブの取得と展開。ここのあたりはお約束ですね。
  $ 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>http://pocketstudio.jp/linux/?bootchart%A4%C7%B5%AF%C6%B0%BB%FE%A4%CE%A5%D7%A5%ED%A5%BB%A5%B9%BF%E4%B0%DC%A4%E4%C9%E9%B2%D9%A4%F2%A5%B0%A5%E9%A5%D5%B2%BD]] 用のデータが /var/log/bootchart.tgz に保存されています。[[このデータを元に画像を作成すると、設定前と後の起動時間の違いがはっきりします>http://pocketstudio.jp/linux/?bootchart%A4%C7%B5%AF%C6%B0%BB%FE%A4%CE%A5%D7%A5%ED%A5%BB%A5%B9%BF%E4%B0%DC%A4%E4%C9%E9%B2%D9%A4%F2%A5%B0%A5%E9%A5%D5%B2%BD#content_1_8]]
 
 
  今後 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 の日本語情報 [#j2cfafca]
 
  日本語訳の情報を掲載します(の予定です)。
 
 - [[ドキュメント>InitNG/Documentation]]
 -- [[FAQ>InitNG/Documentation/FAQ]]
 -- [[README>InitNG/Documentation/README]]
 -- [[インストール方法>InitNG/Documentation/インストール方法]]
 -- [[bootchart の作成>InitNG/Documentation/bootchartの作成]]
 
 - Developer Documentation
 -- [[InitNG のデバッグ>InitNG/Documentation/InitNG のデバッグ]]
 -- [[service の作成>InitNG/Documentation/service の作成]]
 -- [[plugin の作成>InitNG/Documentation/plugin の作成]]
 -- [[chroot jail 環境での実行>InitNG/Documentation/chroot jail 環境での実行]]
 
 ※出典がないとの指摘がありますが、 私は README 等オリジナルの一次情報を参照しています。特定の URL を参照している場合は書いています。あと、ここは wiki で凍結してない箇所ですので、気に入らなければどうぞご自由にお書き換えいただいて結構です。
 // ご自分の場合は出典を明記しないのに、私に対して一方的に避難をなさるのは不公平と思います(心あたりのある方へ)。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS