VirtualBox'ı başlattıktan sonra bilgisayar durgunlaştı ve daha sonra OOM nedeniyle tamamen asıldı. Genellikle, OOM biraz yer açmak için öldürme süreçlerine başlamalıdır, ancak bu olmadı (bunu ikinci kez yaşadım).
Bir metin düzenleyicide kaydedilmemiş bazı önemli işlerim vardı, bu yüzden mevcut konsoldaki tüm işlemleri SysRq+ kullanarak öldürdükten sonra sistem RAM'inde bulmayı umuyordum K. Söz konusu makine, hedef disk olarak bir SSD ile Linux x86_64 3.7.5 çalıştıran 8 GiB RAM'li bir dizüstü bilgisayardır.
İlk denemem dd if=/dev/mem of=memory
, ancak 1MiB veri okuduktan sonra başarısız oldu. Sonra, denedim dd if=/dev/fmem of=memory bs=1M
, ama bu 3010461696 bayt (tam olarak 2871 MiB) okuduktan sonra durdu. Baktıktan sonra /proc/mtrr
(aşağıda gösterilmiştir) eklemeyi denemeye karar verdim skip=4096
. Bu nihayetinde yavaşladı, sadece 3 MiB / sn hızında okudum, bu yüzden kesintiye uğradım (5.8 GiB dosyası vererek). (en azından dosyanın son 100 MiB'si FF
s içerir )
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
Saatlerce açık olan verileri metin editöründe bulamadım, bu yüzden dökümü yaparken biraz bellek atladığımı düşünüyorum. Bu nedenle, hedefim (kullanıcı alanı programlarından veri kurtarma) verildiğinde, sistem belleğini bir dosyaya dökmenin en etkili yöntemi nedir? Böyle bir çöplükte dikkat edilmesi gereken bazı noktalar nelerdir?
CONFIG_DEVKMEM
devre dışı, kaynak koduna bakıldığında sınırsız erişime izin veriyor gibi görünüyor, ancak bunun bunun için en iyi yol olduğuna ikna olmadım (IO mem erişimi?)