続いて、inetdのTFTPの項目の設定を行います。/tftpbootこんな感じで編集。上の例は、/tftpboot以下を転送する前提で設定しています。restart設定後、inetdを再起動させます。DHCPサービスのインストール&設定こいつも同様にaptでインストールします。dhcp3-server続いて、DHCPサービスの設定を実施。"pxelinux.0";}こんな感じで編集。注意点としては、DHCPサービスは設定を間違えると、場合によってはLAN内に大きなインパクトを与えてしまうため、PXEブート用のセグメントのみで有効となるよう設定を施します。上記の設定例で、next-serverは自分自身(DHCPサーバ)のIPアドレス。filenameは、PXEブート用のブートローダとなるファイル(今回は、pxelinux.0のままでOK)とします。ちなみに、DHCPサービスでMACアドレスに応じて、固定でIPアドレスを割り振りたい場合は、以下のような感じで定義しておきます。上記の設定の下にでも、貼り付けておけばOKです。"pxelinux.0";}これは、"hostname"ってマシンのMACアドレスに対して、"10.2.2.128"ってIPアドレスを割り振る例です。MACアドレスは事前に調べておきましょう。あと、ここにはIPアドレスを直に書かず、/etc/hostsでホスト名とあわせて管理し、ここにはホスト名を記載するのがオススメです。startんで、DHCPサービスを起動させます。NFSサービスのインストール&設定これまた同様にaptでインストールします。nfs-kernel-serverインストール後、NFSマウントを許可するパスおよびホスト/ネットワークの設定を行います。10.2.2.0/255.255.255.0(rw,no_root_squash)こんな感じで設定。私の場合、ルートファイルシステムの共有をPXEブートを実施したネットワークセグメントで行う設定にしました。上記の10.2.2.0/24というセグメントがそれに当たります。start設定後、NFSサービスを起動します。ルートファイルシステムの作成Debianなので、もちろんdebootstrapを使います。http://ftp.jp.debian.org/debiandebootstrapで、"/tftpboot/Linux"に、ルートファイルシステムを作成。"/tftpboot/Linux"をルートファイルシステムとし、ここをNFS経由で共有する前提とします。その後、ホスト名やNICの設定など、必要な設定をあらかじめルートファイルシステム内の設定ファイルに書き込んでおきます。/tftpboot/Linuxルートファイルシステムがある場所にcdして、下記の4ファイルを書き換えます。etc/hostnameホスト名の設定。この辺は任意の値を設定しましょう。xxx.xxx.xxx.xxxネットワークの設定。このあたりも環境にあわせて設定しましょう。一応、私が設定した値を例として載せておきます。マスキングしたら、分かりづらい感じになってしまいました。eth1は、PXEブート用に使っていて、ブート時に割り振られるため、OS側では設定しません。etc/hostshostsの設定。このあたりも環境にあわせて設定。0今回、NFS-rootを使うので、それに合わせて上記のように設定します。ルートファイルシステムを置くNFSサーバのアドレスは、構築する環境にあわせてください。上記の例だと、NFSサーバのIPアドレスが10.2.2.1となり、ルートファイルシステムのあるパス、つまりNFSマウントするべきパスが/tftpboot/Linuxとなります。カーネルの作成(コンパイル)さて、今回NFS-rootを用いるので、それに対応したカーネルが必要となります。initrdを使ってみましたが、ダメでしたので、下記の様な感じで作成。libncurses-devカーネルコンパイル時に上記あたりのパッケージがないと怒られちゃうので、あらかじめaptでインストールしておきます。/tftpboot/Linux/usr/src/linux-2.6.23/私は、自分が作業したときの最新版のカーネルをコンパイルしました。この辺は好みに合わせて。今のkernel2.6系の最新版は2.6.24ですね。menuconfigで、テキストレベルの設定ファイル(.config)を編集しても良いのですが、メニュー画面に設定を実施します。私が行った設定は以下。support"にチェック上から5つ目くらいまでは、基本的にチェックが必要かと思います。それ以外は、使っているハードウェアによりけりですので、必要に応じて選択してください。それを思うと、ハードウェアの自動判別機能ってすごいと思うなぁ。make設定が終わった後は、コンパイル実施。/tftpboot/Linux/boot/System.map-2.6.23コンパイル後は、出来上がったbzImageとSystem.mapを上記のような感じで、ルートファイルシステムのbootディレクトリ以下にコピーします。PXEブート用の設定PXEブート用のブートローダを用意します。syslinuxまずは、aptでsyslinuxをインストール。/tftpboot事前に、TFTPで/tftpboot以下を転送するよう設定&DHCPでTFTP経由で転送するファイル名を設定してあるので、pxelinux.0ファイルを/tftpboot直下に配置します。/tftpboot/pxelinux.cfg/defaultで、起動パラメータを記す設定ファイルを編集します。0構築した環境、ファイル名にあわせた設定としましょう。PXEブート用の設定ファイルを編集したところで、PXE用の設定は完了。構築完了ここまで設定が完了したら、ディスクレスサーバの電源を入れ、PXEブート後、NFSマウントを実施することで、OSが起動する・・・はずです。この方法では、サーバ自体はディスクレスとなりますが、ルートファイルシステム自体は別筐体のディスクをマウントすることとなりますので、耐障害性はそれほど高くなりません。ストレージ等が高価で頑丈なら話は別ですが。次回は、ルートファイルシステムを完全にオンメモリで持たせる耐障害性の高いサーバを構築する方法を書き記したいと思います。VPCを触り始めてみました。upg...2008-04-26学生時代のシステム管理経験を棚卸ししてみようと思います。読者になる@namikawaをフォローこのブログについてメールアドレス執筆・講演依頼や、その他ご連絡は、以下のメールアドレスまでお願いします。お問い合わせ引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。