Cómo crear ".img" a partir de archivos

Cómo crear ".img" a partir de archivos

Estoy intentando modificar algunos archivos dentro de un archivo ".img".

Ejemplo:

logo-x.squashfs.img
romfs-x.squashfs.img
safeEnv.img
sign.img

Para eso, extraje el ".img" usando 7-Zip e hice los cambios necesarios. Sin embargo, no es posible archivar estos archivos modificados con 7-Zip, así que busqué una herramienta para hacerlo pero no pude encontrar una que fuera capaz de crear el ".img" como estaba originalmente.

Intenté usar ImgBurn pero parece crear un archivo diferente al original. También intenté usar DD pero no pude hacerlo funcionar con archivos en lugar de volúmenes.

Por favor, ¿cómo podría leer el archivo ".img" original para conocer su formato y crear uno nuevo a partir de los archivos nuevos?

Respuesta1

Si bien descubrió que 7-Zip puede convertir imágenes de squashFS en archivos individuales, la herramienta canónica para hacerlo probablemente sería rdsquashfs:

# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img

Luego, después de modificar los archivos dentro de foo, puede volver a empaquetarlos usando mksquashfs:

mksquashfs foo foo-updated.img

Creo que usar mksquashfscomo se indica arriba puede perder algunos de los metadatos del archivo de imagen original. Si esto es importante para su caso de uso, considere leer una descripción de la imagen original y usarla como referencia al crear la nueva imagen:

# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img
# Read description from image `foo.img' to file `foo.desc`:
rdsquashfs --describe foo.img >foo.desc

# Create image `foo-updated.img' from directory `foo' and description:
gensquashfs --pack-file foo.desc --pack-dir foo foo-updated.img

Respuesta2

Si lo haces...

file logo-x.squashfs.img

Y también...

sudo fdisk logo-x.squashfs.img

Luego 'p' para imprimir la información de la partición. Eso puede ser de alguna ayuda.

¿También podría ser mejor simplemente montar el archivo .img y agregar archivos a cualquier partición que necesite?

lsblk
sudo losetup --find logo-x.squashfs.img
lsblk

Ahora puede ver en qué dispositivo se encuentra el archivo .img (por ejemplo: /dev/loop6)

sudo mount /dev/loop6 /mnt

Respuesta3

Es posible crear una máquina QEMU y luego cargar esas imágenes en la máquina QEMU, donde aparecerán como un disco. Manipule los archivos en ese disco a voluntad y permanecerán así cuando desmonte el disco.

Para imágenes de calabazas, el proceso será un poco diferente. Podrías usar eldescomprimidosherramienta. ver esto parainformación detallada.

Básicamente es así (para sistemas de archivos squashfs):

unsquashfs /live/image/livefs.squashfs
touch modified-this.file
mksquashfs squashfs-root/ livefs.squashfs -noappend -always-use-fragments

información relacionada