戻る | 進む | 目次

Diskless NetBSD HOW-TO, tftpd サーバーの設定

TFTP (Trivial File Transfer Protocol) は、いくつかのベンダーのマシンの ブート rom がブートローダーやカーネルをダウンロードするために使います。 このサービスは TCP/IP 上で動くので、クライアントはまず IP アドレスを、 大抵は rarpbootp または dhcp から得なければなりません。

はじめに、あなたがどのホストからも TCP wrapper 経由のアクセスを 拒否されていないことを確認する必要があります。 /etc/hosts.deny/etc/hosts.allow の tftp のエントリーを調べてください。これらのファ イルで tftp のアクセスを制限している場合、 hosts.deny の tftp のエントリーをコメントアウトするか、 hosts.allow にクライアントのエントリーを追加する必要があります。

次に、クライアントのアーキテクチャー別の序説にあるとおり、 そのアーキテクチャーに必要なファイルをすべて /tftpboot にコピーします。 たとえば、クライアントが sparc で IP アドレスが 192.168.1.10 の場合、次のようにします:

# mkdir -p /tftpboot
# cp /export/client/root/usr/mdec/boot /tftpboot/C0A8010A.SUN4C

注意: いくつかの tftp デーモンは /tftpboot への chroot をサポートしませんので、 bootparamsbootpd、 または dhcpd に ブートローダーの完全なパスを与える必要があります。 ネットワークからうまくブートできないことで悩まないよう、あらかじめ tftp(1) クライアントをテストに使うことをおすすめします。

もし、どうしても失敗する場合は、 /tftpboot/C0A8010A.SUN4C へのリクエストが chroot された tftpd 上でうまくいくように ディレクトリーを設定するとよいかもしれません。

# cd /tftpboot
# ln -s . tftpboot

NetBSD での tftpd の設定
OpenBSD での tftpd の設定
FreeBSD での tftpd の設定
Mac OS X と Darwin での tftpd の設定
Linux での tftpd の設定 (inetd.conf を使用)
Linux での tftpd の設定 (xinetd.conf を使用)
NEXTSTEP での tftpd の設定
HP-UX での tftpd の設定

[もし、これら以外のプラットフォームについて詳しくご存じなら、 ぜひお知らせください]


NetBSDOpenBSD

  1. /etc/inetd.conf から下記の行の # を削除します:
    tftp            dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -s /tftpboot

  2. この行は最後が /tftpboot で終わっていなければなりません。

  3. # ps -aux | grep inetd
    kill -HUP でプロセスに /etc/inetd.conf を読み直させます。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

nfs の設定に進む。


FreeBSD

  1. /etc/inetd.conf から下記の行の # を削除します:
    tftp   dgram   udp     wait    nobody  /usr/libexec/tftpd      tftpd /tftpboot

  2. この行は最後が /tftpboot で終わっていなければなりません。

  3. # ps -aux | grep inetd
    kill -HUP でプロセスに /etc/inetd.conf を読み直させます。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

nfs の設定に進む。


Mac OS X と Darwin

このシステムでは、その本質的にクラスター化された性質から、 tftpd ファイル群を /private/tftpboot に置くことが推奨されます。 新しいバージョンの OS では、 tftpd サービス用に inetd ではなく xinetd を使っています。 Mac OS X 10.2.X 以前や Darwin 6.X 以前を使っている場合は、 inetd 用の説明に従ってください。

  1. # mkdir -p /private/tftpboot

  2. (xinetd) # /sbin/service tftp start

  3. (inetd)
  4. /etc/inetd.conf を編集し、 下記の行の # を削除します:
    tftp    dgram   udp     wait    nobody  /usr/libexec/tcpd               tftpd /private/tftpboot

  5. (inetd)この行は最後が /private/tftpboot で終わっていなければなりません。
    tftpd(8) マニュアルページでは -schroot(2) フラグをサポートしているとありますが、それでも permission の問題があります。

  6. # ps aux | grep inetd
    kill -HUP でプロセスに /etc/inetd.conf を読み直させます。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

