Teléfono y Whatsapp: 623 35 52 74

Cómo redimensionar imágenes de disco img en GNU/Linux

Las imágenes de disco, son un volcado a nivel binario sobre un archivo de un soporte de almacenamiento físico como puede ser un DVD, Disco Duro, Pendrive, tarjeta de memoria… etc.

Existen multitud de extensiones, según el programa que se use para ello, siendo las más comunes: nrg, iso e img.

En ocasiones, creamos una imagen de disco de un dispositivo donde no todo el espacio físico estaba particionado, por ejemplo, teníamos en una tarjeta de 16 Gb una imagen de 8Gb grabada en ella, hicimos cambios, y creamos una imagen, pero esta vez la imagen creada fue de 16Gb (lo mismo que el soporte). El resultado es que la imagen es 8Gb más grande que la original, y encima es espacio vacío.

Esto nos impide compartirla y guardarla con comodidad. Es por ello que hay que redimensionar la imagen, liberando el espacio no asignado a particiones.

Vamos a ver varias soluciones:

Script de redimensionado automático

Una vez creada la imagen de disco (con la utilidad de discos del sistema por ejemplo), descargamos este script y lo extraemos en el mismo directorio donde tengamos la imagen de disco .img. A continuación ejecutamos:

sudo apt-get install parted
sudo ./pishrink.sh img-a-redimensionar.img imagen-redimensionada.img

Este script buscará los sectores de la imagen no ocupados, y creará una imagen nueva sin ellos.

Es un proceso que no tarda mucho.

Comando CP

Si tenemos la tarjeta o disco montado en el diseño, podemos crear la imagen desde el dispositivo, quitando los sectores no usados con el comando:

sudo dd if=/dev/sdb | cp --sparse=always /dev/stdin imagen-redimensionada.img

Tardará un buen rato.

Otras soluciones

Existen otras soluciones que llevan más tiempo como:
http://softwarebakery.com/shrinking-images-on-linux
http://raspberrypi.stackexchange.com/questions/13137/how-can-i-mount-a-raspberry-pi-linux-distro-image

  • Un tipo con S

    Estoy totalmente de acuerdo contigo, la idea intrínseca expuesta es brillante, las posibles opciones en el desarrollo del tema son infinitas, la claridad del argumento es mayúscula, pocas veces he tenido ocasión de leer un tema tan ameno, con la longitud justa, con la métrica adecuada, sin florituras.

    Ya lo dijo Quevedo:
    Lo bueno si breve dos veces bueno

  • Ekaitz

    El método de redimensionado de la siguiente página se realizaría desde el Linux de la tarjeta ARM, en este caso una OrangePi:
    https://descubriendolaorangepi.wordpress.com/2017/11/05/generar-una-imagen-de-backup-reducida-y-con-auto-redimensionado-en-su-primer-arranque/
    Observar que también se puede hacer a mano con Gparted.
    Para obtener el .img, anotar el nº del último sector (lastpartsector) de la última partición. Como cada sector son 512 bytes, el siguiente comando haría el trabajo:
    # dd if=/dev/sdx of=Imagen_de_backup.img bs=512 count=lastpartsector status=progress
    Donde sdx debe sustituirse por el correspondiente al dispositivo, y ‘lastpartsector’ por el nº obtenido en la ventana Información de la partición en el Gparted.
    Una vez obtenido el fichero .img puede comprimirse con xz, que puede ser leído directamente por el software de grabación BalenaEtcher:
    xz -k –best Imagen_de_backup.img