Setelah memulai VirtualBox, komputer menjadi lamban dan kemudian digantung sepenuhnya karena OOM. Biasanya, OOM harus memulai proses pembunuhan untuk membebaskan beberapa ruang, tetapi ini tidak terjadi (ini adalah kedua kalinya saya mengalami ini).
Saya memiliki beberapa pekerjaan penting yang belum disimpan dalam editor teks, jadi saya berharap untuk menemukannya kembali di sistem RAM setelah membunuh semua proses di konsol saat ini menggunakan SysRq+ K. Mesin yang dimaksud adalah laptop dengan 8 GiB RAM yang menjalankan Linux x86_64 3.7.5 dengan SSD sebagai disk target.
Upaya pertama saya adalah dd if=/dev/mem of=memory
, tetapi ini gagal setelah membaca 1MiB data. Selanjutnya, saya mencoba dd if=/dev/fmem of=memory bs=1M
, tetapi ini berhenti setelah membaca 3010461696 byte (tepatnya 2871 MiB). Setelah melihat /proc/mtrr
(ditunjukkan di bawah), saya memutuskan untuk mencoba menambahkan skip=4096
. Ini akhirnya melambat, membaca dengan kecepatan hanya 3 MiB / detik, jadi saya memotongnya (menghasilkan file 5,8 GiB). (setidaknya 100 MiB file terakhir berisi FF
s)
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
Saya tidak dapat menemukan data yang saya buka selama beberapa jam di editor teks, jadi saya yakin saya telah melewatkan beberapa memori saat melakukan dump. Jadi, mengingat tujuan saya (pemulihan data dari program userspace), metode apa yang paling efisien untuk membuang memori sistem ke file? Apa saja poin yang harus dipertimbangkan saat melakukan dump seperti itu?
CONFIG_DEVKMEM
dinonaktifkan, mencari dalam kode sumber sepertinya mengizinkan akses tidak terbatas, tapi saya masih tidak yakin bahwa ini adalah cara terbaik untuk melakukannya (IO mem akses?)