Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte:  Desempaquetar y empaquetar super.img y system.img.
#1
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/editi...s.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.

Código:
./make.sh

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

Código:
mkdir system

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.
Responder
#2
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.
Responder
#3
Saludos,

Espero que te vaya bien.  Guiño
Responder
#4
(28-09-2021, 20:43)chujalt escribió: Saludos,

Espero que te vaya bien.  Guiño

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?
Responder
#5
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
Responder
#6
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ó:
Responder
#7
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.
Responder
#8
(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/editi...s.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.

Código:
./make.sh

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

Código:
mkdir system

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” )
Responder
#9
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.
Responder
#10
(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
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)