Spiga

Redimensionando particiones

Hoy vamos a poner un tutorial que me ha hecho llegar Isaac Chavarría (ikeeki en Cubieforums) sobre el redimensionado de particiones. Muchas veces te habrás encontrado que al bajar un fichero "img" para Raspberry o Cubieboard está preparado para una SD mayor a lo que tenías pensado utilizar, por lo que únicamente tenías la opción de comprar una tarjeta de tal capacidad... hasta ahora.

El tutorial es una traducción del original posteado aquí, pero no va a haber problemas contando que Isaac es español y que la traducción la ha hecho él mismo ;)

Sin más os dejo con el "howto".

REQUISITOS GENERALES: 
  • Una máquina con Linux.
  • Realizar una copia de seguridad de la SD a reducir/aumentar. 
  • Tener GParted instalado.
Primero realizaremos la copia de seguridad de nuestra tarjeta. Para ello utilizaremos dd y el formato "img". Escribimos lo siguiente en terminal (requiere permisos de root):


dd if=/dev/unidad of=/destino/nombredelbackup.img bs=1M


Por ejemplo, suponiendo que mi unidad fuese "sdb" y el destino mi carpeta de usuario:


dd if=/dev/sdb of=/destino/nombredelbackup.img bs=1M


EXPANDIENDO PARTICIÓN:

La parte fácil. La microSD con el S.O. debe estar conectada mediante un lector a la PC. Normalmente y tratándose de Raspberry Pi o Cubieboard, el sustema nombrará a sus particiones como sdb1 y sdb2 si no tienemos más unidades conectadas que la propia donde ejecutamos nuestro sistema operativo (nuestro disco duro).

Si no estás seguro puedes ver un listado de particiones ejecutando el siguiente comando:

Abre GParted, ve a botón redimensionar/eliminar, arrastra lo que quieras la barra hacia tu derecha aplica cambios y ya está hecho.

También puedes hacer uso del siguiente script de consola.

ENCOGIENDO PARTICIÓN:

Lo primero que tenemos que tener en cuenta para hacer un "shrink" de la partición es que haya menos datos ocupados en dicha partición que el tamaño de la nueva que vamos a realizar. Obvio, un litro de agua no cabe en una taza de té (al menos en España). Procura dejar un margen de unos 100 MiB extra, por si acaso.

Primero ejecutaremos en consola lo siguiente:

df -h 

Así nos haremos una idea de los espacios ocupados. Suponiendo que rootfs está montado en sdb2 (como siempre), usamos en terminal con permisos de administrador:
umount /dev/sdb1 /dev/sdb2

Que desmontará las particiones en uso del sistema. Ahora pasamos a redimensionar sdb2 con resize2fs:

fsck -f /dev/sdb2
resize2fs /dev/sdb2 3800M


Uso 3800M como ejemplo, como si quisieras encoger el contenido (3,5GB) de una SD de 8GB para que lo puedas copiar en una SD de 4GB y te ahorres la de 8GB para las fotos de la boda de tu primo.

¡¡¡ATENCIÓN!!! las tarjetas SD son normalmente más pequeñas que lo que dice el fabricante, por ejemplo:

Kingston sdcard: 3904 MB, 3904897024 bytes
Trascend sdcard: 3963 MB, 3963617280 bytes

Ahora desmonta todos los dispositivos y abre de nuevo GParted. Al principio solo te permitirá reducir el tamaño de la partición (botón redimensionar/eliminar) más de unos pocos megas, pero hazlo de todas formas.

Captura de pantalla de GParted


Cierra GParted y reábrelo o simplemente refresca dispositivos. ¡Sorpresa! Ahora puedes reducirlo hasta lo que tenías planeado. Acuérdate de dejar al menos 100 MiB libres. Fíjate que tienes un montón de espacio muerto "unallocated" en la parte derecha de la barra, una no tocada (sdb1) y una reducida (sdb2) en medio que debería caber en la nueva SD.

Para finalizar apunta los bloques en información de sdb2, que nos servirá para saber cuanto ocupan. También puedes ir a terminal y escribir:

fdisk -l


Y anotar los bloques utilizados. Por ejemplo mi salida ha sido:

Disco /dev/sdb: 7882 MB, 7882145792 bytes
243 cabezas, 62 sectores/pista, 1021 cilindros, 15394816 sectores en total
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador del disco: 0x00062524

Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1            2048       30719       14336    c  W95 FAT32 (LBA)
/dev/sdb2           30720     7567359     3768320   83  Linux
root@ikeeki-Extensa-5635Z:/home/ikeeki#

Usa 3768320 bloques.

Nos vamos a quedar con la cantidad de bloques, en este caso 3768320. Ahora haz una imagen o flashea la nueva (y más pequeña SD) con los bloques de uno de los métodos anteriores.

Para hacer la imagen, y siguiendo ejemplo anterior:

dd if=/dev/sdb of=/home/ikeeki/Escritorio/cubiuntu4.0b.img bs=1k count=3768320
 

Para flashear una nueva SD, llamada sdc (recuerda que puedes ver nombre con fdisk -l)


dd if=/dev/sdb of=/dev/sdc  bs=1k count=3768320


Y con esto ya tendríamos solucionada la papelete. Por último recuerda tener mucho cuidado con los dispositivos que escribes, puesto que un desliz puede dejarte sin información en un disco duro.


Y hasta aquí con el tutorial cedido por Isaac, al que aprovecho una vez más a darle las gracias por su colaboración y buen rollo que estamos teniendo en el desarrollo tanto de Cubiuntu como Cubieez.