RAMディスクについて多くの質問があり、ramをブロックデバイスとして使用できるramfsとtmpfsを知っています。しかし、固定メモリアドレス範囲をブロックデバイス。
これは、不揮発性を使用する必要性から生じますRAMシステムで使用可能です。6GBのRAM使用可能で、8GBの不揮発性RAMpresent。/proc/iomemの出力により、次のようになります。
100000000-17fffffff:システムRAM
180000000-37fffffff:予約済み
ここで、6GBから14GBの領域は、E820 BIOSメモリマップによって予約済みとしてマークされている不揮発性RAM領域に対応しています。私の主な目的は、このNVRAMをLinuxのブロックデバイスとして使用することですこれは、NVRAMシステムのテストに役立ちます。この領域をブロックデバイスとして使用できるLinuxコマンドがすでに存在しますか?それを容易にするために、独自のカーネルデバイスドライバーを作成する必要がありますか?
私はデバイスドライバーの専門家ではありませんが、R&Dのヒントをいくつか紹介します。
他の関連する情報源:
tmpfs
/initramfs
が導入される前は、ramdisk
imagesをロードするためにinitrd
imagesが使用されていました。これは、事前定義された固定サイズのブロックデバイスです。少なくとも連続していると思います以前の実装。
ブロックドライバー自体には、メモリアドレスのパラメーターはなく、サイズのみがありますが、カーネルは、事前定義されたアドレス(config)でinitrdイメージをロードするために使用されるため、を覗き見ることができますメイン/initカーネルコードが役立つ可能性があります(ramdiskはinitrdでサポートされなくなりましたが、initramfsが使用されているため、今では何年も使用されていないため、ramdiskもう)。
ドライバーのソースは drivers/block/rd.c でしたが、正しく表示されている場合は drivers/block/brd.c です。
または、ramdiskを探しています。興味深い実装が見つかりました。