Ada banyak pertanyaan tentang RAM Disk dan saya menyadari ramf dan tmpf yang memungkinkan penggunaan ram sebagai perangkat blok. Namun minat saya adalah menggunakan rentang alamat memori tetap sebagai perangkat blok.
Ini muncul dari keharusan untuk menggunakan RAM non-volatile yang tersedia di sistem saya. Saya memiliki 6GB RAM tersedia, dan 8GB RAM non-volatile hadir. Output dari / proc / iomem memberi saya yang berikut ini
100000000-17fffffff: Sistem RAM
180000000-37fffffff: dilindungi undang-undang
Di sini wilayah dari 6GB hingga 14GB sesuai dengan wilayah RAM Non-volatil yang ditandai oleh peta memori BIOS E820 sebagaimana dicadangkan. Tujuan utama saya adalah menggunakan NVRAM ini sebagai perangkat blok di linux. Ini berguna untuk menguji sistem NVRAM. Apakah ada perintah linux yang sudah ada yang akan memungkinkan saya untuk menggunakan wilayah ini sebagai perangkat blok, atau apakah saya harus menulis driver perangkat kernel saya sendiri untuk memfasilitasi hal yang sama?
Jawaban:
Saya bukan ahli driver perangkat, namun berikut adalah beberapa petunjuk untuk R&D Anda:
Beberapa sumber lain yang relevan:
sumber
Sebelum pengenalan
tmpfs
/initramfs
adaramdisk
digunakan untuk memuatinitrd
gambar, perangkat blok ukuran tetap yang telah ditentukan, saya pikir bersebelahan, setidaknya pada implementasi sebelumnya.Block driver itu sendiri tidak memiliki parameter untuk alamat memori, hanya ukurannya, tetapi kernel yang digunakan untuk memuat gambar initrd pada alamat yang telah ditentukan (dengan konfigurasi) sehingga mengintip kode kernel utama / init dapat membantu (saya akan terkejut jika ramdisk tidak didukung lagi untuk initrd tetapi karena initramfs sudah ada, bertahun-tahun sekarang, tidak pernah menggunakan ramdisk lagi).
Sumber pengemudi adalah driver / blok / rd.c , jika saya melihat dengan benar sekarang adalah driver / blok / brd.c .
Lain, mencari ramdisk saya menemukan implementasi yang terlihat menarik:
Disk pada RAM - Bermain dengan Block Drivers
sumber