
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
答え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