VirtualBox를 시작한 후 컴퓨터가 느려지고 OOM으로 인해 완전히 중단되었습니다. 일반적으로 OOM은 공간을 확보하기 위해 강제 종료 프로세스를 시작해야하지만 이것은 발생하지 않았습니다 (이것이 두 번째로 발생했습니다).
텍스트 편집기에서 저장하지 않은 중요한 작업이 있었으므로 SysRq+를 사용하여 현재 콘솔의 모든 프로세스를 종료 한 후 시스템 RAM에서 다시 찾으려고했습니다 K. 해당 머신은 대상 디스크로 SSD를 사용하여 Linux x86_64 3.7.5를 실행하는 8GiB RAM이 장착 된 랩톱입니다.
첫 번째 시도는 dd if=/dev/mem of=memory
이지만 1MiB의 데이터를 읽은 후 실패했습니다. 다음으로 시도 dd if=/dev/fmem of=memory bs=1M
했지만 3010461696 바이트 (정확하게 2871 MiB)를 읽은 후에 중지되었습니다. 보고 후 /proc/mtrr
(아래 그림 참조), 나는 추가하기로 결정했습니다 skip=4096
. 결국 3MiB / 초의 속도로 읽기가 느려지므로 중단했습니다 (파일 5.8GiB). (적어도 파일의 마지막 100MiB에 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
텍스트 편집기에서 몇 시간 동안 열어 놓은 데이터를 찾을 수 없으므로 덤프를 수행하는 동안 일부 메모리를 건너 뛰었다 고 생각합니다. 내 목표 (사용자 공간 프로그램에서 데이터 복구)를 감안할 때 시스템 메모리를 파일로 덤프하는 가장 효율적인 방법은 무엇입니까? 그러한 덤프를 수행하는 동안 고려해야 할 몇 가지 사항은 무엇입니까?
CONFIG_DEVKMEM
는 비활성화되어 있으며, 소스 코드를 보면 무제한 액세스를 허용하는 것 같지만 이것이 최선의 방법이라고 확신하지는 않습니다 (IO mem access?)