Reduir arxiu imatge abans de restaurar-lo a una tarja SD, etc…

blog
3 de novembre de 2020

##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
 

Avís de privacitat

Este lloc web utilitza només cookies tècniques necessàries per al seu funcionament. No s’emmagatzemen dades amb finalitats publicitàries ni es comparteixen amb tercers. S’utilitza analítica interna sense cookies, i només es recull la IP amb finalitats de seguretat.

Veure política de cookies