現在、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を強制的に共有をマウントする方法を見つけたら、答えを更新します。