Soporte a mas de 4GB de RAM en GNU/Linux Ubuntu de 32 bits

Introducción.

Es conocido que la arquitectura de 32 bits (i686) no puede direccionar 4GB o mas de memoria RAM (~2.8GB) aunque esta se encuentre físicamente instalada en la máquina.

Una solución para este problema consiste en utilizar un sistema operativo basado en una arquitectura de 64 bits (x64), la cual le permite direccionar una cantidad mayor de memoria.  El uso de esta arquitectura trae consigo algunos problemas que pueden ser incómodos en equipos de escritorio mas no en servidores.

  • El gasto de memoria RAM del sistema operativo es mayor.
  • Algunas aplicaciones de 32 bits no funcionan correctamente, por ejemplo el plugin de Flash.
  • Algunas aplicaciones y librerías que se distribuyen de manera binaria no se encuentran disponibles para 64 bits.

Finalmente he llegado a la conclusión que sólo debe utilizarse un sistema de 64 bits cuando realmente se amerite, en cualquier otro caso se deberá utilizar uno de 32 bits.

  • Servidores en producción.
  • Equipos que contengan máquinas virtuales sobre las cuales se ejecuten sistemas operativos de 64 bits.
  • Equipos con 4GB o mas de memoria RAM.

El último caso incluía también a las máquinas de escritorio que contaban con 4GB o mas de memoria RAM, es decir, era necesario instalarles un sistema operativo de 64 bits de lo contrario no podrían utilizar la totalidad de la memoria disponible.

Para evitar esto es posible utilizar un kernel con soporte para PAE (Physical Address Extension) sobre un sistema operativo de 32 bits.  Con esto se amplía el espacio de direcciones hasta 36 bits lo que permite direccionar hasta 64GB de memoria RAM.

A continuación se detallan los pasos necesarios para instalar el kernel con soporte para PAE en un computador de escritorio que utiliza GNU/Linux Ubuntu 10.10 de 32 bits como sistema operativo.

Procedimiento.

Inicialmente se cuenta con el kernel de 32 bits instalado por defecto.

$ uname -a

Linux jimezam-ultra 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU/Linux

Este kernel no permite direccionar la totalidad de la memoria RAM a pesar de que el equipo cuenta con 4GB instalados físicamente.

$ free -m

total       used       free     shared    buffers     cached
Mem:          2926 762       2163          0         50        404
-/+ buffers/cache:        307       2618
Swap:         4769          0       4769

Se procede con la instalación del kernel con soporte para PAE.

$ sudo aptitude install linux-generic-pae linux-headers-generic-pae linux-image-generic-pae

Es necesario reiniciar la máquina para que el nuevo kernel recién instalado sea tenido en cuenta.

$ sudo reboot

El nuevo kernel sigue siendo de 32 bits pero ahora incluye el soporte para PAE.

$ uname -a

Linux jimezam-ultra 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux

Ahora es posible apreciar como la memoria direccionada es mayor en comparación con el kernel original.

$ free -m

total       used       free     shared    buffers     cached
Mem:          3922 898       3024          0         52        527
-/+ buffers/cache:        317       3604
Swap:         4769          0       4769

Enlaces.

6 thoughts on “Soporte a mas de 4GB de RAM en GNU/Linux Ubuntu de 32 bits”

  1. amigo gracias por la info me sirvio(almenos todo andubo bn en la terminal, sin reiniciar), quiero preguntarte algo si tengo 4gb de ram es mas recomendable que instale el sistema de 64bits. o me quedo con el de 32. de antemano muchas gracias.

  2. Saludos Eder, yo te recomiendo que si te refieres a un equipo de escritorio (no un servidor) es mejor que utilices una versión de 32 bits ya que en términos generales consume menos memoria RAM y tiene menos problemas con algunas aplicaciones, especialmente las de Adobe (como Flash y AIR).

  3. hola bueno yo empese con los pasos creyendo que mi ubuntu 11.04 no reconosia toda mi memoria PERO al teclear el comando “free-m” me dise lo siguiente:

    donati@donati-Inspiron-1545:~$ free -m
    total used free shared buffers cached
    Mem: * 3489 * 1358 2130 0 57 699
    -/+ buffers/cache: 602 2887
    Swap: 4053 0 4053

    segun eso creo que reconose casi los 4 gigas en ram pero mi kernel no se si tenga el soporte PAE:

    donati@donati-Inspiron-1545:~$ uname -a
    Linux donati-Inspiron-1545 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

    eso que significa?

    */ Nota: soy nuebo en Linux espesificamente ubuntu *

  4. Saludos @Gino.

    Aparentemente tienes instalado un kernel que no soporta PAE y te reconoce mas memoria RAM instalada que en mi caso cuando escribí el post (3489 > 2926 MB). En mi caso, después de instalar el kernel con soporte para PAE logré tener acceso a 3922MB.

    En tu caso podrías decidir si lo dejas así o si experimentas instalando el soporte para PAE e intentar acceder a un poco mas de memoria RAM.

  5. Gracias Jimezam, si me funciono ya que reconocio toda mi memoria instalada y asi lo deje, es poco notorio el cambio pero almenos funciono 🙂 gracias de nuevo.

Leave a Reply

Your email address will not be published. Required fields are marked *