User Tools

Site Tools


tutoriais:badram
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


tutoriais:badram [2024-03-19 13:22] (current) – created gnann
Line 1: Line 1:
 +====== Linux com Memória Ram com problemas (BadRam) ======
 +
 +Eventualmente você pode encontrar uma máquina com problemas de memória e que não é possível trocar a RAM (soldada ou velha ou qq coisa assim). Alguns utilitários podem testar a RAM e dizer onde há erro. Isso pode ser passado como parâmetro do kernel para evitar essa área problemática. Abaixo o passo a passo de um caso real: Notebook com 4GB de RAM soldada na placa.
 +
 +Usei um pendrive com memtest86+ (de memtest.org) , configurei ele pra dar a saída no formato BadRam
 +
 +Após 1 passe completo, resultou em:
 +<code>
 +badram= 0x000000008b902200,0xffffffffff903fc0,
 + 0x000000008c002220,0xffffffffff003fe0,
 + 0x000000008d002220,0xffffffffff003fe0,
 + 0x000000008e002220,0xfffffffffe003ff0,
 + 0x000000008e002230,0xfffffffffe003ff0,
 + 0x0000000094002200,0xfffffffffe003ff8,
 + 0x0000000094002200,0xfffffffffe003fe0,
 + 0x0000000094042200,0xfffffffffe043fe0,
 + 0x000000009429e218,0xfffffffffffffff8,
 + 0x0000000096002200,0xfffffffffe003fe0
 +</code>
 +Esses valores podem ser passados ao kernel para ignorar esses pontos defeituosos, mas fiz de outra maneira:
 +
 +Cada linha da saída do badram é um hexadecimal com o começo da área com problema, seguida de uma máscara que indica quanto pra frente daquilo ainda tem problema. Se traduzir o primeiro número de hexadecimal pra decimal, dá no endereço onde começa o problem, que é 2341478912 bytes (decimal de 0x000000008b902200) e pela última linham podemos ver que termina o problema em 2516591104 bytes (decimal de 0x0000000096002200). Fazendo a diferença, dá um total de mais ou menos 175112192 bytes (um pouco a mais pq ignorei a última máscara).
 +
 +Arredondando, começa em 2341,478912MB termina perto de 2516,591104MB   (175,112192MB)
 +
 +Ou seja, são pouco mais de 175MB começando da memória HEX 0x8b902200
 +
 +Para resolver: Foi inserido no arquivo /etc/default/grub (na linha do quiet-splash) o conteúdo "memmap=180M\\\$0x8b902200", para que após rodar o comando update-grub como root, ele possa adicionar sempre "memmap=200M\$0x8b902200" na linha do grub.
 +
 +E o que significa memmap=180M\$0x8b902200?
 +Significa que ele vai ignorar 200MB de memória começando da posição 0x8b902200
 +
 +Pode começar antes? Poderia, mas seria besteira pois o primeiro valor já é exato onde começa. Poderia terminar antes de 200MB? talvez, mas aí seria bom calcular com melhor precisão a máscara da última linha e ver o último endereço pra não acabar muito antes da área com problema. Através do comando "cat /proc/iomem | grep -i 8b902200" podemos ver que a área reservada foi "8b902200-981021ff : Reserved". Olhando por cima na máscara da última linha, para 96002200 é fe003fe0, o que indica que a região poderia atingir até alguma coisa em 97... (se a máscara for como máscara de rede). Assim, garanti que a área danificada está separada. e o sistema parou de dar problema
 +
 +Outro método seria usar só os badram pra "perder menos memória" mas seria muita coisa pra escrever por causa de uma faixa de 200MB (preguiça)
 +
 +Como o problema estava depois dos 2GB de RAM, o sistema pode ser instalado bootando o instalador com parâmetro mem=2300MB (já que problemas começavam após 2341MB). Isso limitou o uso de memória aos 2300MB iniciais.
 +
  
tutoriais/badram.txt · Last modified: 2024-03-19 13:22 by gnann

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki