Desempaquetar y empaquetar super.img y system.img. -
chujalt - 14-03-2021
Saludos.
Tengo una tablet teclast P20HD en el que las rom vienen con extensión .pac
En este hilo hice un tutorial de como abrir esa imagen
AQUI en entorno LINUX
Al abrir dicha imagen nos vemos varios archivos, entre ellos uno que se llama super.img el cual contiene a su vez varios archivos, entre ellos system.img
Vamos a abrir ese super.img, también system.img y vamos a volver a empaquetarlo todo.
He seguido básicamente el tutorial de
https://forum.xda-developers.com/t/editing-system-img-inside-super-img-and-flashing-our-modifications.4196625/ con algunas consideraciones porque está hecho para otra tablet.
Pondré el código linea por linea. También he hecho un script en bash que lo hace todo automáticamente.
1. Vamos a tener que instalarnos unas librerías
Código:
sudo apt install android-tools-fsutils
sudo apt install clang zlib1g-dev
2. Bajarnos unas herramientas de
AQUI
3. Descomprimimos el archivo recién bajado y veremos que está el script super.sh y una carpeta llamada lpunpack_and_lpmake-master que
fue extraída de
https://github.com/LonelyFool/lpunpack_and_lpmake, mérito a su autor, la abrimos, iniciamos un terminal con esa ruta y tecleamos.
Veremos que en esa carpeta hay dos archivos nuevos, lpunpack y lpmake. Los copiamos y los ponemos en una carpeta junto con super.img. Si queremos ejecutar el script para que haga todo automáticamente también pondremos en esa carpeta el archivo super.sh
4. Si hemos decidido no ejecutar el script y hacerlo nosotros manualmente, abrimos un terminal en la ruta donde tenemos los archivos y escribimos:
Código:
simg2img super.img super.ext4.img
Nos creará la imagen super.ext4.img con la que trabajaremos
Código:
./lpunpack super.ext4.img
Nos desempaquetará super.ext4.img. En el directorio ya podremos ver los archivos system.img, product.img y vendor.img.
Código:
fallocate -l 2G system.img
resize2fs system.img 2G
Con estas dos lineas redimensionamos system.img a 2Gb
Creamos un directorio llamado system
Código:
sudo mount -t ext4 -o loop system.img system
Montamos system.img y ponemos todo su contenido en la carpeta system. Ahora podremos hacer todos los cambios que necesitemos hacer.
Código:
sudo umount system
Desmontamos system, veremos que dicha carpeta se ha quedado vacía.
Código:
e2fsck -yf system.img
resize2fs -M system.img
e2fsck -yf system.img
Con estas tres lineas volvemos a redimensionar system.img al tamaño que debe tener.
Código:
stat -c '%n %s' system.img
stat -c '%n %s' product.img
stat -c '%n %s' vendor.img
stat -c '%n %s' super.ext4.img
Con estos comandos nos darán el tamaño en bytes de las imágenes, ojo, hay que anotarlo porque en el siguiente paso nos hará falta.
Código:
./lpmake --metadata-size 65536 --super-name super --metadata-slots 1 --device super:3145728000 --group main:2169016320 --partition system:readonly:1310846976:main --image system=./system.img --partition vendor:readonly:421638144:main --image vendor=./vendor.img --partition product:readonly:436531200:main --image product=./product.img --sparse --output ./super.nueva.img
OJO, cosas a tener en cuenta, en --device super:3145728000 debemos cambiar el número por la cantidad que nos dio anteriormente el tamaño en bytes de super.ext4.img, lo mismo en --partition system:readonly:1310846976:main --partition vendor:readonly:421638144:main y --partition product:readonly:436531200:main
En --group main:2169016320 debemos poner la suma de los tamaños en bytes de system.img, product.img y vendor.img
5. Veremos que en directorio tenemos un nuevo archivo llamado super.nueva.img, que es el nuevo super.img modificado por nosotros.
6. Si queremos hacerlo todo automáticamente y de manera mas rápida podéis utilizar el script super.sh.
Saludos.
RE: Desempaquetar y empaquetar super.img y system.img. -
dargons10 - 28-09-2021
Buenas.
Este artículo me viene genial ya que estaba buscando como empaquetar super.img ya que tengo los archivos necesarios aparte.
En mi caso tengo que empaquetar system system_ext vendor product y odm en un super.img así que veré si puede modificar el archivo .sh para que coja todos los archivos que necesito en mi caso.
RE: Desempaquetar y empaquetar super.img y system.img. -
chujalt - 28-09-2021
Saludos,
Espero que te vaya bien.
RE: Desempaquetar y empaquetar super.img y system.img. -
dargons10 - 28-09-2021
(28-09-2021, 20:43)chujalt escribió: Saludos,
Espero que te vaya bien. 
En mi caso que tengo las particiones que necesito para hacer la partición super, y partiendo de que no la tengo, como puedo saber cuanto ocupa super.ext4.img?
RE: Desempaquetar y empaquetar super.img y system.img. -
chujalt - 29-09-2021
Saludos.
en el penúltimo paso del tuto te lo pone, en este caso sería
Código:
stat -c '%n %s' super.ext4.img
Saludos
RE: Desempaquetar y empaquetar super.img y system.img. -
dargons10 - 29-09-2021
Pero ese no es mi caso.
He cogido una rom y la he descomprimido.
Tengo los archivos necesarios para hacer el super(system, vendor, product, odm y system_ext) pero no tengo el super que es lo que quiero construir.
Por eso pregunto cuanto sé lo que tengo que indicar que es en bytes la partición super
No sé si me he explicado bien.Saludos escribió:
RE: Desempaquetar y empaquetar super.img y system.img. -
chujalt - 29-09-2021
Creo que te entiendo.
Veo que la estructura de tu rom no es exactamente como la mía.
Me imagino que tienes la rom original, haz los primero pasos del tuto para crear super.ext4.img y luego haz el "stat -c '%n %s' super.ext4.img" para saber el espacio que tiene la imagen.
RE: Desempaquetar y empaquetar super.img y system.img. -
leocesarbin - 05-11-2021
(14-03-2021, 21:46)chujalt escribió: Saludos.
Tengo una tablet teclast P20HD en el que las rom vienen con extensión .pac
En este hilo hice un tutorial de como abrir esa imagen AQUI en entorno LINUX
Al abrir dicha imagen nos vemos varios archivos, entre ellos uno que se llama super.img el cual contiene a su vez varios archivos, entre ellos system.img
Vamos a abrir ese super.img, también system.img y vamos a volver a empaquetarlo todo.
He seguido básicamente el tutorial de https://forum.xda-developers.com/t/editing-system-img-inside-super-img-and-flashing-our-modifications.4196625/ con algunas consideraciones porque está hecho para otra tablet.
Pondré el código linea por linea. También he hecho un script en bash que lo hace todo automáticamente.
1. Vamos a tener que instalarnos unas librerías
Código:
sudo apt install android-tools-fsutils
sudo apt install clang zlib1g-dev
2. Bajarnos unas herramientas de AQUI
3. Descomprimimos el archivo recién bajado y veremos que está el script super.sh y una carpeta llamada lpunpack_and_lpmake-master que fue extraída de https://github.com/LonelyFool/lpunpack_and_lpmake, mérito a su autor, la abrimos, iniciamos un terminal con esa ruta y tecleamos.
Veremos que en esa carpeta hay dos archivos nuevos, lpunpack y lpmake. Los copiamos y los ponemos en una carpeta junto con super.img. Si queremos ejecutar el script para que haga todo automáticamente también pondremos en esa carpeta el archivo super.sh
4. Si hemos decidido no ejecutar el script y hacerlo nosotros manualmente, abrimos un terminal en la ruta donde tenemos los archivos y escribimos:
Código:
simg2img super.img super.ext4.img
Nos creará la imagen super.ext4.img con la que trabajaremos
Código:
./lpunpack super.ext4.img
Nos desempaquetará super.ext4.img. En el directorio ya podremos ver los archivos system.img, product.img y vendor.img.
Código:
fallocate -l 2G system.img
resize2fs system.img 2G
Con estas dos lineas redimensionamos system.img a 2Gb
Creamos un directorio llamado system
Código:
sudo mount -t ext4 -o loop system.img system
Montamos system.img y ponemos todo su contenido en la carpeta system. Ahora podremos hacer todos los cambios que necesitemos hacer.
Código:
sudo umount system
Desmontamos system, veremos que dicha carpeta se ha quedado vacía.
Código:
e2fsck -yf system.img
resize2fs -M system.img
e2fsck -yf system.img
Con estas tres lineas volvemos a redimensionar system.img al tamaño que debe tener.
Código:
stat -c '%n %s' system.img
stat -c '%n %s' product.img
stat -c '%n %s' vendor.img
stat -c '%n %s' super.ext4.img
Con estos comandos nos darán el tamaño en bytes de las imágenes, ojo, hay que anotarlo porque en el siguiente paso nos hará falta.
Código:
./lpmake --metadata-size 65536 --super-name super --metadata-slots 1 --device super:3145728000 --group main:2169016320 --partition system:readonly:1310846976:main --image system=./system.img --partition vendor:readonly:421638144:main --image vendor=./vendor.img --partition product:readonly:436531200:main --image product=./product.img --sparse --output ./super.nueva.img
OJO, cosas a tener en cuenta, en --device super:3145728000 debemos cambiar el número por la cantidad que nos dio anteriormente el tamaño en bytes de super.ext4.img, lo mismo en --partition system:readonly:1310846976:main --partition vendor:readonly:421638144:main y --partition product:readonly:436531200:main
En --group main:2169016320 debemos poner la suma de los tamaños en bytes de system.img, product.img y vendor.img
5. Veremos que en directorio tenemos un nuevo archivo llamado super.nueva.img, que es el nuevo super.img modificado por nosotros.
6. Si queremos hacerlo todo automáticamente y de manera mas rápida podéis utilizar el script super.sh.
Saludos.
Hola , excelente aporte … funciona para mi aunque tengo un inconveniente con las ediciones que realizo en el sistema , ya sean aplicaciones que reemplazo en el momento de flashear la rom en mi dispositivo no se instalan dichas aplicaciones aun estando en el sistema , me imagino que es algún error en el momento de editar el sistema , cual sería la forma correcta de reemplazar aplicaciones en modo superusuario en Linux cuando está montado el System.img ( ya que no me permite borrar nada y haciéndolo de la manera que lo hago me da ese error “sudo nautilus” )
RE: Desempaquetar y empaquetar super.img y system.img. -
chujalt - 05-11-2021
Saludos.
La carpeta system esta montada como root, con tu usuario normal no te dejara escribir en ella.
Si no estás acostumbrado a moverte por directorios y trabajar en ellos desde la consola de comandos, escribe en un terminal sudo nautilus (o nemo, según el gestor que tenga tu distribución), se te abrirá una nueva ventana de gestor de archivos, está vez con privilegios root, haces todos los cambios que tengas que hacer y luego cierras ese terminal con lo que se cerrará esa ventana de gestor de archivos.
Saludos.
RE: Desempaquetar y empaquetar super.img y system.img. -
leocesarbin - 13-11-2021
(05-11-2021, 20:08)chujalt escribió: Saludos.
La carpeta system esta montada como root, con tu usuario normal no te dejara escribir en ella.
Si no estás acostumbrado a moverte por directorios y trabajar en ellos desde la consola de comandos, escribe en un terminal sudo nautilus (o nemo, según el gestor que tenga tu distribución), se te abrirá una nueva ventana de gestor de archivos, está vez con privilegios root, haces todos los cambios que tengas que hacer y luego cierras ese terminal con lo que se cerrará esa ventana de gestor de archivos.
Saludos.
Hola amigo , exactamente asi lo hago con el gestor de archivos que sale al poner sudo nautilus , elimino apps que no deseo y coloco apps nuevas , obtengo mi super.img nuevo , lo coloco en mi rom desempacada , renombro a super.fex , vuelvo a empacar mi rom , obtengo mi nuevo rom.img , flasheo por usb , el equipo acepta la rom , el equipo arranca con normalidad , pero sin instalarse nada de lo nuevo que puse , por ejemplo aplicaciones , entonces instalo un apk explorador de archivos y entro en la carpeta del sistema y veo que las apps que coloque estan ahi , pero no se instalaron y se dañaron porque quiero instalarlas desde ahi y me salen error en el paquete (aclaro que son apps que son probadas y funcionan si las instalo desde mi usb ) , entonces asumo que hubo un error en el momento de editar cuando tenia montado el system.img
Esto me sale cuando pongo en mi terminal sudo nautilus
** (org.gnome.Nautilus:10704): WARNING **: 16:46:35.144: Unable to get contents
of the bookmarks file: Error al abrir el archivo /root/.gtk-bookmarks: No existe
el archivo o el directorio** (org.gnome.Nautilus:10704): WARNING **:
16:46:35.149: Unable to get contents of the bookmarks file: Error al abrir el
archivo /root/.gtk-bookmarks: No existe el archivo o el directorioNautilus-
Share-Message: 16:46:35.738: Called "net usershare info" but it failed: Falló al
ejecutar el proceso hijo «net» (No existe el archivo o el directorio)
y esto me sale cuando termino de editar system y obtengo super.img nuevo
Cuando hayas terminado los cambios pulsa Intro para volver a empaquetar.:
e2fsck 1.46.3 (27-Jul-2021)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
vendor: 673/11008 ficheros (0.3% no contiguos), 31875/524288 bloques
resize2fs 1.46.3 (27-Jul-2021)
Cambiando el tamaño del sistema de ficheros en vendor.img a 31828 (4k) bloques.
El sistema de ficheros en vendor.img tiene ahora 31828 bloques (de 4k).
e2fsck 1.46.3 (27-Jul-2021)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
vendor: 673/688 ficheros (0.3% no contiguos), 31155/31828 bloques
lpmake I 11-12 16:53:28 10821 10821 builder.cpp:1012] [liblp]Partition system will resize from 0 bytes to 1194041344 bytes
lpmake I 11-12 16:53:28 10821 10821 builder.cpp:1012] [liblp]Partition vendor will resize from 0 bytes to 130367488 bytes
lpmake I 11-12 16:53:28 10821 10821 builder.cpp:1012] [liblp]Partition product will resize from 0 bytes to 113278976 bytes
Invalid sparse file format at header magic
Invalid sparse file format at header magic
Invalid sparse file format at header magic
Ya ha finalizado. Tendrás un nuevo archico con el nombre super.nueva.img. Pulsa Intro para finalizar
si hay algun error en estos detalles , agradeceria que me ayudaras ,,, gracias de antemano