Quería preparar una distribución para algunos amigos.
Como no tenía nada más por ahí, utilicé una tarjeta SD de 16 Gb.
Comencé con la imagen predeterminada de Debian Weezy 2Gb y no hice ningún cambio de tamaño.
Ahora, como he terminado, quería crear una imagen de lo que hice, pero obtengo un archivo de 16 Gb, que contiene 14 Gb de espacio no particionado (no particionado y libre) al final.
[Usé Windows // Win32DiskImager ya que no tengo nada libre para pegarme en el rPI en este momento]
¿Puedo truncar el archivo de imagen justo detrás del espacio particionado y transferir la parte principal a una tarjeta más pequeña?
dd if=/dev/path/to/SD/card of=~/SpecialImage.img
, luego instale GParted y ejecutegparted ~/SpecialImage.img
. Una vez que GParted abra su.img
archivo, ¡simplemente cambie el tamaño de las particiones a su gusto! (Ambos comandos deben ejecutarse como root,sudo su
deben obtener lo que necesita. Cuando$
cambia a a#
, usted es Root. Tenga cuidado, este es el equivalente de Dios para Linux.) GParted es básicamente una interfaz gráfica de usuario para la gestión de partición arcana. herramientas que necesitarás. Usar GParted simplemente hace que todo sea mucho más simple y más probable para tener éxito.Respuestas:
Finalmente encontré un recurso que explica mi pregunta.
Corto:
Sí, es posible truncar!
Resumen del proceso:
Extrayendo la información de partición de la imagen usando
fdisk
:Vemos que la partición tiene un tamaño de aproximadamente 2,8 Gb (5872026 * 512), el resto no está particionado .
Entonces, todo después del final de la partición se puede eliminar.
Esto se hará con la herramienta
truncate
. No olvide agregar 1 al número de sectores, ya que los números de bloque comienzan en 0.Editar:
Para los que están siendo demasiado perezosos para cambiar a Linux:
También funciona en Windows con Cygwin 's
fdisk.exe
ytruncate.exe
!¿Qué es cygwin?
Puedo citar: "Cygwin: tenga esa sensación de Linux en Windows" ( https://www.cygwin.com/ ).
Es un conjunto de ejecutables que pueden ejecutarse en Windows, pero proporcionan todos los programas de línea de comandos que generalmente conoce de Linux. Cygwin puede tardar mucho tiempo en instalarse si selecciona cada paquete durante la instalación, pero para seguir este ejemplo, simplemente asegúrese de que, además de la configuración predeterminada, también estén seleccionados los paquetes
util-linux
(fdisk) ycoreutils
(truncar).Dependiendo de su entorno, su hombre necesita agregar
/usr/bin
y/usr/sbin
su$PATH
.fuente
fdisk.exe
ytruncate.exe
?Sé que esta es una pregunta antigua, pero me gustaría mostrar cómo hacer este proceso en Mac, porque no es tan fácil:
fdisk
no tiene la-l
opción ytruncate
no está instalado de manera predeterminada:1. Paso 1: Instale truncate en Mac OS X:
Necesitas MacPorts o Homebrew para esto. Yo uso MacPorts. Si no tiene uno de estos, continúe e instálelos primero. Enlace a MacPorts
Ahora, podemos instalar truncar . Abre tu Terminal y escribe:
Para la instalación de Brew:
Esto debería hacerlo.
2. Use Disk Utilities para montar nuestro IMG de modo que sea visible para el comando del terminal diskutil .
Verá en un momento por qué necesitamos este paso. Abre la aplicación Disk Utility. Haga clic en Archivo (en la barra superior) -> Abrir imagen de disco y seleccione su archivo IMG.
3. Verifique el tamaño de la partición del IMG y dónde está montado.
En una terminal, escriba:
Y debería mostrar algo como esto, en algún lugar al final:
Entonces, vemos que alrededor de 12 GB no están particionados. Necesitamos truncar esos.
La razón por la que necesitamos este comando es para verificar dónde está montada la imagen del disco. En mi caso, está bajo: / dev / disk3
4. Averigüe el tamaño real de la partición.
3.9 GB y 62.9 MB son valores que no funcionarán con truncamiento. Necesitamos encontrar los tamaños de partición en bytes.
5. Ejecute fdisk .
En su Terminal, ejecute este comando:
Donde X es el número que descubriste en el paso anterior. Esto debería resultar en algo como esto:
6. ¡Hora de truncar !
En su terminal,
cd
al directorio en el que se encuentra su imagen. Luego escribir:ARCHIVO es su archivo, por supuesto.
TAMAÑO es el tamaño en bytes. Lo que hice fue agregar a la columna de tamaño del
fdisk
comando, la columna de inicio y multiplicar por 512. Entonces, en mi caso, TAMAÑO será: 512 * (7553024 + 131072) = 3934257152 , que es aproximadamente 3.9 GB.Necesitará el inicio y el tamaño de la última partición que muestra
fdisk
. (No necesariamente el más grande, pero el que está al final del archivo IMG)7. (Opcional) Pruebe fácilmente si el IMG no está dañado.
Vaya una vez más a la Utilidad de Discos e intente abrir el nuevo archivo IMG como antes. Si se monta, también puede ver el nuevo tamaño (más pequeño) . Si no se monta, algo salió mal. (Tal vez intente aumentar el tamaño en el
truncate
comando)¡Espero que alguien encuentre esto útil!
fuente
512*(Size+1)
no funciona. Como puede ver, solíaEnd
y noSize
, ya que debe mantener ambas particiones si hay más de una. Entonces, ¡usar7553024 + 131072
(+1
) es 100% correcto!Win32DiskImager reciente tiene una opción para incluir solo particiones asignadas en la imagen del disco. Esto hará el recorte en un clic.
fuente
Es algo que noté recientemente, ya que hago muchas de estas operaciones de Win32diskimg para hacer una copia de seguridad de mis imágenes RPI para la implementación. Recientemente comencé a probar fstrim SD "trimming" para limpiar partes de la tarjeta SD que no están en uso para nivelar teóricamente el desgaste. No estoy seguro sobre el efecto que tendrá, pero un efecto secundario fue cuando tomé una imagen de la partición SD de 16GB y luego usé 7zip para comprimirla. Pasé de los usuales 16GB a 9.5GB para ahora un archivo de 2.5GB. Estoy probando ahora para asegurarme de que nada está mal, pero parece que usar TRIM para marcar el espacio no utilizado como 0 hace que la compresión de la imagen sea mucho más eficiente (lo cual tiene sentido). Solo quería informar sobre esto, fue muy fácil de lograr y no hubo múltiples pasos.
fuente