TFTPサーバーからファイルをコピーする

TFTPサーバーからファイルをコピーする

tftp私の知る限り、サーバーがブートに使用される場合pxe、クライアントはサーバーにリクエストを送信し、サーバーはいくつかのファイル (initrd、kernel、config など) を返します。サーバーは、クライアントの IP アドレスに応じて、クライアントに送信するファイルを決定できます。クライアントは、それらのファイルの URL を認識しません。

私の質問は次のとおりです:

サーバーをテストしたいと思います。サーバーに接続し、ファイルを受信し、それらのファイルをディスクに保存するtftpコマンドまたは (単純な) スクリプトを実行したいと思います。tftp

言い換えれば、私がやりたいことは次のとおりです。

  • サーバー側では違いはありません。サーバーはクライアントがPXE経由で起動したいと考え、ファイルをクライアントに送信します。

  • クライアント側: クライアントは実際には起動しません。 ファイルをディスクにコピー (保存) するだけです。

これを行う最も簡単な方法は何でしょうか?

答え1

@Patrick さんがあなたの質問に対してしたコメントはまさにその通りです。クライアントマシンが PXE をブートストラップするために必要なのは、DHCP 要求をブロードキャストすることだけです。DHCP サーバー (通常は PXE ブートサーバー上) はクライアントデバイスの MAC アドレスを確認し、それを使用して

  • クライアントにIPアドレスを与える
  • PXEサーバーから取得するファイルをクライアントに伝える

その時点で、クライアントはサーバーのアドレスと、そこから取得する内容を認識します。残念ながら、PXE クライアント用の特別な構成を持つ DHCP サーバーは 1 つしか存在できない、TFTP サーバーが稼働している必要があるなど、面倒なことがたくさんあります。

非常に良いステップバイステップガイドがありますhttps://wiki.debian.org/PXEBootInstallディストリビューションを指定していませんが、ほとんどの PXE システムは少なくともそのガイドに準拠します。

質問では、PXE サーバーのアドレスを知りたくないとおっしゃっていることは承知しています。しかし、PXE クライアント DHCP リクエスター/プロセッサーを使用する (独自のクライアントを作成せずに) 方法は 1 つしかありません。その部分を省略すると、ブートストラップに必要な機能の多くを放棄することになります。

マシンを実際に起動したくないのはわかっていますが、テスト目的で多くの PXE プロトコルを実装することになります。スクラッチ マシンが利用できない場合は、なぜ PXE をテストする必要があるのか​​疑問に思います。

答え2

実際のクライアントを使用してみてはいかがでしょうかtftp?

頭に浮かぶのは次の2つです。

答え3

私が最もよく知っているのは靴屋TFTPを設定するので、これが関連しているかどうかはわかりませんが、とにかくこの情報を提供します。Cobblerは、次のようにブートローダーを設定しますpxelinux.0@Patrickがコメントで説明している同様にムスワpxelinux.cfg/ただし、サーバーに接続する各システムの MAC アドレスを含む対応するディレクトリも同時に設定されます。

これらのファイルにはpxelinux.cfg次のようなファイル情報が含まれています。

$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
        kernel /images/Centos56-x86_64/vmlinuz
        ipappend 2
        append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang=  console=ttyS0,115200 text serial kssendmac  ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest

この VM が起動する実際の Linux カーネルは、この TFTP アクセス可能なディレクトリに含まれています。/images/Centos56-x86_64/vmlinuzサーバーの背面から見た TFTP ディレクトリ構造全体は次のようになります。

$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root   4096 Jun 22  2011 etc
drwxr-xr-x 2 root root   4096 Jul  9  2012 grub
drwxr-xr-x 6 root root   4096 Jul  9  2012 images
drwxr-xr-x 2 root root   4096 Jun 30  2011 images2
-rw-r--r-- 1 root root  20020 Jul  9  2012 memdisk
-rw-r--r-- 1 root root  39188 Jul  9  2012 menu.c32
drwxr-xr-x 2 root root   4096 Jun 22  2011 ppc
-rw-r--r-- 1 root root  14716 Jul  9  2012 pxelinux.0
drwxr-xr-x 2 root root   4096 Jul  9  2012 pxelinux.cfg
drwxr-xr-x 2 root root   4096 Jul  9  2012 s390x
-rw-r--r-- 1 root root 198192 Jul  9  2012 yaboot

この TFTP サーバーに対して起動しているサーバーが最初にアクセスできるのは、他の人が説明しているように、pxelinux.0特定のサーバーの MAC アドレスに対応する構成ファイルだけです。

画像ディレクトリ

興味があれば、次のようになります:

$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
|   |-- initrd.img
|   `-- vmlinuz
|-- Centos56-xen-x86_64
|   |-- initrd.img
|   `-- vmlinuz
`-- Centos60-x86_64
    |-- initrd.img
    `-- vmlinuz

3 directories, 6 files

関連情報