Linuxカーネルでメモリブロックを予約する方法は?

Linuxカーネルでメモリブロックを予約する方法は?

OS介入なしに特別に予約されたメモリブロックを必要とするデバイスがあります。メモリブロックが予約されており、使用できないことをBIOSまたはオペレーティングシステムに通知する方法はありますか?

私はopenSUSEシステムでこのデバイスを使用しています。

ベストアンサー1

オペレーティングシステムが必要な場合完全無視してください。メモリホールを作成するには、「.」を使用する必要がありますmemmap。バラよりこの参照。たとえば、2GBの512Mが必要な場合は、memmap=512M$2Gカーネルコマンドラインに「」と入力します。

dmesgどんな装置も踏まないように、連続的な穴を見つけなければなりません。これはマザーボード+カード専用です。

これはいいえ推奨される方法 - 正しく実行する方法(カーネルドライバ+ DMA)に対するWarren Youngの回答を参照してください。私はあなたが尋ねる正確な質問に答えています。エンドユーザー向けにこの製品を作成する予定の場合嫌いあなたが彼らにこのようなことをしたら...私を信じてください。それが私がこの答えを知っている唯一の理由です。


編集:grub2やgrubby(CentOS 7など)を使用する場合は、次のものが必要です。$を脱出\以前も一つあったはずでした$。例:

$ sudo -v
$ sudo grubby --update-kernel=ALL --args=memmap='128M\\$0x57EF0000'
$ sudo grubby --info $(sudo grubby --default-kernel) | grep memmap
args="ro crashkernel=auto ... memmap=128M\$0x57EF0000"

おすすめ記事