Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Cocina rk3188
#1
Pues bueno vamos a empezar a cocinar un poco aprovechando la nueva rom de Minix para su X7(15-11-3013).
Yo uso uso ubuntu, y de momento los otros dos cocineros idem, pero si se usa otra distro habrá que adaptar algunas cosillas.
Lo primero es descargar unas herramientas básicas de aquí:http://ubuntuone.com/680ETJqp4wQS7s4GXCHnRP
Creamos una estructura de directorios básicas.
Código:
cd ~
mkdir cocina
cd cocina
mkdir rktools
mkdir devices
Y en /cocina/rktools/ descomprimimos el fichero que os he mandado. con varios ejecutables y un script en perl

Lo primero que vamos a hacer es desempaquetar el archivo img y conseguir así las partes básicas de la rom.
Para ello usaremos rkunpack para nbo tener q poner la ruta completa a ese ejecutable creamos un enlace simbolico a el en /usr/local/bin y así podremos ejecutarlo desde cualquier sitio.

Código:
sudo ln -sf ~/cocina/rktools/rkunpack /usr/local/bin/rkunpack

lo primero es crear una carpeta para cada dispositivo y versión de rom que queramos hacer:

Código:
mkdir -p ~/cocina/devices/NeoX7/15-11-2013/sources
mkdir -p ~/cocina/devices/NeoX7/15-11-2013/temp

Ahora copiamos o movemos el archivo empaquetado img a ~/cocina/devices/NeoX7/15-11-2013/temp:

Código:
cp /ruta/donde/esta/el archivo/X7_20131111.img ~/cocina/devices/NeoX7/15-11-2013/temp/rom.img

Accedemos al directorio y desempaquetamos:

Código:
cd ~/cocina/devices/NeoX7/15-11-2013/temp/
rkunpack rom.img
nos debe salir algo como esto:

Código:
leolas@leolas-desktop:~/cocina/devices/NeoX7/15-11-2013/temp$ rkunpack rom.img
VERSION:2.0.2

unpacking
00000000-00000065 rom.img-HEAD 102 bytes
00000066-0002f9d3 rom.img-BOOT 194926 bytes
0002f9d4-1c8631d7 update.img 478361604 bytes

unpacking update.img
================================================================================
FIRMWARE_VER:4.2.2
MACHINE_MODEL:NEO-X7-216A
MACHINE_ID:007
MANUFACTURER:RK30SDK

unpacking 11 files
-------------------------------------------------------------------------------
00000800-00000fff package-file:package-file 595 bytes
00001000-00030fff bootloader:RK3188Loader(L)_V1.24.bin 194926 bytes
00031000-000317ff parameter:parameter_3188_box_x7_r3_4g:0x2000@0x0 606 bytes
00031800-0003d7ff misc:Image/misc.img:0x2000@0x2000 49152 bytes
0003d800-00a42fff kernel:Image/kernel.img:0x8000@0x4000 10506288 bytes
00a43000-00b3bfff boot:Image/boot.img:0x8000@0x12000 1018095 bytes
00b3c000-0180bfff recovery:Image/recovery.img:0x10000@0x20000 13434880 bytes
0180c000-1b025fff system:Image/system.img:0x130000@0x892000 427924480 bytes
1b026000-1c8327ff backup:backupimage/backup.img:0x20000@0x30000 25214980 bytes
1c832800-1c832fff update-script:update-script 933 bytes
1c833000-1c8337ff recover-script:recover-script 266 bytes
-------------------------------------------------------------------------------
================================================================================

0002f9d4-1c8631d7 rom.img-MD5 32 bytes
unpacked

Pues ya tenemos todo lo necesario para empezar a trabajar con la rom:
RK3188Loader(L)_V1.24.bin »Es nuestro bootloader.
parameter_3188_box_x7_r3_4g »Aquí tenemos un fichero con las particiones
Estos de a continuación son los ficheros que usaremos para hacer nuestra custom:
Image/boot.img
Image/kernel.img
Image/misc.img
Image/recovery.img
Image/system.img

