NFSサポートでカーネルを構築しましたが、/dev/nfsを取得できませんでした

NFSサポートでカーネルを構築しましたが、/dev/nfsを取得できませんでした

apt-get sourceきれいなchrootを取得してビルドする方法を使用してカーネル3.13.9をビルドしようとしていますdebootstrap(ホストとchrootはどちらもUbuntu Trustyをインストールしたものです)。私の目標は、NFSを介してディスクレスマシンをコンソールに起動することです。

64ビットカーネルを実行しmake menuconfigて有効にし、デバッグを無効にして64ビットビルドを実行していることを確認しました。また、Filesystem->Network Filesystemに移動して、次の機能を有効にしました。

  • ネットワークファイルシステム
  • NFSクライアントのサポート

ホストがnfs-kernel-serverインストールされ、ネットワークブートシステムのルートとして使用するディレクトリのエクスポートが設定されます。

PXEは正常に起動し、カーネルとinitrdがロードされましたが、長い時間が経過した後、ルートファイルシステムの欠落によりbusyboxプロンプトにダンプされました。

なぜですか? (またはより多くの情報が必要ですか?)

編集する:私は行きましたnfsroot

LABEL linux
KERNEL vmlinuz-3.13.9
APPEND root=/dev/nfs initrd=initrd.img-3.13.9 nfsroot=192.168.1.39:/nfsroot,rw ip=dhcp rw

答え1

〜のようにカーネル文書状態は/dev/nfs実際のデバイスではなく、NFSをrootfsnfsroot後者が機能するには、ネットワークインタフェースを自動的に設定するようにカーネルを設定するか、プログラムがinitramfsそれを処理する必要があります。

また、カーネルバイナリにNFSサポートが組み込まれていることを確認してください。いいえモジュロ(またはinitramfsそれを担当するものが1つあります)。ネットワークドライバも同様です。イーサネットネットワークカード用のドライバをカーネルイメージに組み込みたい可能性が高く、そうでなければinitramfs

簡単に言えば、次のようないくつかの可能性があります。

  1. 上記のリンクからわかるように、すでにroot=/dev/nfs設定されており、正しいnfsrootパラメータを提供し、パラメータを介してカーネルにネットワーク設定を通知しますip(これが正しく機能することを確認するための最良の方法です。つまり、誤って設定されたDHCPサーバーを除外することです) )。
  2. DHCPデーモンを有効にしCONFIG_IP_PNPCONFIG_IP_PNP_DHCP設定して、クライアントに使用するIPアドレスとNFSルートを見つけることができる場所を示します。
  3. initramfs適切に構成され、NFSマウントされたファイルシステムを構築します。

編集する:initrd編集で提案されているように/を使用している場合は、initramfsNFSマウントを実行する必要があると思いますinitrdinitrdこれを行う必要があることに気づく必要があります)。カーネルを介した自動マウント(IP自動設定、IIRCなど)はinitrd

答え2

FalcoGer、私も同じ質問をしています。ブートローダがすでにroot = / dev / nfsをパラメータとして渡しているので、この行にコメントを付けようとしましたが、systemd-remount-fsが文句を言いました!今これが本当に必要かどうか疑問に思います。

関連情報