[FreeBSD-users-jp 95743] Re: Linuxサーバからのpxeboot

zensyo @ inetd.co.jp zensyo @ inetd.co.jp
2016年 4月 11日 (月) 02:54:55 UTC


鈴木@葛飾区です。

その後時間が取れましたのでFreeBSDの/boot/pxebootの方にデバッグメッセー
ジを仕込んで問題点を探ってみました。
その結果、pxebootがUDPでrpcの要求を送信して帰ってきた応答パケットの受
信がエラーになってしまって先に進まなかったことがわかりました。

/sys/boot/i386/libi386/pxe.c の readudp() で、PXEのROMに入っているAPI
を使ってUDPの受信を行っているようなのですが、ここでUDPパケットのディス
ティネーションアドレスとして自分のIPを指定していると宛先がそのIP以外の
場合エラーとなるようです。

        udpread_p->dest_ip        = h->myip.s_addr; ← ここ
	udpread_p->d_port         = h->myport;
	udpread_p->buffer_size    = len;
	udpread_p->buffer.segment = VTOPSEG(data_buffer);
        udpread_p->buffer.offset  = VTOPOFF(data_buffer);
		
本来であればこれで問題無いものと思うのですが、IntelのPXEのドキュメント
によると、これは指定しなければ何でも受け取るようですのでためしに指定し
ない(udpread_p->dest_ip=の行を削除)ようにしてみたところ、NFSのマウント
に成功して起動することができました。

ただ、疑問なのはNFSサーバがFreeBSDの場合元のコードでも問題無いことで、
根本的原因解明まではできませんでした。

クライアントのPXEのROMにもよるのかとも、思いますがとりえあえず
SuperMicroのマザーボードオンボードのIntelのPXEとVMware ESXi6.0の仮想マ
シン上のE1000アダプター(Intel=em)と、フレキシブルアダプター(AMD=lnc)の
3つで同じ結果でした。

バグレポートは出しておいたのですが、いまいち拙いレポートでうまく伝わる
か、また、pxe + Linux NFSというあまり関心が高そうにも思えない点で改善
してもらえるか心配なところです。
(さっそく、レポートのカテゴリーを間違えたようで訂正されていました。。。)

とりあえずはご報告まで。

From: zen-freebsd-users @ suzuki.que.ne.jp
Subject: [FreeBSD-users-jp 95714] Re: Linuxサーバからのpxeboot
Date: Fri, 01 Apr 2016 13:31:24 +0900 (JST)
Message-ID: <20160401.133124.2289014485931258386.inetd @ x.inetd.co.jp>

> 松元様
> 
> お返事ありがとうございます。鈴木@葛飾です。
> 
>> もしかしてSunRPCサービスが動いてないとか?
> 
> rpc関連は動作しております。いちおう、どういう応答かはわかりませんが、
> 応答パケットも返っています。
> 動いていなかったときはicmp unreachable portを返していたのでその点は大
> 丈夫だと思います。
> 
> 起動したFreeBSDからはマウントできますので、pxebootの中の機能限定版NFS
> クライアントとの相性が悪いのだと思いますが、サーバー側で合わせられない
> ものかと思っております。
> ---
> すずき
> _______________________________________________
> freebsd-users-jp @ freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe @ freebsd.org"
> 


freebsd-users-jp メーリングリストの案内