nfs の設定に進む。


Linux (inetd.conf を使用)

  1. /etc/inetd.conf から下記の行の # を削除します:
    tftp  dgram   udp     wait    nobody  /usr/sbin/tcpd  in.tftpd /tftpboot

  2. この行は最後が /tftpboot で終わっていなければなりません。

  3. # ps aux | grep inetd
    kill -HUP でプロセスに /etc/inetd.conf を読み直させます。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

状況によっては、 tftp サーバーに静的な ARP エントリーを指定する必要があります。クライアントが tftp でブートローダーを取得しようとして、 取得がまったくできない場合は、これが必要かもしれません。 この現象が起きるのは、 tftpd が Linux サーバーで動いている場合のようです。 Linux では、以下のようにして ARP エントリーを追加します。

# arp -s 192.168.1.10 aa:bb:cc:dd:ee:ff
引数の IP アドレスと MAC アドレスは、いずれもクライアントのアドレスです。

nfs の設定に進む。


Linux (xinetd.conf を使用)

xinetd はデフォルトでは使われないことに注意してください。 これは Debian 2.1 向けの説明です。

  1. # adduser tftp

  2. # vi /etc/shadow して、ユーザー tftp のパスワードを * にします。

  3. /etc/xinetd.conf に下記のエントリーを追加します:
    service tftp
    {
            socket_type = dgram
            protocol = udp
            wait = yes
            user = tftp
            server = /usr/sbin/in.tftpd
            server_args = -l /tftpboot
            only_from = client.test.net
    }

  4. # ps aux | grep xinetd
    kill -HUP でプロセスに /etc/xinetd.conf を読み直させます。

この tftpd は、任意の unix マシン (only_from 行に書かれているものとします)を使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

状況によっては、 tftp サーバーに静的な ARP エントリーを指定する必要があります。クライアントが tftp でブートローダーを取得しようとして、 取得がまったくできない場合は、これが必要かもしれません。 この現象が起きるのは、 tftpd が Linux サーバーで動いている場合のようです。 Linux では、以下のようにして ARP エントリーを追加します。

# arp -s 192.168.1.10 aa:bb:cc:dd:ee:ff
引数の IP アドレスと MAC アドレスは、いずれもクライアントのアドレスです。

nfs の設定に進む。


NEXTSTEP

注意: NEXTSTEP では、 tftp でサービスされるファイルの置き場として /private/tftpboot を使います。 ブートローダーをこのディレクトリーに置くよう注意してください。

  1. /etc/inetd.conf から下記の行の # を削除します:
    tftp    dgram   udp     wait    root    /usr/etc/tftpd          tftpd -s /private/tftpboot
    

  2. この行は最後が /private/tftpboot で終わっていなければなりません。

  3. # ps -aux | grep inetd
    kill -HUP でプロセスに /etc/inetd.conf を読み直させます。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

nfs の設定に進む。


HP-UX

  1. /etc/passwd を編集して、 tftpd アカウント用の新しいユーザーを作ります:
    tftp:*:9999:9999:tftp server:/tftpboot:/bin/false

  2. /etc/inetd.conf から下記の行の # を削除します:
    tftp         dgram  udp wait   root /etc/tftpd    tftpd
    HP-UX 10 では、 /etc/tftpd/usr/lbin/tftpd にします。

  3. # inetd -c
    これで、 inetd プロセスが設定ファイルを読み直します。

この tftpd は、任意の unix マシンを使って次のようにテストできます:

# tftp tftpserver.test.net
tftp> get C0A8010A.SUN4C
Received 683 bytes in 0.3 seconds
tftp> quit
ここでは、sparc のカーネル名 C0A8010A.SUN4C を使って ファイルをゲットするテストをしています。

nfs の設定に進む。


戻る | 進む | 目次
NetBSD ホームページ
NetBSD Documentation top level

(連絡先 - 英語, 日本語: www@jp.NetBSD.org)
$NetBSD: tftpd.html,v 1.3 2007/08/01 15:36:03 kano Exp $
Copyright © 1998-2004 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.