この記事では、必要なパッケージのインストールを含む tftpboot のセットアップ方法と tftpboot 構成について説明します。
TFTP ブート サービスは主に、物理的にアクセスできないリモート マシンで OS のインストールを実行するために使用されます。 OS のインストールを正常に実行するには、wakeonlan を使用するか、誰かが手動で再起動するか、その他の方法で、リモート サーバーを再起動する方法が必要です。
これらのシナリオでは、それに応じて tftpboot サービスをセットアップし、OS のインストールをリモートで実行できます (OS のインストール手順を自動化するには、autoyast 構成ファイルが必要です)。
段階的な手順を示します。この記事では、64 ビット アーキテクチャの SLES10-SP3 について説明します。ただし、これらの手順は他の Linux ディストリビューションとほとんど同じです。
必要なパッケージ
tftpboot セットアップには、次のパッケージをインストールする必要があります。
- dhcp サービス パッケージ:dhcp-3.0.7-7.5.20.x86_64.rpm および dhcp-server-3.0.7-7.5.20.x86_64.rpm
- tftpboot パッケージ:tftp-0.48-1.6.x86_64.rpm
- pxeboot パッケージ:syslinux-3.11-20.14.26.x86_64.rpm
パッケージのインストール
dhcp サーバー サービスのパッケージをインストールします。
$ rpm -ivh dhcp-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh dhcp-server-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh tftp-0.48-1.6.x86_64.rpm $ rpm -ivh syslinux-3.11-20.14.26.x86_64.rpm
syslinux パッケージをインストールすると、pxelinux.0 ファイルが /usr/share/pxelinux/ ディレクトリの下に作成されます。これは、インストール カーネルと initrd イメージをクライアント マシンにロードするために必要です。
パッケージが正常にインストールされたことを確認してください。
$ rpm -qa | grep dhcp $ rpm -qa | grep tftp
それぞれの Linux ディストリビューションのリポジトリから適切な tftpserver をダウンロードします。
tftpboot のセットアップ手順
ステップ 1:/tftpboot ディレクトリを作成する
以下に示すように、ルート ディレクトリ ( / ) の下に tftpboot ディレクトリを作成します。
# mkdir /tftpboot/
ステップ 2:pxelinux イメージをコピーする
syslinux パッケージをインストールすると、PXE Linux イメージが利用可能になります。以下に示すように、これを /tftpboot パスにコピーします。
# cp /usr/share/syslinux/pxelinux.0 /tftpboot
ステップ 3:ISO のマウント ポイントを作成し、ISO イメージをマウントする
リモート サーバーに SLES10 SP3 Linux ディストリビューションをインストールするとします。 SUSE10-SP3 DVD がある場合は、それをドライブに挿入するか、お持ちの ISO イメージをマウントします。ここでは、iso イメージが次のようにマウントされています。
# mkdir /tftpboot/sles10_sp3 # mount -o loop SLES-10-SP3-DVD-x86_64.iso /tftpboot/sles10_sp3
ISO ファイルをマウントして表示する方法に関する以前の記事を参照してください。
ステップ 4:vmlinuz および initrd イメージを /tftpboot にコピーする
以下に示すように、initrd を tftpboot ディレクトリにコピーします。
# cd /tftpboot/sles10_sp3/boot/x86_64/loader # cp initrd linux /tftpboot/
ステップ 5:pxelinux.cfg ディレクトリを作成する
/tftpboot の下にディレクトリ pxelinux.cfg を作成し、クライアントの pxe ブート定義を定義します。
# mkdir /tftpboot/pxelinux.cfg # cat >/tftpboot/pxelinux.cfg/default default linux label linux kernel linux append initrd=initrd showopts instmode=nfs install=nfs://192.168.1.101/tftpboot/sles10_sp3/
次のオプションは、
- kernel – TFTP サーバー上の Linux インストール カーネルの場所を指定します。
- install – インストール カーネルに渡すブート引数を指定します。
上記のエントリに従って、nfs インストール モードは、インストール RPM と構成ファイルの提供に使用されます。そのため、エクスポートされたリストに /tftpboot ディレクトリがあるこのマシンで nfs をセットアップします。 autoyast 構成ファイルに「autoyast」オプションを追加して、OS のインストール手順を自動化できます。それ以外の場合は、インストール手順を手動で実行する必要があります。
ステップ 6:/tftpboot ディレクトリの所有者と権限を変更する
nobody:nobody を /tftpboot ディレクトリに割り当てます。
# chown nobody:nobody /tftpboot # chmod 777 /tftpboot
ステップ 7:/etc/dhcpd.conf を変更する
以下に示すように、/etc/dhcpd.conf を変更します。
# cat /etc/dhcpd.conf ddns-update-style none; default-lease-time 14400; filename "pxelinux.0"; # IP address of the dhcp server nothing but this machine. next-server 192.168.1.101; subnet 192.168.1.0 netmask 255.255.255.0 { # ip distribution range between 192.168.1.1 to 192.168.1.100 range 192.168.1.1 192.168.1.100; default-lease-time 10; max-lease-time 10; }
/etc/syslinux/dhcpd でインターフェイスを指定して、クライアントからの dhcp リクエストをリッスンします。
# cat /etc/syslinux/dhcpd | grep DHCPD_INTERFACE DHCPD_INTERFACE=”eth1”;
ここで、このマシンの eth1 デバイスの IP アドレスは 192.168.1.101 です。したがって、上記のように DHCPD_INTERFACE に eth1 を指定します。
関連して、ifconfig を使用してネットワーク インターフェイスを構成する 7 つの例に関する以前の記事を参照してください。
ステップ 8:/etc/xinetd.d/tftp を変更する
/etc/xinetd.d/tftp ファイルを変更して、以下を反映させます。デフォルトでは、disable パラメータの値は「yes」です。必ず「no」に変更してください。また、server_args エントリを -s /tftpboot に変更する必要があります。
# cat /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no }
ステップ 9:/etc/xinetd.conf を変更しない
etc/xinetd.conf ファイルを変更する必要はありません。 xinetd.conf ファイルで指定されたデフォルト値を使用してください。
ステップ 10:xinetd、dhcpd、および nfs サービスを再起動する
以下に示すように、これらのサービスを再起動します。
# /etc/init.d/xinetd restart # /etc/init.d/dhcpd restart # /etc/init.d/nfsserver restart
nfs サービスを再起動した後、次のコマンドでエクスポートされたディレクトリ リスト (/tftpboot) を表示できます。
# showmount -e
最後に、tftpboot セットアップの準備が整い、BIOS 設定で最初の起動デバイスを「ネットワーク」に変更した後、クライアント マシンを起動できるようになりました。
tftp エラーが発生した場合は、tftpd サービスからいくつかのファイルを取得してトラブルシューティングを行うことができます。
tftp サーバーからいくつかのファイルを取得して、tftp クライアントを使用して tftp サービスが正しく機能していることを確認します。 sample.txt ファイルが /tftpboot ディレクトリの下にあると仮定しましょう。
$ tftp -v 192.168.1.101 -c get sample.txt