Tengo un dispositivo OnePlus 6T que tiene un sistema de partición A/B y tiene una ROM de tipo usuario es decir [ro.build.type]: [user]
. Este dispositivo está rooteado con Magisk. Tengo un requisito (Quiero colocar un archivo sepolicy personalizado en el directorio system_root) para modificar system.img
.
He probado diferentes herramientas como:
-
OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/img-tools$ ./simg2img system.img sys.raw Formato de archivo disperso no válido en la cabecera mágica Error al leer el archivo disperso OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/img-tools$
-
OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/imgtool$ sudo ./imgtool system.img extract [sudo] contraseña para OMEN: system.img no es una imagen reconocida. Lo siento OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/imgtool$
-
y más herramientas incluso en Windows..
pero ninguna de ellas es capaz de analizar mi system.img
.
He copiado system.img
directamente de la configuración de la ROM de OnePlus6T que instala Android 9 en este dispositivo sin ningún problema.
¿Alguna ayuda sobre:
- ¿Cómo arreglar el system.img para que se extraiga y repaque correctamente?
- ¿Algún comando que pueda desempaquetar/reempacar system.img?
- ¿Alguna herramienta funcional para lograr esta tarea?
Actualización 1: He ejecutado file system.img
y he descubierto que es una imagen ext2 y las herramientas soportan ext4.
system.img: Sistema de archivos ext2 de Linux rev 1.0, UUID=d09c08e9-628d-590e-a610-3a14de2a8db0 (extensiones) (archivos grandes) (archivos enormes)
Actualización 2: Intenté encontrar el número mágico y obtuve el siguiente resultado:
OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/imgtool$ xxd system.img | head
00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea/imgtool$
Actualización 3: Encontré que la imagen ya está desempaquetada. Así que para agregar el archivo requerido, he montado la imagen como sudo mount -o loop system.img system_mount
y luego intentado copiar los contenidos a otra carpeta con cp system_mount/* system/
para poder agregar el archivo necesario y hacer una nueva imagen de ella, pero obtuve los siguientes errores:
root@OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea# mkdir system && cp system_mount/* system/
cp: se omite el directorio 'system_mount/acct'
cp: no se puede acceder a 'system_mount/bin': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/bt_firmware': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/bugreports': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/cache': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/charger': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/charger_log': No existe el archivo o directorio
cp: se omite el directorio 'system_mount/config'
cp: se omite el directorio 'system_mount/d'
cp: se omite el directorio 'system_mount/data'
cp: se omite el directorio 'system_mount/dev'
cp: no se puede acceder a 'system_mount/dsp': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/etc': No existe el archivo o directorio
cp: no se puede acceder a 'system_mount/firmware': No existe el archivo o directorio
cp: se omite el directorio 'system_mount/lost+found'
cp: se omite el directorio 'system_mount/mnt'
cp: se omite el directorio 'system_mount/odm'
cp: se omite el directorio 'system_mount/oem'
cp: se omite el directorio 'system_mount/op1'
cp: se omite el directorio 'system_mount/op2'
cp: no se puede acceder a 'system_mount/persist': No existe el archivo o directorio
cp: se omite el directorio 'system_mount/postinstall'
cp: se omite el directorio 'system_mount/proc'
cp: no se puede acceder a 'system_mount/product': No existe el archivo o directorio
cp: se omite el directorio 'system_mount/res'
cp: se omite el directorio 'system_mount/sbin'
cp: no se puede acceder a 'system_mount/sdcard': No existe el archivo o directorio
cp: se omite el directorio 'system_mount/storage'
cp: se omite el directorio 'system_mount/sys'
cp: se omite el directorio 'system_mount/system'
cp: se omite el directorio 'system_mount/vendor'
root@OMEN-by-HP-Laptop-15-dc0xxx:~/WorkArea#
1 votos
¿El system.img que tienes comienza con el hexadecimal
3AFF 26ED
? Si no es así, verifica si los bytes mágicos del encabezado del archivo son algo conocido.0 votos
Está mostrando como 00 00 00 00.. Por favor verifica la Actualización 2.
1 votos
Parece que la imagen ya está desempaquetada.
0 votos
Oh de verdad :o Entonces, ¿cómo agregar un archivo en este archivo .img?
0 votos
Lo siento, pensé que era obvio montar un archivo ext2/4 si quieres modificarlo.
0 votos
Montar tiene algún problema. Déjame añadirlo a la pregunta.
0 votos
Actualizado con Actualización 3
0 votos
¿Estás seguro de que el comando de montaje falló? Estos mensajes me parecen más bien advertencias.
1 votos
Utilice
busybox cp -acv
en lugar decp
si desea conservar los permisos. binario habilitado con selinux (x86_64) de busybox (funciona en pc)sudo mount -t ext4 -o loop,rw,noatime system.img system_mount
solo funciona cuando el directorio system_root existe en la misma ubicación que system.img0 votos
@Robert gracias a tu consejo descargué Ubuntu y pude extraer todos los archivos del archivo img. ¿Sabes cómo empacarlo de nuevo?