Linux でのネットワークブート – PXE

この記事は、ローカルかどうかにかかわらず、ネットワークを使用して Linux をブートおよびインストールするという主題を扱うという点で、前回の記事といくらか関連しています。 今回は、光学メディアやフロッピー、その他のリムーバブルメディアなしで、LAN を使用して Linux をインストールすることを扱います。 ネットワークには少なくとも2台のコンピュータが必要で、クライアントにはNICとPXEを使用できるBIOSが必要です。 最初から最後まで私たちが指導しますが、基本的なネットワークとLinuxの設定知識、それにお好みのエディターの使用が必要です。 PXE とは何か、DHCP サーバーの設定方法、クライアントがファイルにアクセスできるように TFTP サーバーを設定する方法、さらにいつものようにたくさんの興味深い事柄を学びます。 要するに、ほとんどの最新のネットワークカードとBIOSが持っている機能で、ハードディスクやCD-ROMから起動するのと同じように、LANからシステムを起動できるようにするものです。 PXEサポートはNICのファームウェアに存在する必要があり、BIOSで適宜設定されると、PXEサーバーからIPアドレスを取得し、必要なブートイメージをダウンロードすることができる。 IPアドレスを利用できるようにするには、サーバーがDHCPを提供しなければなりません。 IPアドレスがリースされた後、TFTPサーバー(DHCPサーバーと同じボックスでもよい)は必要なファイルをクライアントに渡し、ロード後にブートできるようにします。 これが全体のアイデアです。では、話を十分にして、仕事に取り掛かりましょう。 サーバーはネットワークカードを 2 枚搭載した Debian マシンで、インストールするディストリビューションも Debian、すなわち Squeeze、amd64 です。 他のディストリビューションを使用することもできますが、おそらくいくつかの設定ファイルの場所が異なるでしょう。 この記事では、実際にインストールするためのソフトウェアソースをどのようにセットアップするかについては扱いません。 動作する debian-installer を紹介するのみで、それ以上は触れません。 ローカルな Debian リポジトリのセットアップ方法や、Linux でゲートウェイを設定する方法については、たくさんのチュートリアルがあります。

そこでチェックリストですが、DHCP サーバ、TFTP サーバ、クライアントに転送する initrd とカーネルイメージが必要です。

 Outside world ------> Router ------> Switch ------>(eth0) Server(eth1) ------> Client

そこで、ルータは 192.168.0.x という形式で DHCP アドレスを提供します (小型の家庭用ルータです)。 サーバもDHCPアドレスを配るので、外部接続はeth0、クライアント用の内部接続はeth1です。 クライアントは、PXE サーバに直接接続する唯一のイーサネット接続を持っていますが、サーバを netinstall のゲートウェイとして設定したり、外部アクセスのためにクライアントに別の NIC を追加することができないわけではあり ません。 いろいろな可能性がありますが、目下の重要な問題は PXE 経由でのブートです。

SUBSCRIBE NEWSLETTER & RSS
Subscribe to RSS and NEWSLETTER and receive latest Linux news, jobs, career advice and tutorials.This information is the latest Linux news, jobs, career advice and tutorials.

TFTP

TFTP は Trivial File Transfer Protocol の略で、PXE で使用するファイル転送に関する事実上の「言語」となっています。 Debian では、このようにインストールします。

 # aptitude install tftpd-hpa

次に、適切に設定する必要があります。 まず最初に、この例では tftpd をスタンドアロンで動作させるので、xinetd は使いません。 xinetdを使うつもりなら、設定は異なるでしょうし、お勧めしません。 あとは /etc/default/tftpd-hpa を編集するだけです :

#make sure these lines are presentRUN_DAEMON=yesTFTP_OPTIONS="-l -s /var/lib/tftpboot"

上記のディレクトリが存在することを確認し、デーモンを起動しましょう :

 # mkdir -p /var/lib/tftpboot # /etc/init.d/tftpboot-hpa start

DHCP

ネットワーク経由でインストール作業を始める前にクライアントにアドレスを提供しなければならず、これは動的ホスト構成プロトコルを使用することによって行われます。 DHCPサーバーはアドレスのプールを持ち、要求されたときにそこからIPを提供します。

 # aptitude install dhcp3-server

ここで、etc/network/interfacesにあるeth1のネットワーク情報を設定する必要があります :

allow-hotplug eth1iface eth1 inet staticaddress 192.168.1.2netmask 255.255.255.0

ネットワークを再起動すれば、ほぼ完了です。

 # ifdown eth1 # ifup eth1

PXE の設定

ここでクライアントが要求するファイル、つまり必要なものを見つける方法を伝えるファイルを設定しなければなりません。 pxelinux.cfg ディレクトリを作成し :

 # mkdir /var/lib/tftpboot/pxelinux.cfg 

‘default’ という名前のファイルを作成して、以下の内容を記述します:

boot.txt ファイルへの参照があるので、それを /var/lib/tftpboot に作成し “squeeze_amd64_install” という行を追加してください。

さて、必要なファイルをクライアントが見つけられる場所にコピーします。

さて、すべてがうまくいけば、クライアントを起動し、ネットワークブートのための BIOS 設定を変更することができます。 最後に、私たちが選んだこのネットワーク設定について説明する必要があります。 ISPの接続を直接使って、ネットワーク(インターネット)にもアクセスできるようにするなど、もっと単純にすることもできたかもしれません。 このシナリオの PXE サーバは、DHCP から IP アドレス (eth0) を取得できないので、このセットアップはうまくいきません。 つまり、以下のような可能性があります。 ISPに直接接続する、ルータに固定IPだけを与えるように設定する、PXE/DHCP/TFTPサーバをゲートウェイにする、ローカルリポジトリを作成する、などです。 私たちは後者を選びました。それが私たちのトポロジーと目的に最も適しており、LAN上にWebサーバーをセットアップするだけだからです。 もし、ゲートウェイのiptablesやHTTPサーバーのapacheなど、すべての選択肢を説明していたら、この記事は巨大になっていたでしょう。 その代わり、私たちはタイトルに忠実であり、まさにそれを提供することを好みました。 NetbootCD のように、サーバーに必要なスペースがあれば、好きなだけディストリビューションを追加することができます。

コメントを残す

メールアドレスが公開されることはありません。