He estado tratando de crear una nueva imagen de Raspbian con un kernel diferente (con soporte CAN) y con Python 3.3 instalado. En lugar de hacer todo esto en la Raspberry Pi, pensé que sería interesante hacerlo en la computadora (siguiendo estas instrucciones ). Sin embargo, una vez que tuve la imagen montada y lista para funcionar, rápidamente me quedé sin espacio en disco. Supongo que esto se debe a que el tamaño de la imagen es lo suficientemente grande con la expectativa de que el usuario cambie el tamaño del sistema de archivos una vez que se haya escrito en una tarjeta SD.
¿Es posible cambiar el tamaño de la imagen y el sistema de archivos antes de escribirlo en la tarjeta SD para que pueda hacer más personalización sin quedarse sin espacio?
Respuestas:
Así es como cambiar el tamaño de un archivo de imagen sin formato. Sé que suena estúpidamente simplista, pero funcionará.
Cree una imagen en blanco, del tamaño que desea expandir el original (en mi ejemplo uso 5GB);
Agregue esto a la imagen original:
Cambie el tamaño del sistema de archivos que vive al final del disco (generalmente este es el que desea más grande):
¡Hecho! ¡Tu disco ahora debería ser 5GB más grande!
fuente
fdisk -l file.img
(era 122880) y luegolosetup --offset $((122880 * 512)) /dev/loop0 file.img
. Entonces podría utilizarresize2fs
en/dev/loop0
y poner en orden conlosetup -d /dev/loop0
. Si actualiza su respuesta para incluir esto, lo marcaré como la respuesta aceptada. Gracias por señalarme en la dirección correcta.resize2fs
en/dev/loop0
, pero se habían consigo un pánico del kernel en el arranque diciendo que el tamaño del superbloque y tamaño de la partición no coinciden:The filesystem size (according to the superblock) is 483840 blocks The physical size of the device is 458240 blocks
¿Se ha encontrado algo como esto?Esta es una síntesis de las respuestas anteriores y en otros lugares que funcionó para mí: haga una copia de seguridad de su imagen en caso de que cometa un error:
Primero, haga que el archivo de imagen sea más grande (aquí estamos agregando 1GB al final):
A continuación, asigne la imagen completa como un dispositivo de bucle para que podamos tocar la tabla de particiones
Para futuras referencias, volquémoslo:
La salida se ve así:
Ahora rehaceremos la última partición eliminándola, luego volviendo a crearla en la misma ubicación de inicio, el mismo tipo pero diferente ubicación final. Así que tome nota de la columna "Inicio" para loop0p2 (partición 2 - la partición de Linux) - la usaremos más tarde - aquí es 122880.
Ingrese lo siguiente (es seguro ingresar), no ocurre nada permanente hasta que haya leído mi explicación a continuación:
p
d
2
n
p
2
122880
p
Paso 1: imprime la tabla actual. Pasos 2-3: elimine la partición 2, Pasos 4-8: vuelva a crear la partición 2 con un nuevo punto final (el valor predeterminado es el final de la imagen), Paso 9: imprima la nueva tabla.
Suponiendo que su tabla recién impresa es idéntica a la tabla original, excepto por el valor Final y el valor Bloques (es decir, el tamaño ha cambiado) que está listo para confirmar.
Ingrese
w
para confirmar su cambio, luego ingreseq
para salir.Puede eliminar ese dispositivo de bucle invertido, haremos otro para la segunda partición. Recuerde el desplazamiento de inicio que anotó y usó anteriormente; lo usaremos nuevamente:
Eso creará un nuevo mapeo al
/dev/loop0
apuntar solo a la partición 2: para la referencia 512 es el tamaño de sector que puede ver en la primerafdisk
salida.Ahora cambie el tamaño de la partición para llenar el espacio disponible:
Listo - ahora limpia:
fuente
Para aquellos que tienen Oracle VM VirtualBox ejecutándose, es bastante fácil.
En una máquina Windows, las cosas son las siguientes:
input.img
Aquí está la imagen cuyo tamaño debe reducirse youtput.img
es la imagen final, en este ejemplo definida como 7000 MB de gran tamaño.Espero que esto ayude un poco.
fuente
Kernel panic - not syncing: VFS: Unable to mount rootfs on unknown-block(179,2)
Así es como cambiar el tamaño de un archivo de imagen sin formato. Sé que suena estúpidamente simplista, pero funcionará.
Cree una imagen en blanco, del tamaño que desea expandir el original (en mi ejemplo uso 5GB);
Agregue esto a la imagen original:
Lo siguiente es cambiar el tamaño de la partición y el sistema de archivos. Primero, obtenga el desplazamiento de la partición;
Resultados en una tabla como esta:
Tenga en cuenta el desplazamiento inicial de la segunda partición
Por último desmontar / dev / loop
¡Hecho! ¡Tu disco ahora debería ser 5GB más grande!
fuente