システムメモリ全体をダンプする方法は?

システムメモリ全体をダンプする方法は?

VirtualBoxを起動すると、コンピュータが遅くなり、OOMのために完全に停止します。通常、OOMはスペースを解放するためにプロセスの終了を開始する必要がありますが、これは起こりません(この現象は今回が2番目です)。

SysRqテキストエディタに保存されていない重要なタスクがあるため、+を使用して現在のコンソールのすべてのプロセスを終了した後、システムRAMでそのタスクを見つけようとしますK。マシンは、SSDをターゲットディスクとして使用してLinux x86_64 3.7.5を実行する8GiB RAMを搭載したノートブックです。

最初の試みはありましたが、dd if=/dev/mem of=memory1MiBのデータを読み取った後に失敗しました。次に試したことはdd if=/dev/fmem of=memory bs=1Mただし、3010461696バイト(正確に2871MiB)を読み取った後に停止します。/proc/mtrr下記の内容を見てからskip=4096。 (ファイルの最後の100MiBには最小FFsが含まれています。)

reg01: base=0x000000000 (    0MB), size= 2048MB, count=1: write-back
reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: write-back
reg05: base=0x23c000000 ( 9152MB), size=   64MB, count=1: uncachable
reg06: base=0x0b4000000 ( 2880MB), size=   64MB, count=1: uncachable
reg07: base=0x0b8000000 ( 2944MB), size=  128MB, count=1: uncachable

何時間もテキストエディタで開いていたデータが見つからなかったため、ダンプしたときにいくつかのメモリをスキップしたようです。それでは、私の目標(ユーザー空間プログラムからのデータ復旧)を考えると、システムメモリをファイルにダンプする最も効率的な方法は何ですか?そのようなダンプをするときに考慮すべきことは何ですか?

ベストアンサー1

このプロジェクトをチェックしてください。フォリアナ

Forianaの例(FOrensic Ramイメージアナライザ)

入力:(物理)RAMダンプ出力:さまざまな情報

バージョン1.0では、i386 / x86_64 / arm linux / bsdカーネルメモリダンプのプロセスとモジュールを一覧表示でき、ダンプからリニアメモリを読み取るオプションを提供します。

カーネルモジュールfmemがあります:

Fmem は /dev/fmem デバイスを生成するカーネルドライバです。 /dev/fmem は /dev/mem (物理メモリへの直接アクセス) と同じように動作しますが、/dev/mem に制限はありません。 /dev/fmemを介して物理メモリ全体をダンプすることができます。

私はそれを使用し、コンパイルするのは簡単です。

おすすめ記事