2008-10-18

Compilando um kernel com suporte a memória ruim

Se um computador está com uma parte da memória ruim (detectado via memtest86+), pode-se compilar um kernel que seja capaz de isolar essa memória ruim e somente usar o resto, não sendo necessário trocar o pente de memória.

  1. Instalar os pacotes necessários: linux-image-2.6.26-1-686, linux-source-2.6.26, kernel-package, kernel-patch-badram, memtest86+:
    apt-get install linux-image-2.6.26-1-686 linux-source-2.6.26 \
    kernel-package kernel-patch-badram memtest86+
  2. Verificar se o patch de badram correspondente ao kernel sendo instalado (por exemplo BadRAM-2.6.26.1.patch.gz) existe no diretório /usr/src/kernel-patches/diffs/badram/:
    ls /usr/src/kernel-patches/diffs/badram
    Caso contrário, baixar e aplicar o patch para suporte a BadRAM de http://rick.vanrein.org/linux/badram/download.html

  3. Executar make-kpkg no diretório fonte:
    cd /usr/src
    sudo tar -xjf linux-source-2.6.26.tar.bz2
    cd /usr/src/linux-source-2.6.26
    sudo cp /boot/config-2.6.26-1-686 .config
    sudo make-kpkg --revision 1.Bello --initrd --added-patches badram binary-arch
    Work around bad spots in RAM (BADRAM) [Y/n/?] (NEW) Y
  4. Instalar o novo kernel e headers recém criados:
    sudo dpkg -i /usr/src/linux-image-2.6.26_1.Bello_i386.deb
    sudo dpkg -i /usr/src/linux-headers-2.6.26_1.Bello_i386.deb
  5. Modificar /etc/lilo.conf para conter as linhas:
    default=Badram_2.6.26
    image=/boot/vmlinuz-2.6.26
    label=Badram_2.6.26
    initrd=/boot/initrd.img-2.6.26 append="badram=0x141ab2ac,0xfffffffc,0x0c863094,0xfffffffc,0x20bf1b34,0xfffffffc,0x22101c94,0xfa501ffc,0x2799ded4,0xfffffffc"
    optional
    restricted
  6. Executar Lilo:
    sudo lilo