Acessando / dev / mem congela o Ubuntu

1

Estou usando o Ubuntu Linux mais recente com um kernel personalizado (4.2.0-36-generic), no qual desativei o CONFIG_STRICT_DEVNEM , porque preciso despejar e pesquisar alguns termos na memória durante um projeto. / p>

No entanto, ao usar:

  • dd if=/dev/mem para imprimi-lo na tela,
  • dd if=/dev/mem of=/home/user/Documents/file.dump para salvá-lo como um arquivo ou
  • dd if=/dev/mem | hexdump -C | grep 'term' para encontrar diretamente o que estou procurando,

o sistema congela e reinicia enquanto está no processo.

Eu verifiquei com df -h e meu disco tem muito espaço livre. Além disso, o processo sempre pára depois de gravar de 2,1 Gb a 2,5 Gb, de uma RAM de 8 Gb e antes de chegar a endereços que começam com 4 (se isso fizer alguma diferença). Além disso, a verificação de /var/log/syslog e /var/log/kern.log não mostra nada relevante antes do congelamento.

Além disso, usando os parâmetros bs=1G count=2 copia com sucesso os primeiros 2GB da memória, mas depois tenta bs=1G count=2 skip=2 obter os próximos 2GB novamente congela o sistema.

Você sugeriria alguma solução para que seja possível despejar a memória completa ou alguma outra maneira de pesquisar diretamente os termos na memória?

    
por Alexander Lattas 24.09.2016 / 19:11

1 resposta

2

Acho que você pode encontrar alguma área de memória usada por PCI / ACPI ou algum hardware desse tipo. Pode haver um dispositivo mapeado na memória que não gosta de ser acessado. Não sei dizer qual endereço causa exatamente o problema, mas é comum que algumas áreas especiais estejam localizadas abaixo do limite de 4 GB.

Em uma máquina com 4 GB de memória, o kernel imprime o seguinte na inicialização:

BIOS-e820: 0000000000000000 - 000000000009e400 (usable)
BIOS-e820: 000000000009e400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf690000 (usable)
BIOS-e820: 00000000cf690000 - 00000000cf6e0000 (reserved)
BIOS-e820: 00000000cf6e0000 - 00000000cf6e3000 (ACPI NVS)
BIOS-e820: 00000000cf6e3000 - 00000000cf6f0000 (ACPI data)
BIOS-e820: 00000000cf6f0000 - 00000000cf700000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)

Parte da memória utilizável está acima do limite de 4 GB em 0x100000000 e parece haver buracos entre 0xcf700000 e 0xfec00000 .

As áreas correspondentes à memória "utilizável" também são mostradas em /proc/iomem , marcadas como "System RAM". (o arquivo também contém informações sobre as outras áreas da memória.) Você pode ser mais seguro apenas lendo essas áreas.

$ grep "System RAM" /proc/iomem 
00001000-0009e3ff : System RAM
00100000-cf68ffff : System RAM
100000000-12fffffff : System RAM
    
por 24.09.2016 / 19:48