web-dev-qa-db-ja.com

NFSサポートでカーネルをビルドしたが、/ dev / nfsを取得していない

カーネル3.13.9をビルドし、apt-get sourceを使用してフェッチし、クリーンなdebootstrap chroot(Hostとchrootの両方がUbuntu Trustyのインストール)でビルドしようとしています。私の目標は、NFSを介してディスクレスマシンをコンソールから起動することです。

make menuconfigを実行して64ビットカーネルを有効にし、デバッグを無効にして、64ビットビルドを実行していることを確認しました。さらに、ファイルシステム->ネットワークファイルシステムに移動し、以下を有効にしました。

  • ネットワークファイルシステム
  • 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
5
nanofarad

カーネルのドキュメント に記載されているように、/dev/nfsは実際のデバイスではなく、rootfsとしてNFSを使用するためのカーネルへのヒントにすぎません。また、nfsrootパラメータまたは適切に設定されたDHCPデーモンを使用して、このルートの場所をカーネルに通知する必要があります。後者が機能するためには、カーネルを設定してネットワークインターフェースを自動設定するか、またはこれを処理するinitramfsを設定する必要があります。

また、カーネルバイナリにNFSサポートが組み込まれていること、およびモジュールとしてnotが組み込まれていないことを確認してください(または、initramfsを使用してください)。同じことがネットワークドライバーにも当てはまります。おそらく、イーサネットNIC=がカーネルイメージに組み込まれているドライバーが必要です。そうでない場合は、initramfsからロードする必要があります。

つまり、いくつかの可能性があります。

  1. 上記のリンクからわかるように、root=/dev/nfsを設定し、nfsrootパラメータを正しく設定し、ipパラメータを使用してネットワーク構成をカーネルに通知します(これは、DHCPサーバーが正しく機能していることを確認するための最良の方法です。 )。
  2. CONFIG_IP_PNPCONFIG_IP_PNP_DHCPを有効にし、DHCPデーモンをセットアップして、使用するIPアドレスとそのNFSルートの場所をクライアントに通知します。
  3. 正しい構成とNFSマウントを行うinitramfsをビルドします。

編集:編集が示唆するようにinitrd/initramfsを使用している場合、initrdでNFSマウントを行う必要があると思いますそれぞれのinitrdは、そうする必要があるという事実を認識する必要があります。カーネルによる自動マウント(IP自動構成、IIRC)は、initrdがない場合にのみ機能します。

4
Andreas Wiese