andestas escribió:Acabo de abrir una imagen con el IsoBuster y he encontrado la ruta de los juegos. ¿Se pueden sacar juegos de una imagen e incluirlos en otra? ¿Así de simple?
IsoBuster te abre la imagen en modo sólo lectura.
Así que puedes extraer archivos de esa imagen, pero no puedes modificar el contenido de esa imagen.
Para ello tendrías que abrir la imagen en modo escritura, por ejemplo montándola desde un sistema linux.
Como una imagen de este tipo tiene varias particiones, deberás indicar al comando mount el punto donde comienza esa partición.
Y para saber dónde comienza la partición tendrás que multiplicar el número de sector por el tamaño del sector, que suele ser 512 bytes.
Ejemplo:
1. Descargo la imagen de Retropie
Código: Seleccionar todo
root@debian:~# wget -c https://github.com/RetroPie/RetroPie-Setup/releases/download/4.2/retropie-4.2-rpi2_rpi3.img.gz
2. Descomprimo la imagen
3. Miro las particiones incluídas
Código: Seleccionar todo
root@debian:~# fdisk -l retropie-4.2-rpi2_rpi3.img
Disco retropie-4.2-rpi2_rpi3.img: 2 GiB, 2162163712 bytes, 4222976 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0xd42bc226
Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo
retropie-4.2-rpi2_rpi3.img1 * 8192 124927 116736 57M e W95 FAT16 (LBA)
retropie-4.2-rpi2_rpi3.img2 124928 4220927 4096000 2G 83 Linux
4. Vamos a interpretar esta salida.
- Veo que tengo dos particiones, una FAT y otra Linux
- La partición Linux comienza en el sector 124928
- También me dice que el tamaño de cada sector es de 512
- Eso quiere decir que la partición Linux empieza en el byte (124928x512) 63963136
5. Voy a montar la partición que hay en la posición 63963136
Código: Seleccionar todo
root@debian:~# mount -o loop,offset=63963136 retropie-4.2-rpi2_rpi3.img /mnt/
6. Si ahora miramos en /mnt tendremos la imagen montada
Código: Seleccionar todo
root@debian:~# ls -la /mnt/
total 96
drwxr-xr-x 21 root root 4096 mar 3 16:27 .
drwxr-xr-x 22 root root 4096 jul 3 18:18 ..
drwxr-xr-x 2 root root 4096 mar 19 20:10 bin
drwxr-xr-x 2 root root 4096 mar 19 20:16 boot
drwxr-xr-x 4 root root 4096 mar 19 20:10 dev
drwxr-xr-x 93 root root 4096 mar 19 20:15 etc
drwxr-xr-x 3 root root 4096 mar 3 16:27 home
drwxr-xr-x 18 root root 4096 mar 19 20:10 lib
drwx------ 2 root root 16384 mar 3 17:17 lost+found
drwxr-xr-x 10 root root 4096 mar 19 20:11 media
drwxr-xr-x 2 root root 4096 mar 3 16:21 mnt
drwxr-xr-x 4 root root 4096 mar 19 19:48 opt
drwxr-xr-x 2 root root 4096 ene 7 2015 proc
drwx------ 2 root root 4096 mar 3 16:21 root
drwxr-xr-x 5 root root 4096 mar 3 16:27 run
drwxr-xr-x 2 root root 4096 mar 19 20:10 sbin
drwxr-xr-x 2 root root 4096 mar 3 16:21 srv
drwxr-xr-x 2 root root 4096 abr 12 2015 sys
drwxrwxrwt 4 root root 4096 mar 19 20:16 tmp
drwxr-xr-x 10 root root 4096 mar 3 16:21 usr
drwxr-xr-x 11 root root 4096 mar 3 16:21 var
7. Incluso podemos ver Retropie:
Código: Seleccionar todo
root@debian:~# ls -la /mnt/home/pi/RetroPie
total 24
drwxr-xr-x 6 debuser debuser 4096 mar 19 20:08 .
drwxr-xr-x 5 debuser debuser 4096 mar 19 20:16 ..
drwxr-xr-x 5 debuser debuser 4096 mar 19 20:07 BIOS
drwxr-xr-x 3 debuser debuser 4096 mar 19 19:56 retropiemenu
drwxr-xr-x 30 debuser debuser 4096 mar 19 20:07 roms
drwxr-xr-x 2 debuser debuser 4096 mar 19 20:08 splashscreens
8. Voy a modificar el sistema de ficheros, creando un archivo vacío
Código: Seleccionar todo
root@debian:~# touch /mnt/home/pi/probando
root@debian:~# ls -l /mnt/home/pi/probando
-rw-r--r-- 1 root root 0 jul 19 18:42 /mnt/home/pi/probando
9. Ahora desmonto la imagen
10. Con esto vemos que la imagen ha cogido la fecha y la hora actual, porque se acaba de actualizar
Código: Seleccionar todo
root@debian:~# date
mié jul 19 18:43:34 CEST 2017
root@debian:~# ls -l retropie-4.2-rpi2_rpi3.img
-rw-r--r-- 1 root root 2162163712 jul 19 18:43 retropie-4.2-rpi2_rpi3.img
11. ¡Ya está!
Ya puedo llevarme esa imagen modificada o grabarla directamente a mi microsd (en /dev/sdf)
Código: Seleccionar todo
root@debian:~# dd if=retropie-4.2-rpi2_rpi3.img of=/dev/sdf bs=4M