Cómo usar toda la tarjeta de memoria en Raspberry Pi 1, 2 y 3

Cómo redimensionar la partición root en Raspberry Pi 1,2 y 3

Si eres uno de los afortunados poseedores de alguno o varios de estos pequeños ordenadores, seguramente te habrás dado cuenta de que al instalar una de las imágenes existentes no se aprovecha todo el espacio de la tarjeta de memoria. Por eso mismo he hecho las pruebas pertinentes y te pongo los pasos para saber cómo redimensionar la partición de raspberry pi para usar la sd o microsd entera.

Por lo general al cargar una de las imágenes que podemos encontrar para nuestra raspberry, vamos a ver cómo solo se aprovechan un par de gigas de nuestra tarjeta, y no vamos a tener acceso al resto desde el sistema. Esto pasa por que estas imágenes están pensadas para funcionar con tarjetas de memoria pequeñas, y tienen una tabla de particiones creada de forma predeterminada.

Por ahí te puedes encontrar una buena cantidad de tutoriales que te indican cómo aumentar el tamaño de la partición root modificándola desde otro equipo, pero en la mayoría de los casos te terminará dando problemas, y por tanto es mejor centrarte en una solución como la mía, ya que modificamos el tamaño de las particiones desde la raspberry, sin necesidad mas que de tener acceso a la consola y al usuario root.

Cómo extender la partición root en Raspberry pi para usar toda la tarjeta de memoria

Aunque te puedan parecer unos pasos complejos que ejecutar en consola, no deberías tener problema en realizarlo en cualquiera de las versiones de linux, ya que lo único que vamos a hacer es modificar el sector en el que termina la partición root. En este caso he usado raspbian, que está basado en Debian, y es la versión mínima sin ni siquiera interfaz gráfica, pero te debería funcionar en cualquier versión.

Vamos a necesitar permisos de superusuario (root), ya bien sea añadiendo el prefijo sudo y la contraseña si nos la pide, o directamente acceder como root por ssh o su root desde consola en la misma raspberry. Una vez que tengamos claro que podemos acceder como root simplemente tendremos que seguir una serie de pasos.

Léete también  Cómo volcar comandos de Linux a un archivo

Antes de nada te comento que no debes asustarte, ya que solo vamos a hacer que se modifique el inicio y final de la partición root, y después haremos que se asigne dicho espacio a la partición.

Al principio deberíamos tener algo como lo siguiente al ejecutar df -h:

S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root        1,2G   860M  246M  78% /
devtmpfs         459M      0  459M   0% /dev
tmpfs            463M      0  463M   0% /dev/shm
tmpfs            463M   6,2M  457M   2% /run
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            463M      0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1    60M    20M   41M  34% /boot

Pero sin embargo tengo puesta una MicroSD de 16GB, por lo que estoy desaprovechando prácticamente todo el espacio disponible.

  • Empezaremos ejecutando el comando fdisk para empezar a modificar:
    fdisk /dev/mmcblk0
  • Una vez en la consola de fdisk le daremos a la letra p para que nos liste las particiones, deberemos ver algo como lo siguiente:
    Command (m for help): p
    Disk /dev/mmcblk0: 14,5 GiB, 15523119104 bytes, 30318592 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x6f92008e
    
    Device         Boot  Start     End Sectors  Size Id Type
    /dev/mmcblk0p1        8192  131071  122880   60M  c W95 FAT32 (LBA)
    /dev/mmcblk0p2      131072 2658303 2527232  1,2G 83 Linux

    Apuntaremos el Start de la partición Type Linux, en mi caso 131072, ya que luego nos hará falta para indicar el inicio de la partición. Como puedes ver en mi caso solo hay dos, pero dependiendo de tu distribución puede tener una partición más denominada Linux Swap.

  • Ahora eliminaremos las dos particiones Linux y Linux Swap, dejando solo la W95 FAT32 sin tocar. Le damos a la d para eliminar y seleccionamos la partición 2, y si tenemos la de swap lo repetimos con la 3.
    Command (m for help): d
    Partition number (1,2, default 2): 2
    
    Partition 2 has been deleted.
  • Ahora tendremos que crear nuevamente la partición root con todo el tamaño restante empezando por el sector que hemos apuntado antes, pulsa n y luego p para crear la partición primaria. Selecciona como número de partición 2.
    Cuando te pregunte el First sector o primer sector introduce el apuntado, en mi caso 131072

    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (2-4, default 2): 2
    First sector (2048-30318591, default 2048): 131072
    Last sector, +sectors or +size{K,M,G,T,P} (131072-30318591, default 30318591):
    
    Created a new partition 2 of type 'Linux' and of size 14,4 GiB.
  • Por último solo nos queda guardar todos los cambios para que se escriban en la memoria, pulsa w y deberías ver un mensaje en rojo o error como el siguiente:
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Dispositivo o recurso ocupado
    
    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Hasta aquí todo bien, de momento no te preocupes por el error, se debe a que el sistema está cargado y por tanto al usar las particiones no puede realizar los cambios. Como puedes ver en la captura todos los pasos los podemos seguir en una simple pantalla.

extender-espacio-particion-sd-raspberry-pi

Para que se escriban los cambios nos tocará reiniciar la raspberry:

reboot

Y ahora si hacemos df -h aún veremos los tamaños de partición antiguos, tenemos que ejecutar un último comando que es

resize2fs /dev/mmcblk0

Esto lo que hará será redimensionar el uso de la partición que hemos asignado con fdisk y hacerlo usable. Tendremos que esperar un rato (a mí me ha tardado unos segundos), dependerá de lo rápida que sea la memoria y nuestra versión de raspberry que tarde más o menos en redimensionar la partición root.

Tan pronto como termine veremos un mensaje como este

root@raspberrypi:~# resize2fs /dev/mmcblk0p2
resize2fs 1.42.12 (29-Aug-2014)
El sistema de ficheros de /dev/mmcblk0p2 está montado en /; hace falta cambiar el tamaño en línea
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 3773440 (4k) blocks long.

Y si ahora hacemos df -h veremos que ya utiliza todo el espacio disponible en la tarjeta de memoria

S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/root         15G   861M   13G   7% /
devtmpfs         459M      0  459M   0% /dev
tmpfs            463M      0  463M   0% /dev/shm
tmpfs            463M   6,2M  457M   2% /run
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            463M      0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1    60M    20M   41M  34% /boot

redimensionar-particion-root-raspberry-pi

Ten en cuenta que el sector de inicio tiene que coincidir con el que apuntes, ya que si lo ponemos mal nos podemos encontrar con que la raspberry no arranque. En caso de que quieras hacerlo por ssh puedes ver aquí cómo habilitar el acceso root por ssh en linux que te valdrá para cualquier versión.

¿Por qué no se borran los datos al redimensionar la partición de la raspberry con este método?

Es bastante sencillo, lo que hacemos es eliminar la partición de root y también la de swap si existe, una vez hecho esto volvemos a crear la partición root usando el sector de inicio original y antes de que se escriba cualquier dato en el disco. Esto resulta en que los datos que contiene dicha partición quedan intactos.

Además, en caso de que nos toque eliminar la partición Swap dejamos la zona libre para que la partición root pueda crecer, ya que de lo contrario no podríamos ampliarla por tener el swap a continuación, de esta forma ya no tiene otra partición contigua que le impida usar el resto de la memoria.

Lo último que hacemos después de marcar la nueva tabla de particiones es redimensionar la que existe y la partición root ocupará toda la tarjeta de memoria restante.

¿Tienes una Raspberry Pi? ¿Qué versión y para qué la usas?


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.