固定RAMメモリ領域をブロックデバイスとして予約します(与えられた開始物理アドレスを使用)。

固定RAMメモリ領域をブロックデバイスとして予約します(与えられた開始物理アドレスを使用)。

RAMディスクについて多くの質問があります。私はramfsとtmpfsがramをブロックデバイスとして使用できることを知っています。しかし、私の関心は、固定されたメモリアドレス範囲をブロックデバイスとして使用することです。

これは、システムで使用可能な不揮発性RAMを使用する必要があるためです。使用可能なRAMは6GB、不揮発性RAMは8GBです。 /proc/iomem の出力は次のようになります。

100000000-17fffffff: システムメモリ

180000000-37fffffff:予約済み

ここで、6GBから14GBまでの領域は、E820 BIOSメモリマップに予約されているとマークされた不揮発性RAM領域に対応します。私の主な目的は、このNVRAMをLinuxのブロックデバイスとして使用することです。これはNVRAMシステムをテストするのに便利です。この領域をブロックデバイスとして使用できるようにするLinuxコマンドはすでに存在していますか?それとも同じ機能を達成するには、独自のカーネルデバイスドライバを作成する必要がありますか?

ベストアンサー1

私はデバイスドライバの専門家ではありませんが、開発のためのいくつかの提案は次のとおりです。

  1. メモリが「予約済み」とマークされている場合、オペレーティングシステムはそれに触れることができません。 BIOSがそのメモリをオペレーティングシステムで利用可能であることを示す方法を見つけるか、低レベルのメモリを使用する必要があります。I/W制御到着それを制御する
  2. Linuxができるならバラよりメモリがある場合、Linuxがそれを別のRAMブロックとして使用するのを防ぐ簡単な方法はありません。これらのRAMを「不良」とマークし、カーネルを修正して、そのメモリを特別に使用することができます(カーネルを確認してください)。この文書に対して変更されましたたくさん前回のハッキング以降、途方もないスピードで発展しています。)
  3. 上記が予備的(結論的または徹底的ではない)妥当性調査であることを考慮すると、RAMディスクブロックデバイスドライバを作成することが最も賢い選択であり、おそらくLinuxカーネルお​​よび/または以下を持つ人に貢献する必要がありますです。すでにこれを試しました(おそらくこの質問のより良い場所はLinuxカーネルメーリングリスト、まだ公開していない場合)

その他の関連ソース:

おすすめ記事