linux - telefono - instalar raspbian en sd
¿Cómo crear una imagen.IMG de un disco(tarjeta SD) sin incluir espacio libre? (3)
En Linux, podemos hacer
dd if=/dev/sdb of=bckup.img
pero si el disco es de 32 GB con solo 4 GB, el archivo de imagen de 32 GB es un desperdicio de espacio-tiempo. ¿Hay alguna forma o herramienta para crear imágenes con solo datos válidos?
Lo mejor que puedes hacer es
Copia todos los archivos de todas las particiones conservando metadatos.
mkdir -p myimage/partition1
mkdir myimage/partition2
sudo cp -Rrf --preserve=all /media/mount_point_partition1/* myimage/partition1/
sudo cp -Rrf --preserve=all /media/mount_point_partition2/* myimage/partition2/
Extraer el MBR
sudo dd if=/dev/sdX of=myimage/mbr.img bs=446 count=1
Reemplace
/dev/sdX
con el dispositivo correspondiente.Particione el disco de destino en particiones con tamaños mayores que los datos copiados y debe tener el mismo formato y las mismas
gparted
usandogparted
. Google cómo particionar un disco.Monte el disco recién formateado y particionado. En la mayoría de las computadoras, solo necesita conectar el disco y puede encontrar las particiones montadas en
/media
carpeta/media
.Copie los datos previamente copiados a las particiones de destino usando los siguientes comandos
sudo cp -Rrf --preserve=all myimage/partition1/* /media/mount_point_partition1/
sudo cp -Rrf --preserve=all myimage/partition2/* /media/mount_point_partition2/
Copia de nuevo el MBR
sudo dd if=myimage/mbr.img of=/dev/sdX bs=446 count=1
Ahora njoy tu nuevo disco!
Una forma bastante buena y sencilla de lidiar con esto es simplemente canalizarlo a través de gzip, algo como esto:
# dd if=/dev/sdb | gzip > backup.img.gz
De esta manera, su imagen se comprimirá y lo más probable es que el espacio no utilizado quede comprimido a casi nada.
Usaría esto para restaurar tal imagen de nuevo:
# cat backup.img.gz | gunzip | dd of=/dev/sdb
Una nota: si tenía una gran cantidad de archivos que se eliminaron recientemente, el tamaño de la imagen puede ser aún grande (la eliminación del archivo no necesariamente pone a cero los sectores subyacentes). Puede limpiar el espacio libre creando y borrando inmediatamente archivos grandes que contengan ceros:
# cd /media/flashdrive
# dd if=/dev/zero of=bigfile bs=1M # let it run and quit by disk full error
# rm bigfile
Usando los parámetros bs y count de dd
, puede limitar el tamaño de la imagen, como se ve en el paso 2 de la respuesta 1665017 .
Es posible que ya sepa qué tamaño de imagen desea crear. Si no, puedes obtener una buena idea de df
:
df -H --total /
Sustituya /
con una lista separada por espacios de todos los puntos de montaje relacionados con las particiones de disco.
Una forma más precisa podría ser usar fdisk
o su editor de particiones preferido y ocuparse de una calculadora.
$ fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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: 0x00057540
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 186367 184320 90M c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 3481600 1.7G 5 Extended
/dev/mmcblk0p5 188416 3667967 3479552 1.7G 83 Linux
El espacio total utilizado en bytes = sector final del tamaño del sector X de la última partición (aquí es 3667967 x 512).
Total de espacio utilizado en GB = total de espacio utilizado en bytes / 1024 3 (aquí es 1.749023 GB).
Si decide, por ejemplo, que su imagen debe ser exactamente de 2 GB, el siguiente comando lo hará:
dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048
La imagen resultante también incluirá el ruido aleatorio más allá de la mayor extensión de la última partición.
No olvide sudo
los comandos anteriores si su cuenta no tiene suficientes privilegios.
Para mis propósitos, no necesito una imagen que esté perfectamente recortada hasta el último bit de datos, por lo que cuando el tamaño real es 1.75 GB, entonces una imagen de 2 GB es lo suficientemente cerca para mí. Esto elimina los otros 6 GB (o 30 GB o lo que sea que tenga el dispositivo) de espacio no utilizado que de lo contrario estaría en la imagen.
He visto consejos en muchos lugares que no deberían realizarse dd
en una partición montada y lo seguí porque parece intuitivamente correcto; Parece más bien como intentar dibujarse a sí mismo haciendo un boceto en un espejo con el boceto que está haciendo también visible en el boceto. Es un poco vago.