ここに古いマシンがあり、OpenBSDを実行しているディスクレスクライアントとしてセットアップしようとしています。Fedora10マシンから起動します。
Tftpとdhcpをセットアップしましたが、どちらも正しいようですが、クライアントはpxebootを読み込もうとしてタイムアウトしました。
# /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -vv
per_source = 11
cps = 100 2
flags = IPv4
}
[root@blueblock ~]# ls -la /tftpboot/
total 12100
drwxrwxrwx 2 root root 4096 2009-07-25 03:12 .
drwxr-xr-x 26 root root 4096 2009-07-25 02:41 ..
-rwxrwxrwx 1 root root 6696212 2009-02-28 22:41 bsd
-rw-r--r-- 1 root root 5592688 2009-02-28 22:41 bsd.rd
-rwxrwxrwx 1 root root 53276 2009-02-28 22:41 pxeboot
# /etc/dhcpd.conf
Host longshot {
hardware ethernet 00:0b:db:07:83:35;
fixed-address 10.0.2.21;
next-server 10.0.2.5;
option root-path "/tftpboot/";
filename "pxeboot";
}
ネットワーク上の他のマシンからtftpサーバーに接続して、pxebootファイルを正常に取得できます。
クライアントは正しいIPアドレス設定を取得しており、tftpサーバーに接続していることがわかります。
Jul 25 04:11:51 localhost dhcpd: DHCPDISCOVER from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:51 localhost dhcpd: DHCPOFFER on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPREQUEST for 10.0.2.21 (10.0.2.5) from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPACK on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost in.tftpd[1457]: RRQ from 10.0.2.21 filename pxeboot
Jul 25 04:11:53 localhost in.tftpd[1457]: tftp: client does not accept options
Jul 25 04:11:53 localhost in.tftpd[1458]: RRQ from 10.0.2.21 filename pxeboot
ここで見逃した簡単なことはありますか?または、問題の診断を試みるために他にできることはありますか。
編集: pxebootファイルとbsdファイルを持っていたopenbsdマシンに置き、next-serverをこのマシンのipaddressに変更し、tftpサーバーを有効にして、クライアントを最初に起動しました。
netkit tftp server をビルドしましたが、これはpxebootファイルで初めて機能しました。
このtftpサーバーはdebian/ubuntuでtftpd
としてパッケージ化されていますが、tftp-hpaサーバーを使用するFedoraではパッケージ化されていないようです。
これは、システムの起動に使用した作業構成です。
#/etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/local/sbin/in.tftpd
per_source = 11
cps = 100 2
flags = IPv4
}
#/etc/dhcpd.conf
Host longshot {
hardware ethernet 00:0b:db:07:83:35;
fixed-address 10.0.2.21;
next-server 10.0.2.5;
filename "pxeboot";
}
これはディスクレスクライアントだったので、カーネルがnfsを介してファイルシステムを使用できるようにbootparamsとrarpdが必要でした。これは、ramdiskカーネル(bsd.rd)を起動するために必要ではありません。
#/etc/bootparams
longshot root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap
10.0.2.21 root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap
#/etc/sysconfig/rarpd
OPTIONS="-e"
INTERFACE="eth0"
# /etc/ethers
00:0b:db:07:83:35 10.0.2.21
# /etc/exports
/export/longshot 10.0.2.0/255.255.255.0(rw,no_root_squash,sync)
カトリエルは私が与えたであろう答えをすでに与えているので、代わりにもっと一般的なアドバイスをします...
注:これは元の質問(pxeクライアントを起動させる)には答えません。問題が解決した後の対処方法を示します。
使用しているpxebootプログラム(とにかくsyslinuxのpxelinuxプログラムの古いバージョン)の代わりに、 syslinux プロジェクトのgpxelinux.0を使用することを強くお勧めします。
名前に騙されないでください。gpxelinux.0は一般的なPXE bootstrapプログラムで、任意のオペレーティングシステムの起動に使用できます。Linux、Windows、Clonezillaなどの起動に使用します。フロッピーとCDの画像(ほとんどの場合、フロッピーにファームウェアが更新されたMS-DOS/Freedos画像-CDまたはフロッピーに更新を書き込んですべてのマシンに持ち運ぶのに勝るものはありません)。
他のpxeブートプログラムに対するgpxelinux.0の主な利点の1つは、tftpプロトコル以上のものを理解するため、カーネル、initramfs、その他の圧縮ファイルシステム、およびtftpではなくhttpまたはftpで他のものをフェッチできることです。これは非常に高速で、私の経験では、はるかに信頼性があります。実際のgpxelinux.0ファイルとそのデフォルトのcfgファイルは引き続きtftpで処理する必要があるため、tftpサーバーが必要です。
また、ブートオプションを手動でオーバーライドできる便利なコマンドラインオプションも含まれています(grubで実行できるのと同様)。
ブートイメージをhttpに切り替えるだけで、私が抱えていたネットブートの問題がほぼ解消されました(パス/ファイル名などのマイナーな構成の詳細を除くすべて)
私が最初に試みようとしているのは、tftpトラフィックをtcpdump
して、転送が実際に正常に完了しているかどうかを確認することです。もしそうなら、おそらくクライアントはpxeboot
ファイルを気に入らないでしょう-それは壊れているか、間違ったアーキテクチャであるか、そうでなければ適切ではありません。
howto 私が数年前に書いたものを見てください。 BSDの起動については説明していませんが、プロセス全体についてはかなり詳細に説明しています。おそらく、これは何が悪かったのかを見つけるのに役立ちます。
/tftpboot/pxeboot/pxeboot.cfg/defaultまたは同等の内容は何ですか?これには、カーネルとinitrd.img、場合によっては使用しているネットワークカードに関する情報が含まれている必要があります。