Atmel Sama5d2xplained で NFS ブートが失敗します。

Atmel Sama5d2xplained で NFS ブートが失敗します。

現在、NFSサーバーからAtmel Sama5d2 Xplained評価ボードを起動しようとしています。私はDebian 9を実行しており、カーネルバージョンは4.9.0で、nfsサーバーはnfs-kernel-serverです。

NFS サーバー構成です。

/srv/tftp/xplained/rootfs *(rw,nohide,no_subtree_check,async,no_root_squash)

私のNFSサーバーはネットワーク経由で別のLinuxにフォルダをマウントできるため、自分のフォルダを正常にエクスポートできます。

TFTPサーバーからカーネルイメージとdtbファイルを検索することもできます。

ただし、カーネルが起動すると、エクスポートされたrootfsから起動できず、次のエラーが返されます。

VFS: Unable to mount root fs via NFS, trying floppy. 
List of all partitions: 
0100            8192 ram0  (driver?) 
0101            8192 ram1  (driver?) 
0102            8192 ram2  (driver?) 
0103            8192 ram3  (driver?) 
b300         3833856 mmcblk0  driver: mmcblk   
  b301          112172 mmcblk0p1 00000000-01   
  b302         3721550 mmcblk0p2 00000000-02 
b318             128 mmcblk0rpmb  (driver?) 
b310 1024 mmcblk0boot1  (driver?) 
b308            1024 mmcblk0boot0  (driver?) 
No filesystem could mount root, tried:  nfs

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

私のカーネルパラメータは次のとおりです。

ip=dhcp console=ttyS0,115200 earlyprintk root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs

そしてnfs-moutdサービスのdmesg

oct. 09 18:10:13 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:788 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:18 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:704 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:28 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:796 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)
oct. 09 18:10:48 PC325 rpc.mountd[566]: authenticated mount request from 192.168.128.158:762 for /srv/tftp/xplained/rootfs (/srv/tftp/xplained/rootfs)

ファイアウォールルールの確認、ポートロックなど、インターネットで見つけた多くの方法を試しましたが、まだ機能しません。最も奇妙なことは、Ubuntuシステムで同じパケットを試しましたが、うまくいったことです。
私も新しいDebianのインストールを試してみましたが、それも動作しました。

私の開発コンピュータで動作しない理由を知りたいです。どうすれば修正できますか?

答え1

Manjaro Linux(アーチベース)の実行中に同じ問題が発生しました。 Ubuntu 14.04では動作しますが、manjaroでは動作しません。 Wiresharkキャプチャを実行した後、問題が明らかになりました。 nfsサーバーが「ステータス承認:リモートはバージョン#(2)をサポートできませんでした」と応答しました。次のように、nfsサーバーの/etc/nfs.confでバージョン2を有効にしました。

[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# udp=y
# tcp=y
vers2=y
vers3=y
vers4=y
vers4.0=y
vers4.1=y
vers4.2=y
# rdma=n
#

これは私にとって効果的です。

答え2

@alanSchmitzのお​​かげで、いくつかの調査の最後についに問題を発見しました。

明らかに、次のようにカーネルブートパラメータにNFS v3を指定してubootでNFS v3を強制する必要があります。root=/dev/nfs rootfstype=nfs rw nfsroot=<server_ip>:/srv/tftp/xplained/rootfs,vers=3

サーバー側でこの問題を解決しようとしましたが、NFS v3を強制する方法が見つかりませんでした。

サーバー側でNFS v3を強制的に共有をマウントする方法を見つけたら、答えを更新します。

関連情報