カーネル3.13.9をビルドし、apt-get source
を使用してフェッチし、クリーンなdebootstrap
chroot(Hostとchrootの両方がUbuntu Trustyのインストール)でビルドしようとしています。私の目標は、NFSを介してディスクレスマシンをコンソールから起動することです。
make menuconfig
を実行して64ビットカーネルを有効にし、デバッグを無効にして、64ビットビルドを実行していることを確認しました。さらに、ファイルシステム->ネットワークファイルシステムに移動し、以下を有効にしました。
ホストには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
カーネルのドキュメント に記載されているように、/dev/nfs
は実際のデバイスではなく、rootfs
としてNFSを使用するためのカーネルへのヒントにすぎません。また、nfsroot
パラメータまたは適切に設定されたDHCPデーモンを使用して、このルートの場所をカーネルに通知する必要があります。後者が機能するためには、カーネルを設定してネットワークインターフェースを自動設定するか、またはこれを処理するinitramfs
を設定する必要があります。
また、カーネルバイナリにNFSサポートが組み込まれていること、およびモジュールとしてnotが組み込まれていないことを確認してください(または、initramfs
を使用してください)。同じことがネットワークドライバーにも当てはまります。おそらく、イーサネットNIC=がカーネルイメージに組み込まれているドライバーが必要です。そうでない場合は、initramfs
からロードする必要があります。
つまり、いくつかの可能性があります。
root=/dev/nfs
を設定し、nfsroot
パラメータを正しく設定し、ip
パラメータを使用してネットワーク構成をカーネルに通知します(これは、DHCPサーバーが正しく機能していることを確認するための最良の方法です。 )。CONFIG_IP_PNP
とCONFIG_IP_PNP_DHCP
を有効にし、DHCPデーモンをセットアップして、使用するIPアドレスとそのNFSルートの場所をクライアントに通知します。initramfs
をビルドします。編集:編集が示唆するようにinitrd
/initramfs
を使用している場合、initrd
でNFSマウントを行う必要があると思いますそれぞれのinitrd
は、そうする必要があるという事実を認識する必要があります。カーネルによる自動マウント(IP自動構成、IIRC)は、initrd
がない場合にのみ機能します。