Los demás ficheros podéis desecharlos, son un script para el recovery de stock, binarios del kernel, etc... tienen poca utilidad para nosotros por que no los vamos a usar. Los importantes los pasamos a sources:
Código:
mv Image/*.img ../sources/
cp para* ../sources/
cp RK* ../sources/

Bien pues todo esto lo hacemos con un script "unpackimg" lo llamo yo, solo tenéis que poneros en el mismo directorio donde se encuentra el archivo img que queremos desempaquetar y hacemos:
unpackimg X7_20131111.img NeoX7 15-11-2013

Y vuala dentro de NeoX7/15-11-2013/sources/ estan los archivos para meter mano a la rom.

El script:
Código:
#!/bin/sh

#Usage "unpackimg file.img device version"

rktool=~/cocina/rktools
dest=~/cocina/devices

mkdir $dest/$2
mkdir $dest/$2/$3
mkdir $dest/$2/$3/sources
mkdir $dest/$2/$3/temp
cp $1 $dest/$2/$3/temp/$1.tmp
cd $dest/$2/$3/temp/
$rktool/rkunpack $1.tmp
mv Image/*.img ../sources/
mv parameter ../sources/
mv *.bin ../sources/
cd ..
rm -rf temp
ls -l sources/*

Lo guardais como unpackimg, le dais permisos de ejecucion y enlace simbolico a /usr/local/bin/

leolas

RESERVADO -RESERVADO-RESERVADO

En construccion

RESERVADO -RESERVADO-RESERVADO
PARAMETER

Ahora vamos a estudiar un poco el fichero parameter, es un fichero de texto plano y aquí están algunos parametros q definen nuestro dispositivo, cogemos como ejemplo el de la rom que tenemos desempaquetada:
Código:
FIRMWARE_VER:4.2.2
MACHINE_MODEL:NEO-X7-216A
MACHINE_ID:007
MANUFACTURER:RK30SDK
MAGIC: 0x5041524B
ATAG: 0x60000800
MACHINE: 3066
CHECK_MASK: 0x80
KERNEL_IMG: 0x60408000
#RECOVER_KEY: 1,1,0,20,0
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00008000@0x00004000(kernel),0x00008000@0x00012000(boot),0x00010000@0x00020000(recovery),0x00020000@0x00030000(backup),0x00040000@0x00050000(cache),0x00800000@0x00090000(userdata),0x00002000@0x00890000(kpanic),0x00130000@0x00892000(system),-@0x009c5000(user)

Esta parte:
Código:
FIRMWARE_VER:4.2.2
MACHINE_MODEL:NEO-X7-216A
MACHINE_ID:007
MANUFACTURER:RK30SDK
MACHINE: 3066
ni idea de para q vale, por que ahí ponen lo que les da la gana, hay muchas rom 4.2 que ponen que son 4.1 y muchos 3188 que ponen q son 3066.
Estas otras lineas ni las miramos muy fuerte especialmete la de recover key:
Código:
MAGIC: 0x5041524B
ATAG: 0x60000800
CHECK_MASK: 0x80
KERNEL_IMG: 0x60408000
#RECOVER_KEY: 1,1,0,20,0
Y la que sí usamos que tiene el tamaño de las particiones es:
Código:
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00008000@0x00004000(kernel),0x00008000@0x00012000(boot),0x00010000@0x00020000(recovery),0x00020000@0x00030000(backup),0x00040000@0x00050000(cache),0x00800000@0x00090000(userdata),0x00002000@0x00890000(kpanic),0x00130000@0x00892000(system),-@0x009c5000(user)

En esta nos detenemos para analizarla mejor, hay q tener en cuenta que el minix X7 tiene una nand de 16 Gb la mayoría tienen solo 8Gb.
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:
0x00002000@0x00002000(misc),
0x00008000@0x00004000(kernel),
0x00008000@0x00012000(boot),
0x00010000@0x00020000(recovery),
0x00020000@0x00030000(backup),
0x00040000@0x00050000(cache),
0x00800000@0x00090000(userdata),
0x00002000@0x00890000(kpanic),
0x00130000@0x00892000(system),
-@0x009c5000(user)
Los números estan en hex, asi q cogemos por ejemplo la linea kernel:
0x00008000@0x00004000(kernel),
0x00008000 es el tamaño(size, para saberlo en kb tendríamos que convertirlo a decimal multiplicarlos por 512 y nos saldría el resultado en bytes. en este casao saldrían 16777216b que serían 16Mb
Formulita=size»»lo pasamos a decimal»»X512= tamaño en bytes
@0x00004000 es el offset, y es en el lugar de la nand en la que esa situada la partición.

Si cambias el tamaño de alguna partición tienes que ajustar el offset de todas las posteriores.
Particiones a las q conviene no tocar tamaño:
backup, kpanic, misc.
cache yo nunca la he cambiado, pero no creo que haya problemas, las demás al gusto.
Especialmente las q mas retoca la gente son userdata (/data/) y system. Para la gran mayoría de dispositivos aprox 2gb 0x00400000 para userdata y 0x000100000 500Mb aprox para system son suficientes, al tener 16Gb el X7 da mas juego a la hora de cambiar tamaños.
leolas

Por favor, leer y usar la búsqueda antes de preguntar, si no encuentras respuesta pregunta, que trataremos de ayudar en todo lo posible.

Si quieres invitarme a un café pulsa este botón! :)
Responder
#2
Bueno vamos con la segunda parte desempaquetado y empaquetado de Boot.img.

Ya tenemos nuestros ficheros necesarios en ~/cocina/devices/NeoX7/15-11-2013/sources/

Vamos a desempaquetar boot.img, añadirle soporte para init.d y empaquetarlo de nuevo.
Todo lo explicado aquí vale también para la partición recovery que es otro tipo de boot.img Guiño

Los archivos boot.img los hay de dos tipos con kernel dentro y sin él.
Como lo reconocemos? Muy fácil a simple vista si no tienen kernel son de 1-2Mb con kernel de 7-10Mb
También podemos reconocerlos mirando la cabecera del archivo con por ejemplo Ghex (sudo apt-get install ghex)
Si pone al principio del archivo ANDROID tiene kernel.
Si pone KRNL no tiene kernel.

Dependiendo de si tiene kernel o no usaremos una forma de desempaquetarlo, a la hora de empaquetarlo es igual, por que en nuestra custom dejaremos que sea el kernel en la partición kernel el que sea usado.
De todas formas vamos a ser ordenados y crearemos un directorio "work" donde trabajaremos con los ficheros:
mkdir -p ~/cocina/devices/NeoX7/15-11-2013/work
cp -p ~/cocina/devices/NeoX7/15-11-2013/boot.img ~/cocina/devices/NeoX7/15-11-2013/work/

Si nuestro boot no tiene kernel:
Código:
dd if=boot.img of=boot.gz skip=8 bs=1 count=20000000
mkdir boot
cd boot
gunzip < ../boot.gz | cpio -i --make-directories

Al copiar el archivo boot.img con dd nos saltamos los primeros 8 bits, esto es para eliminar la cabecera del fichero, es lo q añade rkcrc al empaquetar boot posteriormente.

En boot/ tenemos desempaquetado nuestro boot.img

Si nuestro boot.img tiene kernel, usaremos un script en perl que nos lo desempaqueta, os lo he pasado dentro de rktools (split_bootimg.pl), por lo que antes que nada enlace simbólico a /usr/local/bin/:

Código:
split_bootimg.pl boot.img
mkdir boot
cd boot
gunzip < ../boot.img-ramdisk.gz | cpio -i --make-directories

Lo mismo que el anterior, en boot/ tenemos nuestro boot.img desempaquetado.

En boot.img tenemos varios archivos de inicio .rc donde se define todo el cotarro, pero en rockchip suelen añadirle mucha porquería q no sirve de nada. Como dispositivos que no tenemos y servicios que no nos sirven de nada. Hay que limpiarlos un poco y a la hora de portar roms a otros dispositivos, por ejemplo del X7 al QX1 tendremos que añadirle algunas entradas nuevas. aqui lo importante es experimentar y encontrar que partes nos sirven y cuales podemos mandar a freír esparragos.

Algo que sí haremos aquí es añadir soporte para init.d, para ello en init.rc añadiremos:
Código:
#Init.d support
service runparts /system/xbin/run-parts /system/etc/init.d
    class main
    user root
    oneshot

Importante que consideramos que instalaremos posteriormente busybox en system/xbin/ si eligiésemos bin/ para instalarle el busybox tendríamos que corregir la linea de arriba.
Los scripts dentro de /system/etc/init.d/ no pueden tener extensión o la hemos liado y tener permisos 755 o para estar mas seguros 777 Guiño yo los llamo por ejemplo 00wifi 01nand.

Una vez terminado el trabajo con boot.img lo empaquetamos de nuevo para eso usamos otro de los binarios en rktools, "rkcrc" por lo que acordaros de hacerle un symlink a /usr/local/bin:

Código:
cd ~/cocina/devices/NeoX7/15-11-2013/work/boot
find . -exec touch -d "1970-01-01 01:00" {} \;
find . ! -name "." | sort | cpio -oa -H newc | gzip -n >../boot.gz
cd ..
rkcrc -k boot.gz new-boot.img

y tenemos new-boot.img que es nuestro nuevo boot modeado.

Si quisiesemos empaquetar un boot o recovery con kernel dentro, tendremos que usar otro ejecutable de rktools, en este caso mkbootimg, recordad hacer el enlace a /usr/local/bin/
Su uso seria:
Código:
mkbootimg --kernel NombreDelKernel --ramdisk NombreDelRamdisk.gz -o FicheroDeSalida.img

NombreDelKernel»Es el binario del kernel, el Image o Zimage que obtenemos al compilar un kernel, o el que podemos extraer de desempaketar la rom, OJO no nos vale el kernel.img, habría que quitarle la cabecera Guiño

NombreDelRamdisk.gz»Pues lo que su propio nombre indica siguiendo el ejemplo usado en este post sería boot.gz

FicheroDeSalida.img»Seria boot.img o recovery.img, o como querais llamarlo Guiño

Con esto damos por finalizado el apartado boot.img. Luego seguimos con system.img.
leolas

Por favor, leer y usar la búsqueda antes de preguntar, si no encuentras respuesta pregunta, que trataremos de ayudar en todo lo posible.

Si quieres invitarme a un café pulsa este botón! :)
Responder
#3
Pues ahora vamos a dedicarnos a nuestro system, luego estudiaremos el fichero parameter, una cosa muy importante es saber buscar el tamaño adecuado para nuestro system, a algunos cocineros les encanta estar sobrado de system, por si las moscas, a mi me parece mejor darle el tamaño justito, pero eso es al gusto, tenemos que procurar no pasarnos del tamaño standard que le dan en parameter, y aunque he visto algunos parameter de stock que van sobradísimos, a la hora de poder hacer ports para otros dispositivos nos las vemos y deseamos, por eso, y tras haber estudiado un montón de archivos parameter yo me decanto por unos 500Mb, a mi modo de ver mas que suficientes para la plataforma rockchip. para un system de 100000 en parameter el tamaño adecuado es 131084 bloques de 4096. Si quereis hacerlo mas grande, todo es cuestión de ir probando.
Personalmente a mi, aplicaciones de sistema las justas y necesarias, las demás me gusta instalarlas de user. Así quien las quiera quitar las quita sin problemas.

Empezamos creando un nuevo system, para esto vamos a crear un fichero de la longitud adecuada para nosotros y dentro de él creamos un ext4 filesystem:

Código:
cd ~/cocina/devices/NeoX7/15-11-2013/work
dd if=/dev/zero of=system.new.img bs=4096 count=131084
sudo mkfs.ext4 -q -b 4096 system.new.img

Ahora vamos a montarlo como root y creamos las carpetas para montarlos:

Código:
mkdir ~/cocina/devices/NeoX7/15-11-2013/work/system.new
sudo mount -t ext4 -o loop ~/cocina/devices/NeoX7/15-11-2013/work/system.new.img ~/cocina/devices/NeoX7/15-11-2013/work/system.new/

Ahora cogemos nuestro system original y lo copiamos a work/ y lo montamos tambien.
Código:
mkdir ~/cocina/devices/NeoX7/15-11-2013/work/system.orig
cp ~/cocina/devices/NeoX7/15-11-2013/sources/system.img ~/cocina/devices/NeoX7/15-11-2013/work/system.orig.img
sudo mount -t ext4 -o loop ~/cocina/devices/NeoX7/15-11-2013/work/system.orig.img ~/cocina/devices/NeoX7/15-11-2013/work/system.orig/

ahora vamos a quitarle la basura a nuestro system original, le empezamos a quitar todas las aplicaciones q vemos q no valen para nada o pueden ser instaladas como aplicaciones de usuario, en lugar de borrarlas lo que yo hago es moverlas a una carpeta q se llama bloat, puede que luego algunas de esas aplicaciones las aprovechemos luego para instalarlas como aplicaciones de usuario.

Código:
sudo mkdir ~/cocina/devices/NeoX7/15-11-2013/work/bloat
sudo nautilus ~/cocina/devices/NeoX7/15-11-2013/work/system.orig/app

Una vez hemos quitado todo lo que nos sobraba, tenemos listo nuestro system.orig para pasarlo a system.new:
Código:
cd ~/cocina/devices/NeoX7/15-11-2013/work
sudo cp -r -v --no-dereference --preserve=all system.orig/* system.new/

Ya tenemos nuestro system.new preparado para añadirle cosas, cada uno añade lo que quiere, lo mínimo es su, supersu, busybox y todos sus enlaces, podéis escoger el que queráis, o compilaros uno ustedes, yo prefiero hacer todo esto posteriormente, usando meld (sudo apt-get install meld). ya me curré un system.img con todos mis añadidos y con meld los paso a la rom. Mas tarde en la parte de tweaks os los explico todos.

Ahora demontamos los system y le pasamos e2fsck para comprobar que el system esa bien desmontado y ok.

Código:
sudo umount ~/cocina/devices/NeoX7/15-11-2013/work/system.orig
sudo umount ~/cocina/devices/NeoX7/15-11-2013/work/system.new
sudo e2fsck -y -v system.new.img

Borramos todos los directorios y basura.

Código:
sudo rmdir ~/cocina/devices/NeoX7/15-11-2013/work/system.orig
sudo rmdir ~/cocina/devices/NeoX7/15-11-2013/work/system.new
sudo rm ~/cocina/devices/NeoX7/15-11-2013/work/systemtemp.img

De momento lo importante es que ya sabemos desempaquetar nuestro boot.img y crearnos un nuevo system.img con el tamaño deseado. Todo esto lo hago yo con un script u su uso sería:

mkwork NeoX7 15-11-2013

Código:
#!/bin/shs

#Usage "mkwork device version"

dest=~/cocina/devices

#system.sys
mkdir $dest/$1/$2/work
mkdir $dest/$1/$2/work/system.orig
mkdir $dest/$1/$2/work/system.new
cd $dest/$1/$2/work
#crear nuevo system.new.img
echo "Creando nuestro nuevo systema de archivos systemnew.img"
dd if=/dev/zero of=$dest/$1/$2/work/systemnew.img bs=4096 count=131084
sudo mkfs.ext4 -q -b 4096 $dest/$1/$2/work/systemnew.img
#copia de system original
cp $dest/$1/$2/sources/system.img $dest/$1/$2/work/systemtemp.img
#
sudo mount -t ext4 -o loop $dest/$1/$2/work/systemtemp.img $dest/$1/$2/work/system.orig/
sudo ls -lR $dest/$1/$2/work/system.orig/* > system.files.list.txt
#debloat manually with nautilus and copy of bloatware is in bloatware and empty the thashbin
mkdir $dest/$1/$2/work/bloat
sudo nautilus $dest/$1/$2/work/system.orig/app/
sudo mount -t ext4 -o loop $dest/$1/$2/work/systemnew.img $dest/$1/$2/work/system.new/
#sudo chmod -R 664 $dest/$1/$2/work/bloatware/*
rm -rf $dest/$1/$2/work/system.orig/.Trash-0
echo "Copiando archivos desde el system original al nuevo system... Espera"
sudo cp -r -v --no-dereference --preserve=all $dest/$1/$2/work/system.orig/* $dest/$1/$2/work/system.new/ >/dev/null
sudo umount $dest/$1/$2/work/system.orig
sudo umount $dest/$1/$2/work/system.new
sudo e2fsck -y -v systemnew.img
sudo rmdir $dest/$1/$2/work/system.orig
sudo rmdir $dest/$1/$2/work/system.new
sudo rm $dest/$1/$2/work/systemtemp.img
#boot.img
echo "Boot"
mkdir $dest/$1/$2/work/boot
dd if=$dest/$1/$2/sources/boot.img of=$dest/$1/$2/work/cabecera.txt bs=4 count=1
read CAB < $dest/$1/$2/work/cabecera.txt
if [ "$CAB" = "KRNL" ];
then
echo "Cabecera de boot:"$CAB
#boot.img tiene kernel
dd if=$dest/$1/$2/sources/boot.img of=$dest/$1/$2/work/bootimg.gz skip=8 bs=1 count=20000000
cd $dest/$1/$2/work/boot
gunzip < $dest/$1/$2/work/bootimg.gz | cpio -i --make-directories
rm $dest/$1/$2/work/bootimg.gz
cd ..
fi
#boot.img no tiene kernel
if [ "$CAB" = "ANDR" ];
then
echo "Cabecera de boot:"$CAB
echo "Boot con kernel"
split_bootimg.pl $dest/$1/$2/sources/boot.img
mv $dest/$1/$2/work/boot.img-ramdisk.gz $dest/$1/$2/work/bootimg.gz
mv $dest/$1/$2/work/boot.img-kernel $dest/$1/$2/work/
cd $dest/$1/$2/work/boot
gunzip < $dest/$1/$2/work/bootimg.gz | cpio -i --make-directories
rm $dest/$1/$2/work/bootimg.gz
cd .
fi

Con este script hacemos todo lo anteriormente explicado. Y como resultado en la carpeta work/ tenemos nuestro boot.img desempaquetado en work/boot/ y nuestro nuevo system creado como systemnew.img y listo para ser montado y añadirle todo lo que queramos. Para montarlo y desmontarlo, yo uso un un par de scripts, monta y desmonta.

Script monta, para montar nuestro nuevo system solo tendríamos que poner:
Código:
monta NeoX7 15-11-2013

Código:
#!/bin/sh

#Usage "monta device version"

dest=~/cocina/devices

mkdir $dest/$1/$2/work/system.new

sudo mount -t ext4 -o loop $dest/$1/$2/work/systemnew.img $dest/$1/$2/work/system.new/

Script desmonta, lo mismo que anterior desmontaría el nuevo system y comprobaria el sistema de archivos en su interior:
Código:
desmonta NeoX7 15-11-2013

Código:
#!/bin/sh

#Usage "desmonta device version"

dest=~/cocina/devices

cd $dest/$1/$2/work/
sudo umount system.new/
sudo e2fsck -y -v $dest/$1/$2/work/systemnew.img
rmdir $dest/$1/$2/work/system.new

Una vez que hubiésemos terminado con todos los cambios en nuestro boot y system usaríamos el script prepara:

Código:
prepara NeoX7 15-11-2013

Código:
#!/bin/sh

#Usage "prepara device version"

dest=~/cocina/devices

mkdir $dest/$1/$2/rom_modded
#system
echo "Copiando nuestro nuevo system.img a la carpeta rom_modded"
cp $dest/$1/$2/work/systemnew.img $dest/$1/$2/rom_modded/system.img
#boot
echo "Creando nuestro boot.img en la carpeta rom_modded"
cd $dest/$1/$2/work/boot
find . -exec touch -d "1970-01-01 01:00" {} \;
find . ! -name "." | sort | cpio -oa -H newc | gzip -n >../customboot.gz
cd ..
rkcrc -k customboot.gz $dest/$1/$2/rom_modded/boot.img
rm $dest/$1/$2/work/customboot.gz
echo "Copiando las otras partes de la rom..."
#kernel
cp $dest/$1/$2/sources/kernel.img $dest/$1/$2/rom_modded/
#misc
cp $dest/$1/$2/sources/misc.img $dest/$1/$2/rom_modded/
#parameters
cp $dest/$1/$2/sources/parameter $dest/$1/$2/rom_modded/
#loader
cp $dest/$1/$2/sources/*.bin $dest/$1/$2/rom_modded/
#recovery
cp $dest/$1/$2/sources/recovery.img $dest/$1/$2/rom_modded/
leolas

Por favor, leer y usar la búsqueda antes de preguntar, si no encuentras respuesta pregunta, que trataremos de ayudar en todo lo posible.

Si quieres invitarme a un café pulsa este botón! :)
Responder
#4
lo que se llega a aprender contigo, gracias tio!
Apadrina una ROM, invítame a una birra! :D  
Responder
#5
Compañero... te merecen un Oscar y un Goya fusionados Sonrisa
Responder
#6
No es para tanto Guiño
leolas

Por favor, leer y usar la búsqueda antes de preguntar, si no encuentras respuesta pregunta, que trataremos de ayudar en todo lo posible.

Si quieres invitarme a un café pulsa este botón! :)
Responder


Salto de foro:


Usuarios navegando en este tema:
1 invitado(s)

Powered by MyBB.