Reduir arxiu imatge abans de restaurar-lo a una tarja SD, etc…
##Partimos de un archivo imagen (.img) que queremos restaurar en una tarjeta sd, en mi caso para arrancar una raspberry pi. El problema encontrado es que el archivo (.img) no cabe en la sd por unos pocos megas 🙁 🙁
#Vamos a ver como reducir el fichero imagen.

=============================
#Habilitar los dispositivos loopback para trabajar con dispositivos en lugar de ficheros.
modprobe loop
#Crear un dispositivo de loopback para trabajar en él.
losetup -f
#Cargaremos el archivo imagen en el nuevo dispositivo.
losetup /dev/loop4 pivpnserver.img
#Cargar las particiones existentes.
partprobe /dev/loop4
=============================
#En este punto tocarà redimensionar, seguramente la última partición (en nuestro caso la segunda), por ser la que normalmente tiene el espacio disponible…
#Si tenemos entorno gràfico, lo podemos hacer fácilmente con el gparted.
#Pero desde la terminal también podremos hacerlo, usando el comando fdisk:
#Mostramos la tabla de particiones y tomamos nota del número del sector de inicio de la segunda partición.
fdisk /dev/sdb
p
#Estado original:
#Dispositiu Arrenc. Inici Final Blocs Id Sistema
#/dev/loop4p1 8192 98045 44927 c W95 FAT32 (LBA)
#/dev/loop4p2 98304 15759359 7830528 83 Linux
#Borramos la segunda partición.
d
2
#Volvemos a crear la segunda partición, comenzando en el mismo sector que antes, pero finalizando en un tamaño de partición menor que el original.
n
p
2
98304
+7G
#Volvemos a mostrar la tabla de particiones y si es correcta guardamos los cambios.
p
w
#Chequeamos la partición
e2fsck -f /dev/loop4p2
#En el superbloque, actualizamos el tamaño del sistema de ficheros para que coincida con el nuevo tamaño del dispositivo.
resize2fs /dev/loop4p2
=============================
#Desmontamos la imagen del dispositivo guardando los cambios efectuados.
losetup -d /dev/loop4
=============================
#Adaptar la medida de la imagen a lo que ocupen las particiones contenidas.
#Buscar el valor más alto para el campo End (14778367), último bloque de datos usado en la imagen, que nos servirá como límite a la hora de reducir el archivo. El tamaño del sector suponemos que es 512 bytes.
fdisk -l pivpnserver.img
#Reducir el tamaño del a imagen.
truncate –size=$[(14778367 + 1)*512] pivpnserver.img
#Hemos reducido el archivo imagen de 8,1GB a 7,6GB.
=============================
## … y a clonar!!
dd bs=4M if=pivpnserver.img of=/dev/sdb conv=sync
#Podemos comparar la nueva tabla de particiones con la original.
fdisk -l /dev/sdb
#Dispositiu Arrenc. Inici Final Blocs Id Sistema
#/dev/sdb1 8192 98045 44927 c W95 FAT32 (LBA)
#/dev/sdb2 98304 14778367 7340032 83 Linux