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をrootfs
。 nfsroot
後者が機能するには、ネットワークインタフェースを自動的に設定するようにカーネルを設定するか、プログラムがinitramfs
それを処理する必要があります。
また、カーネルバイナリにNFSサポートが組み込まれていることを確認してください。いいえモジュロ(またはinitramfs
それを担当するものが1つあります)。ネットワークドライバも同様です。イーサネットネットワークカード用のドライバをカーネルイメージに組み込みたい可能性が高く、そうでなければinitramfs
。
簡単に言えば、次のようないくつかの可能性があります。
- 上記のリンクからわかるように、すでに
root=/dev/nfs
設定されており、正しいnfsroot
パラメータを提供し、パラメータを介してカーネルにネットワーク設定を通知しますip
(これが正しく機能することを確認するための最良の方法です。つまり、誤って設定されたDHCPサーバーを除外することです) )。 - DHCPデーモンを有効にし
CONFIG_IP_PNP
てCONFIG_IP_PNP_DHCP
設定して、クライアントに使用するIPアドレスとNFSルートを見つけることができる場所を示します。 initramfs
適切に構成され、NFSマウントされたファイルシステムを構築します。
編集する:initrd
編集で提案されているように/を使用している場合は、initramfs
NFSマウントを実行する必要があると思いますinitrd
(initrd
これを行う必要があることに気づく必要があります)。カーネルを介した自動マウント(IP自動設定、IIRCなど)はinitrd
。
答え2
FalcoGer、私も同じ質問をしています。ブートローダがすでにroot = / dev / nfsをパラメータとして渡しているので、この行にコメントを付けようとしましたが、systemd-remount-fsが文句を言いました!今これが本当に必要かどうか疑問に思います。