Linux
將固定的 RAM 記憶體區域保留為塊設備(具有給定的起始物理地址)
關於 RAM 磁碟有很多問題,我知道 ramfs 和 tmpfs 允許將 ram 用作塊設備。但是我的興趣是使用固定的記憶體地址範圍作為塊設備。
這是因為需要使用我係統中可用的非易失性 RAM。我有 6GB 的可用 RAM,以及 8GB 的非易失性 RAM。/proc/iomem 的輸出給了我以下
100000000-17fffffff : 系統記憶體
180000000-37ffffff :保留
這裡從 6GB 到 14GB 的區域對應於由 E820 BIOS 記憶體映射標記為保留的非易失性 RAM 區域。我的主要目的是將此 NVRAM 用作 linux 中的塊設備。這對於測試 NVRAM 系統很有用。是否已經存在任何允許我將此區域用作塊設備的 linux 命令,或者我是否必須編寫自己的核心設備驅動程序來實現相同的功能?
我不是設備驅動程序方面的專家,但是這裡有一些關於您的研發的建議:
- 如果記憶體被標記為“保留”,則作業系統無法觸摸它;您必須找到一種方法讓 BIOS 將其標記為對作業系統可用,或者使用直接的低級ioctl來控制它
- 如果 Linux 可以看到記憶體,您仍然沒有簡單的方法來阻止 Linux 將其用作任何其他 RAM 塊;可以通過將此類 RAM 標記為“壞”然後修改核心以仍然對其進行特殊使用來嘗試嘗試(請檢查核心文件,自上次我侵入它以來它已經發生了很大變化並且它正在發展以極快的速度)
- 考慮到上述作為初步(非確定性或詳盡的)可行性研究,我會說編寫您的 ramdisk 塊設備驅動程序是您情況下最明智的選擇,也許您應該將其貢獻回 Linux 核心和/或與人們已經在嘗試這個(也許這個問題的一個更好的地方是Linux Kernel Mailing list,如果你還沒有在那裡發布的話)
其他一些相關來源: