NFS経由でrootfsをマウントしようとしています。次のカーネル構成を有効にしました。
CONFIG_NFS_FS=y (NFS support)
CONFIG_IP_PNP=y (configure IP at boot time)
CONFIG_ROOT_NFS=y (support for NFS as rootfs)
これは私のカーネルコマンドラインです。
debug nfsrootdebug loglevel=8 console=ttymxc1,115200 imx-fbdev.legacyfb_depth=32 consoleblank=0 ip=10.42.102.244:10.42.102.5::255.255.255.0::eth0: root=/dev/nfs nfsroot=10.42.102.5:/srv/nfs/dc10,v3,tcp noinitrd
開始メッセージの関連部分は次のとおりです。
libphy: 63fec000.etherne:01 - Link is Up - 100/Full
IP-Config: Complete:
device=eth0, hwaddr=00:d0:93:2a:6c:8e, ipaddr=10.42.102.244, mask=255.255.255.0, gw=255.255.255.255
host=10.42.102.244, domain=, nis-domain=(none)
bootserver=10.42.102.5, rootserver=10.42.102.5, rootpath=
ALSA device list:
#0: imx53-mba53-sgtl5000
Freeing init memory: 6332K
Welcome to Buildroot 2013.05!
RPC通信とnfsを介したVFSマウントの行を表示すると予想しましたが、「debug」、「nfsrootdebug」、および「loglevel = 8」はカーネルパラメータとして提供されるため、何もなくエラーメッセージは印刷されません。
nfsサーバー側でtcpdumpを使用してパケットが送信されないことを確認しました。
ボードが起動したら、sshを使用してnfs-serverを実行しているコンピュータに接続できます。
何が間違っているか、またはそれをさらにデバッグする方法について提案がある人はいますか?
答え1
特にARMで作業したことはありませんが、通常NFSルートの場合、コマンドラインは次のようになりますroot=nfs:[Server IP]:/[Directory],[options]
(あなたにとってはそうですroot=nfs:10.42.102.5:/srv/nfs/dc10,v3,tcp
)、initrdはルート情報を解析します。 using はroot=/dev/nfs
通常、使用されなくなりました。ファイルは/dev/nfs
インストール中に実際には使用されず、NFSを使用する必要があるというヒントですが、最新のinitrdに常に存在するわけではありません。
コマンドラインでを使用していることを確認しましたnoinitrd
。これには理由がありますか? initrdの役割は、ルートパーティションマウントの柔軟性を高めることであり、このシナリオ(内部HDではなくルートデバイスマウント)に非常に適しています。
また、カーネルコマンドラインがローカルディスクのパーティションから出ていますか?それともディスクがないシステム(NFSルートでPXEブート)ですか?可能であれば、何が起こっているのかを確認するためにデバッグするときにローカルディスクを削除すると便利です。ただし、boot
カーネルコマンドラインがローカルディスクのパーティションから出る場合、実現可能性は低くなります。