イーサネット経由で接続されたLinux 2.6.37を実行する3つの組み込みCPUシステムがあります。各CPUには独自のNANDフラッシュメモリがあります。そのうちの1つは「メイン」CPU番号0で、残りの2つは彼の同僚です。 RootFSファイルで可能な更新/変更回数が3倍になるのを防ぐために、CPU0にある同じルートファイルシステムで3つのファイルをすべて実行したいと思います。
これを行うには、CPU0のNFSを介して "/"(ルートファイルシステム)をエクスポートし、CPU1とCPU2はNFS(nfsroot)を介してCPU0から起動しようとします。
しかし、これはうまくいかないようです。 "/"エクスポートしようとすると、次のメッセージで失敗します。importfs:/はNFSエクスポートをサポートしません。
「/」エクスポートに制限がありますか?それでは、目標を達成するために何ができるかというアイデアはありますか?とても感謝しています。
追加/更新:
各CPUはその番号を知っており、ブートローダ(u-boot)はNAND(CPU0)またはNFS(CPU1-2)から起動するためにLinuxコマンドラインに正しいパラメータを入力します。同じトークンで CPU0 は NFS サーバーを起動しますが、CPU1-2 は起動しません。
これで、ルートファイルシステムが読み取り専用でマウントされているため、「プライベート」ファイルは必要ありません。単に各CPUxに独自の専用NANDがあるということですが、私はそれを削除したいと思います。
これは「ディスクなし」の場合とは異なります。ディスクがない場合は、一部のサブディレクトリをルートファイルシステムにエクスポートしますが、私の場合はすべてのルートファイルシステムをエクスポートする必要があるためです。
NANDからサブディレクトリをエクスポートするとうまく機能することに注意してください(少なくともいくつか試してみました)。 「/」のみエクスポートすると失敗します。
答え1
たとえば、CPU がルートファイルシステム全体を共有する場合、これには nfs 構成を含むすべての構成が含まれます。彼らが基本なのか仲間なのか、どうすればわかりますか?
1つのアプローチは、最大のディレクトリのためにフラッシュにパーティションを作成し(seekを使用du -sm /*|sort -n
)、可能であればそれを同伴アイテムからマウントすることです(使用または/home
実行できます/usr
が使用できません/etc
)。
ただし、システムがまだ開発されている場合は、各パーティションにどれだけのスペースが必要かわからないため、小さなパーティションとマウントできるような大きな異なる/root
パーティションを持つことをお勧めします。/shared
その後、シンボリックリンク(たとえば)を作成する必要がありますln -s /shared/home /home
。しかし、システムがブロックされないようにしてください!/bin
共有パーティションに移動しようとすると、/bin/mount
起動時に見つかりません。
答え2
ルートディレクトリを他の場所に非再帰的にバインドします/srv/nfs/root
。たとえば、次のようになります。
mount --bind / /srv/nfs/root
それから/srv/nfs/root
。
再帰的にバインドしないでください(--rbind
)。それ以外の場合は、/proc、/sys、/dev などのディレクトリもエクスポートされます。