netbootのインストールと設定

周りの環境が準備できたので、いよいよPXEブートの管理ツール system-config-netbootを導入して、設定を行なう。コマンドラインによる導入は以下の通り。

[root@vmserver ~]# yum install system-config-netboot

環境の設定

まず、クライアントに依存しない共通の環境を定義する。GNOMEのメニュー([System]⇒[Administration]⇒[Server Settings]⇒[Network Booting Servie])からsystem-config-netbootを起動する、初回の起動では「First Time Druid」というダイアログ形式のウィンドウが現れる。先ずDisklessを選らぶ。

次に、上で設定して来たとこを終わらせているかの確認画面が出るので[Forward]をクリックして次へ。

「Diskless Identifier」のウィンドウではこれから設定する環境の名前を入力する。今回は以下の通りとした。

  • Name: Fedora-8-Diskless
  • Description: Fedora 8, for diskless clients

[Forward]をクリックして次へ。

「Enter the NFS Information」というウィンドウでは、NFSサーバとマウントポイントの情報を入力する。

  • Server IP Address: 192.168.0.1
  • Directory: /tftpboot/f8/root

ここで注意が必要なのが、「Directory」で"/tftpboot"で始まって"/root"で終わる必要があるらしい。(ソースコードは確認していないが、他のパス名で実験して上手くいかなかった。)
[Forward]をクリックして次へ。

次に「Select the kernel for the diskless clients」というフォームが出る。/tftpboot/f8/rootの下に複数のkernelが存在する時はどれにするかを選択できるようになっている。(1つの場合は、1つのエントリしか出ない)適切なカーネルを選択し[Forward]をクリックして次へ。

最後に確認のウィンドウが出るので[Apply]をクリックして初期設定を終了する。

するとネットブートの管理画面が現るが、まだ、クライアントの設定をしていないので空の状態だ。

この段階で次の確認をする。

  • /tftpbootの下に"linux-install"というディレクトリが作成され、そこにPXEブート用のファイルが格納されている。そこには今定義した環境名(Fedora-8-Diskless)という名前のサブディレクトリが作られ、カーネルとRAMイメージがある。
[root@vmserver ~]# ls /tftpboot/linux-install/
Fedora-8-Diskless  msgs  pxelinux.0  pxelinux.cfg
  • /tftpboot/f8/root/の下に".oldroot"、".snapshot/"というディレクトリが作られている。
[root@vmserver ~]# ls /tftpboot/f8/root/
bin/        home/       misc/       opt/        selinux/    tmp/
boot/       lib/        mnt/        proc/       .snapshot/  usr/
dev/        lost+found/ net/        root/       srv/        var/
etc/        media/      .oldroot/   sbin/       sys/
  • /tftpboot/f8/snapshot/の下にfilesというファイルが作られ、各クライアント毎に個別に持つ必要があるファイルやディレクトリの一覧が格納されている。このファイルはシステムで使用するので、もし追加でクライアント毎の設定が必要な場合は/tftpboot/f8/snapshot/files.customというファイルを作り追加する。
[root@vmserver ~]# cat /tftpboot/f8/snapshot/files
#
# This file contains the list of files/directories to be stored in the
# snapshot directory for each diskless client.  Please do not edit this file,
# as Red Hat will be updating it with each release. If you wish to
# add files please create a files.custom in this directory and add entries to it.
#
/boot/kernel.h
/dev/
/etc/resolv.conf
	:
	:
/var/lib/ntp/
/var/yp/binding/
/root/

クライアントの設定

次にクライアントの設定を行なう。ネットブートの管理画面で[New]をクリックしてクライアントの情報を入力する。最低限必要なのはクライアントのホスト名(もしくはIPアドレス)を入力することである。あと、[Generate]というチェックボックスが選択されていることを確認して[OK]を押すだけである(後の項目は必要に応じて設定)。

すると、設定したクライアントのエントリが表示されている。

この時点では以下のことを確認する。

  • /tftpboot/f8/snapshot/の下にクライアント名のディレクトリが作成され、その下にクライアント固有のファイルやディレクトリが格納されてる。
[root@vmserver ~]# ls /tftpboot/f8/snapshot/bishop/
boot  dev  etc  lib  root  var
  • /tftpboot/linux-install/pxelinux.cfg/の下にクライアントのIPアドレスを16進表示したファイルが作られ、そこにクライアントのブート方法が記述されている。(以下の例はクライアントのIPアドレスが192.168.0.100(C0A80064)の場合。)
[root@vmserver ~]# cat /tftpboot/linux-install/pxelinux.cfg/C0A80064
default Fedora-8-Diskless

label Fedora-8-Diskless
    kernel Fedora-8-Diskless/vmlinuz
    append  initrd=Fedora-8-Diskless/initrd.img root=/dev/ram0 init=disklessrc NFSROOT=192.168.0.1:/tftpboot/f8 ramdisk_size=20920 ETHERNET=eth0 SNAPSHOT=

クライアントの起動

以上で、*ほぼ*サーバでの設定が出来たのでクライアントに電源を入れてPXEブートをさせる。しかし、期待に反して"Could not find kernel image"というメッセージと共にブートができない。