PDA

Ver la Versión Completa : [TUTORIAL] Como portar ROMS basadas en Stock, GB, CM7, CM9


oamo
29/06/12, 20:41:36
NOTA: LEER TODO EL TUTORIAL Y PREGUNTAR POR MP CUALQUIER DUDA ANTES DE COMENZAR A EDITAR ARCHIVOS

Hola, primero quiero aclarar que esto solo es una traduccion de este post de xda

http://forum.xda-developers.com/showthread.php?t=1598713

Agradecimientos

*Peteragent5 (http://forum.xda-developers.com/member.php?u=4414170) Por crear el tutorial y aclararme unas dudas
*Un desconocido que posee un xperia x10 mini por ayudarme a traducir unas cosas xD
*Liberian Geek por su tutorial para ser root en ubuntu (http://www.liberiangeek.net/2012/05/login-as-root-in-ubuntu-12-04-precise-pangolin/)
*Chujat por su tutorial para recompilar el boot.img (http://www.htcmania.com/showthread.php?t=378504/)


Que necesitaras:
Notepad++ (http://sourceforge.net/projects/notepad-plus/)
WINRAR (http://www.rarlab.com/download.htm) (O algun software similar)
Una computadora (Windows, Linux, o Mac)
Sentido comun
Tener nociones del manejo de la terminal de ubuntu
*VMWare Player (https://dl.dropbox.com/u/45190901/VMware-player-4.0.4-744019.exe) (Workstation tambien funciona pero es mas pesado y requiere serial)
*El punto anterior solo en caso de no tener ubuntu ya en otra partición
*Si tienes ubuntu instalado, tener acceso a la cuenta root (en caso de no serlo, mandar MP preguntando o leer tutorial de Liberian Geek )
*Si no tienes ubuntu en otra particion, descargar el preinstalado para VMWare Player de aqui (http://sdrv.ms/MWXO5R)
*La version preinstalada de ubuntu incluye todo preconfigurado y listo para utilizar la consola y ahorrar tiempo (ver actualización 3 al final)
-Tamaño comprimido 1.47 GB
-Tamaño descomprimido 4.66 GB
*A quieres pregunten "Para que pones ubuntu" les respondo, lo pongo por que sera necesario para recompilar el kernel cosa que si no tiene tu rom no boteara.



Me referire a la rom que estas portando como "PORTED"
y a tu CM7/GB/Stock ROM como "BASE"

NOTAS:

*Debes saber si tu dispositivo es Armv7, Armv6, or Armv5. Tu Base y Ported deben tener el mismo procesador.
Puedes mirar dispositivos compatibles aqui (http://forum.xda-developers.com/showthread.php?t=1596800)
*Si la rom BASE tiene problemas, entonces la rom PORTED tendra los mismos problemas.
*Debes tener lista la carpeta META-INF en BASE (si utilizamos una CM7 por ejemplo esta ya esta lista)


Primero vamos a /system/app en BASE y hacemos respaldo de lo siguiente:
stk.apk
vpnservices.apk
camera.apk
bluetooth.apk
Lo realizamos en la carpeta que tu elijas (Puede ser en el escritorio)
Quote:
Eliminamos las siguientes carpetas de la rom BASE y las remplazamos por las de PORTED
/data
/system/app
/system/framework
/system/fonts
/system/media

Copiamos la lib libandroid_runtime.so de PORTED a BASE en /system/lib
Sin esto la ROM no boteara.
Copiamos el respaldo de apps a BASE en /system/app




A continuación copiamos todas las librerías y carpetas que están en system/lib de BASE y las pegamos en system/lib de PORTED. Decimos que remplace todo al momento de copiar, en esta ocasión NO BORRAMOS NADA de PORTED solo remplazamos. De BASE borramos la carpeta lib y movemos la carpeta lib de PORTED a BASE.

Vamos a la carpeta etc (/system/etc) de BASE y abrimos la carpeta init.d
Copiamos todo y lo pegamos en /system/etc/init.d de PORTED
De BASE, borramos la carpeta init.d
y de PORTED, copiamos la carpeta init.d a /system/etc BASE




--------Tomemos un descanso para los ojos aqui-----------

Offtopic, cual ha sido el videojuego que recuerdan con mas cariño de su infancia? XD
Bueno, no estan obligados a responder, sigamos…

-------- Tomemos un descanso para los ojos aqui -----------



¿Listos? OK. Vamos a la carpeta etc (/system/etc) de BASE y abrimos la carpeta permissions
Copiamos todo y lo pegamos en /system/etc/permissions de PORTED
En BASE, borramos la carpeta permissions
Y de PORTED, copiamos la carpeta permissions a /system/etc de BASE
(Esto es para corregir algunos problemas de permisos para las google apps)

Abrimos Notepad++ y abrimos build.prop de PORTED (/system)
Tambien abrimos build.prop de BASE, Editamos build.prop de PORTED, para que sea compatible con tu dispositivo.

ESTO ES MUY IMPORTANTE!

ro.build.description=
y
ro.build.fingerprint=

deben ser los mismos de build.prop de BASE!

Si no, la ROM no boteara!

Despues de hacer los cambios, salvamos el Build.prop de PORTED y cerramos NotePad++
Copiamos Build.prop de PORTED a BASE


En BASE, vamos a:
\META-INF\com\google\android
Abrimos de nuevo notepad++ y abrimos updater-script

De PORTED, vamos a:
\META-INF\com\google\android
y abrimos updater-script con notepad++

Debes tener 2 “updater-scripts” en las pestañas de notepad++
Editamos updater-script de BASE para que sea como updater-script de PORTED's

NO debes cambiar ningún symlinks

Solo cambiaras, editaras y/o añadiras “permissions , ui_prints , asserts , run_programs , e instalación de Kernel”


-----ESTO TAMBIÉN ES MUY IMPORTANTE!------
En el updater-script de BASE, ¡asegúrate de que el formato de valores sean para tu dispositivo!
-----ESTO TAMBIÉN ES MUY IMPORTANTE!------

Debemos asegurarnos de que el kernel es especifico para nuestro dispositivo.


(Ver actualización 1 y 2 al final)



La Rom final es BASE


Bien ahi termina, poco a poco ire anexando imagenes para que quede mejor explicado o en su defecto si alguien gusta donar las imagenes seran bienvenidas

TODO LO QUE HAGAS ES BAJO TU RESPONSABILIDAD

DEBIDO A QUE ES TU PORT, TU TE ENCARGARAS DE FIXEAR EN CASO DE BUG'S NO UTILIZES ESTE TEMA PARA PREGUNTAR COMO CORREGIRLO

NO LLENEMOS EL FORO CON PORT'S MAL HECHAS





NOTA (Ver actualización 1 y 2 al final)

OTRA NOTA: Tengan en cuenta las dimensiones de nuestra pantalla asi que, por ejemplo si van a basarse en una rom de ACE y ustedes tienen un dispositivo con una resolución menor, deben redimensionar los elementos, para eso pueden basarse en el post que publico Yuri >>AQUI (http://www.htcmania.com/showthread.php?t=407438)<< mas especifico, en la parte de "Cambiar cosas gráficas"

Dudas, quejas, sugerencias, aportes, mentadas de madre, seran bienvenidas ^^

Y bien, es todo, saludos y suerte en sus ports :ok:




Actualizaciones

-----------------------------------------------------------
1)


"Hmmmm. Lets see... The kernel is either the boot.img, zImage, or kernel.sin
Find a tool to unpack those. Once unpacked you can look for the file called: init.rc
Find a line called: BOOTCLASSPATH
Replace this with your PORTED's BOOTCLASSPATH
Repack the kernel.
And there! You're good to go! But you still need to do some more if you want to port from another manufacturer.
But nothing more has to be done to the kernel.
Just use your own Device's kernel and replace the BOOTCLASSPATH from the ROM you're porting's kernel. (The init.rc)"

Esas son palabras de Peteragent5, que traducido seria...

"Hmmmm. Veamos... El kernel is boot.img, zImage, o kernel.sin
Encuentra una herramienta para desempacar. Una vez desempacado encuentra un archivo llamado: init.rc
Encuentra la linea llamada: BOOTCLASSPATH
Remplaza esta linea por la linea BOOTCLASSPATH de PORTED
Re-empaca el kernel.
Solo utiliza tu kernel y remplaza la linea BOOTCLASSPATH del kernel de la rom PORTED. (The init.rc)"

(Ver actualizacion 2 y 3 solo si tu imagen es del tipo boot.img)
*Desconozco como hacer el procedimiento si tienes zImage o kernel.sin, investigare si veo movimiento en este post o lo anexare si alguien gusta ayudar con eso

-----------------------------------------------------------

2)

Guía de recompilacion de kernel en ubuntu preinstalado

*Algo magnifico de VMware es que te permite arrastrar y soltar archivos de ubuntu a windows y de windows a ubuntu directamente como si se trataran de un par de carpetas y no de sistemas operativos diferentes, en algunos casos si tratan de copiar de windows a ubuntu les puede marcar que no se ha podido, simplemente le dan a reintentar las veces que sean necesarias


Parte 1

-Vamos a la carpeta "Descargas\bt" y copiamos el boot.img de PORTED
-En el terminal que teniamos abierto escribimos "cd Descargas" sin comillas
-Ahora escribimos "cd bt" sin comillas
-A continuacion "mkdir -p unpack" sin comillas
-Ahora "tools/unpackbootimg -i boot.img -o unpack" sin comillas
-"mkdir -p unpack/boot.img-ramdisk" sin comillas
-"cd unpack/boot.img-ramdisk" sin comillas
-"gzip -dc ../boot.img-ramdisk.gz | cpio -i" sin comillas
-"cd ../../" sin comillas
-Se nos habrá creado una carpeta llamada unpack. Dentro de ella hay una carpeta llamada boot.img-ramdisk (dentro están los archivos del boot.img para modificar lo que queramos) también hay un archivo llamado boot.img.zImage, éste es el Kernel. Los demás archivos no se tocan.
-Ahora desde nautilus (el explorador de archivos) vamos a unpack > boot.img-ramdisk una vez situados ahi buscamos "init.rc"
-Le damos clic con boton derecho del mouse > propiedades > (pestaña) permisos > y en las tres opciones seleccionamos "Lectura y escritura" ademas de check "Permitir ejecutar el archivo como programa"
-Boton cerrar
-Le damos doble click ahora a "init.rc"
-En la ventana que aparezca le damos a "Mostrar"
-Buscamos la linea "BOOTCLASSPATH " que en mi caso es

"BOOTCLASSPATH /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar"

Asi de larga, nos daremos cuenta que antes de bootclasspath dice "export" no es necesario copiar esa parte

-Copiamos la linea en un papel, un txt, la mano, el brazo, o lo que quieran pero que este segura
-Cerramos el editor de texto
-vamos a la carpeta "bt" de nuevo desde nautilus y eliminamos el boot.img y la carpeta "unpack"


Parte 2

-Vamos a la carpeta "Descargas\bt" y copiamos el boot.img de BASE
-Abrimos una terminal y escribimos "cd Descargas" sin comillas
-Ahora escribimos "cd bt" sin comillas
-A continuacion "mkdir -p unpack" sin comillas
-Ahora "tools/unpackbootimg -i boot.img -o unpack" sin comillas
-"mkdir -p unpack/boot.img-ramdisk" sin comillas
-"cd unpack/boot.img-ramdisk" sin comillas
-"gzip -dc ../boot.img-ramdisk.gz | cpio -i" sin comillas
-"cd ../../" sin comillas
-Se nos habrá creado una carpeta llamada unpack. Dentro de ella hay una carpeta llamada boot.img-ramdisk (dentro están los archivos del boot.img para modificar lo que queramos) también hay un archivo llamado boot.img.zImage, éste es el Kernel. Los demás archivos no se tocan.
-Ahora desde nautilus (el explorador de archivos) vamos a unpack > boot.img-ramdisk una vez situados ahi buscamos "init.rc"
-Le damos clic con boton derecho del mouse > propiedades > (pestaña) permisos > y en las tres opciones seleccionamos "Lectura y escritura" ademas de check "Permitir ejecutar el archivo como programa"
-Boton cerrar
-Le damos doble click ahora a "init.rc"
-En la ventana que aparezca le damos a "Mostrar"
-Buscamos la linea "BOOTCLASSPATH " y ponemos lo que copiamos anteriormente, respetando la palabra "export"

-Una vez hecho las modificaciones escribimos en el terminal "tools/mkbootfs unpack/boot.img-ramdisk | gzip > unpack/boot.img-ramdisk.gz" sin comillas
-tools/mkbootimg --kernel unpack/boot.img-zImage --ramdisk unpack/boot.img-ramdisk.gz -o boot.img-repack --base `cat unpack/boot.img-base` (esta vez no puse comillas respeten los " ` "
-Dentro de la carpeta bt tendremos ahora un archivo llamado "boot.img-repack" ese es nuestro boot.img modificado, se elimina boot.img y le cambiamos el nombre a boot.img-repack por solo boot.img


-----------------------------------------------------------

3)

Instalación de ubuntu preinstalado en VMware Player

- Descargamos ubuntu y descomprimimos
- Abrimos VMware Player
- Le damos click en "Open Virtual Machine"
- De la carpeta descomprimida la abrimos y buscamos "Ubuntu" tiene un icono de 3 cuadrados sobrepuestos azules
- Le damos en abrir
- Esta configurado para trabajar con 1 nucleo y 1 Gb de ram
- Damos click en "Run Virtual Machine"
- Saltara un mensaje le damos clic a "I copied it"
- Saltara otro mensaje, le damos a "Yes"
- Comenzara a arrancar
- Si nuestra pc tiene pocos recursos graficos damos clic en el pequeño logo que esta arriba de Iniciar sesion y seleccionamos Ubuntu 2D
- Nos pedira usuario escribimos "root" (minusculas) y de contraseña "1111" sin comillas


(Ver actualización 2)

-----------------------------------------------------------

5)

Despues de pelearme con la resolucion de nuestro mini, me puse a investigar y de parte de DQiB (http://forum.xda-developers.com/member.php?u=4562714) recibi estas palabras...

"look in build.prop and change all 160 to 120 and it would be fine"


O sea, que para redimensionar debemos abrir el build.prop y adaptarlo a nuestro telefono, para eso buscamos la linea

ro.sf.lcd_density=

y el numero que haya ahi, lo cambiamos por 120 en el caso del galaxy mini y todo celular que cuente con resolucion de 320x240

-----------------------------------------------------------

6)

Personalmente, al momento de redimensionar la rom tuve el problema de que el dialer me daba fc, lo que hice fue que de la rom original, en mi caso chocobread, tome de "system\app" los apps de "DialerTabActivity" y "Phone", y los deje en una carpeta X, despues flashee, o sea, compile la rom con error. Despues tome las apps y volvi a recompilarla corregida, y sobre el primer flasheo (con error) volvi a flashearla corregida esta vez sin wipes. De ahi surgio mi fix, y el por que no deben wipear cuando aplican el fix
-----------------------------------------------------------

7)

Pre-rootear

facil

de su base original, copian la carpeta

xbin que esta en system y la pegan en BASE

de app de su base original copian superuser (system\app)
y lo pegan en system\app de su BASE


-----------------------------------------------------------


8) Extraer KDZ (Stock's LG)

Necesitan varias cosas:
Firmware Original LG (Archivo KDZ ejemplo: v10F.v10A,etc.) (http://forum.xda-developers.com/showthread.php?t=865479)
LG Utils 0.4.2 (Para descomprimir el KDZ) (http://www.assembla.com/spaces/ks360/documents/cCrKUYI_4r3QndeJe5afGb/download/cCrKUYI_4r3QndeJe5afGb)
DzDecryptor v1.0b (Para descomprimir un archivo que sale del KDZ) (http://forum.xda-developers.com/attachment.php?attachmentid=135921&d=1228843245)
Cygwin (Una consola de linux para windows, como el cmd) (http://cygwin.com/setup.exe)
Unyaffsmbn (Parte del cygwin) (https://dl.dropbox.com/u/45190901/unyaffsmbn.exe)


1. Creen una carpeta en su escritorio o en sus documentos y metan todo en eso para mas comodidad

2. En primer lugar tenemos que conseguir el archivo dz de la kdz (firmware original), extraimos de LG Utils 0.4.2 y ejecutamos KP500-Utils EN.exe (Es necesario ejecutar como administrador) , seleccione la opción I (Extraer archivos desde un archivo KDZ), y escriba la ruta a su archivo kdz (El mío es C: \ Users \ Patricio \ romcooking \ V10A_00.kdz).. Ahora, usted debe tener un archivo V10A_00.cab (u otro nombre, depende de la rom que ha descargado), abrirlo con winrar o similar y extraer el archivo "LGP500AT-00-V10a-EUR-XX-SEP- 25 a 2.010 0. dz "o similar a nuestra carpeta romcooking.
3.A continuación, vamos a descomprimir el dz con DZDecrypt (deben iniciar cmd con privilegios de administrador apretamos la tecla de windows + r y colocan cmd y llegan a donde se encuentra el archivo con el comando cd

Ejemplo

cd C:\Users\Patricio\romcooking\DZDecrypter_v0.2

despues entonces escribiriamos:

DZDecrypt.exe "C:\Users\Patricio\romcooking\AQUI VA EL NOMBRE QUE DESCOMPRIMISTE EN EL PASO 2.dz" C:\Users\Patricio\romcooking\stockrom

3.Esto va a crear una carpeta "stockrom" nuestra carpeta romcooking original, usted va a ver una gran cantidad de archivos en la carpeta stockrom, los más importantes son boot.img y system.mbn

En caso de que nos aparezcan 3 archivos (o mas) con nombre similar a lo siguiente

system.mbn_0 , system.mbn_1 y system.mbn_2

Vamos a la carpeta donde estan esos archivos (en el cmd de windows) y ponemos copy /b system.mbn_0 + system.mbn_1 + system.mbn_2 system.mbn anexamos los que sean necesarios en caso de que haya mas o quitamos si hay menos
De esta forma se generara un unico system.mbn


4.Tenemos que instalar cygwin, abra el archivo setup.exe, solo aprete next hasta que esté en la pantalla de selección de paquetes

a.En "Devel" seleccionar instalar gcc, y gdb
b.En "Interpreters" seleccione perl
c.En "Archive" zip y unzip
d.En" "Web" wget,
e.En "Editors" nano y vim
f.En "Util" cpio, util-linux y ncurses.

Ahora solo hay que dejar que se instale demora un tiempo


5.Ahora descomprimimos system.mbn
Para eso, copiamos Unyaffsmbn.exe, boot.img y system.mbn en una sola carpeta ejemplo "C:\zester"

a. Abrimos cygwin y ponemos..

Ejemplo

cd C:/zester


mkdir system

cd system

../unyaffsmbn.exe ../system.mbn

find bin -type l -exec rm {} +

cd..


Listo! busquen la carpeta "System" y ahi esta todo lo de la rom :pensando:
-----------------------------------------------------------

oamo
29/06/12, 20:46:47
Reservado

oamo
29/06/12, 20:49:24
reservado

adri_360
14/07/12, 13:15:22
Como agradecer te este tutorial.... BRAVO BRAVO! :D Increíble, como me funciome con un proyecto que tenia en la cabeza puf.
Una pregunta, este tuto valdría para portar una rom ICS a GB?

Saludos ;)



Mix Acura-Sammo

set92
14/07/12, 14:12:36
Soy tontito...xD para que serviria esto?Para cojer una rom de stock, CM7 o CM9 y crear una rom para tu dispositivo?o sirve para personalizar la rom de stock y crear otra rom para tu smartphone?
Es que no entiendo portar suele ser para tener una rom para tu dispositivo pero si se puede usar rom de stock entonces ya tienes una rom para tu movil, por lo que porque portar la rom?o se podria usar con la rom de stock de cualquier movil?

adri_360
14/07/12, 14:30:14
Soy tontito...xD para que serviria esto?Para cojer una rom de stock, CM7 o CM9 y crear una rom para tu dispositivo?o sirve para personalizar la rom de stock y crear otra rom para tu smartphone?
Es que no entiendo portar suele ser para tener una rom para tu dispositivo pero si se puede usar rom de stock entonces ya tienes una rom para tu movil, por lo que porque portar la rom?o se podria usar con la rom de stock de cualquier movil?

Creo que es para portar de otro móvil al tuyo.. creo jaja



Mix Acura-Sammo

loverdemat
28/07/12, 19:44:08
yo puedo tomar x ej la CM9 del galaxy s2 y portarla al galaxy ace?? ... usando com base una CM7??

concabeza
28/07/12, 22:23:55
yo puedo tomar x ej la CM9 del galaxy s2 y portarla al galaxy ace?? ... usando com base una CM7??

Creo que eso no se puede hacer,lo digo porque ahora que estan muy liados con el tema de jb para el hd2 se ven que ponen las ROMS base y todas han de ser jb para sacar una jb. Osea que si quieres sacar una ICS tienes que tener una ROM base ICS

loverdemat
29/07/12, 16:16:14
aaa... muchas gracias... probe haciendo JB con base cm7 y da Installed aborted xD... ahora veo el x que

y otra cosiiita... cuando modificamos el META-INF ... yo use de ported una rom del SG2 y tiene muchiiisimas mas lineas de comandos q las ROMs del Galaxy ace... que es lo q deberia modificar?? x que modifique algunas cosas pero creo q lo hice mal...

concabeza
29/07/12, 18:42:30
aaa... muchas gracias... probe haciendo JB con base cm7 y da Installed aborted ... ahora veo el x que

y otra cosiiita... cuando modificamos el META-INF ... yo use de ported una rom del SG2 y tiene muchiiisimas mas lineas de comandos q las ROMs del Galaxy ace... que es lo q deberia modificar?? x que modifique algunas cosas pero creo q lo hice mal...

Hasta hay no llega mi conocimiento,me gustaría entrar en el mundo de la cocina pero con los estudios ando muy liado,a ver si alguien que sepa más que yo te contesta.

Un saludo!

loverdemat
29/07/12, 21:56:20
hasta hay no llega mi conocimiento,me gustaría entrar en el mundo de la cocina pero con los estudios ando muy liado,a ver si alguien que sepa más que yo te contesta. Un saludo!

muchas gracias igual (:

oamo
24/08/12, 00:09:29
aaa... muchas gracias... probe haciendo JB con base cm7 y da Installed aborted xD... ahora veo el x que

y otra cosiiita... cuando modificamos el META-INF ... yo use de ported una rom del SG2 y tiene muchiiisimas mas lineas de comandos q las ROMs del Galaxy ace... que es lo q deberia modificar?? x que modifique algunas cosas pero creo q lo hice mal...

Debes revisar que sean de procesador compatible, el SG2 tiene un procesador diferente al Ace, por ahi puse una lista de compatibilidades

------

up!

Agregadas unas actualizaciones, entre ellas manipulacion de KDZ's de LG, tengo un poco abandonado este hilo...

robertocrack
12/09/12, 17:51:31
Tengo una duda, para usar una rom stock de base, como paso los archivos .tar del Odin al .zip con las carpetas META-INF y system??

oamo
17/09/12, 07:47:48
Tengo una duda, para usar una rom stock de base, como paso los archivos .tar del Odin al .zip con las carpetas META-INF y system??

le quitas el .tar y a lo que quede lo extraes como si fuera un vil rar, despues con magic iso descomprimes un tal "system"
pero te recomiendo que te bases en una rom que ya este basada en una stock, ya que... si te basas en la stock limpia despues viene el problema de la deodixada y no he encontrado nada para eso :P

robertocrack
19/09/12, 09:13:02
le quitas el .tar y a lo que quede lo extraes como si fuera un vil rar, despues con magic iso descomprimes un tal "system"
pero te recomiendo que te bases en una rom que ya este basada en una stock, ya que... si te basas en la stock limpia despues viene el problema de la deodixada y no he encontrado nada para eso :P

Gracias

Miguel mac
25/09/12, 12:35:57
Podría portar la ROM de un HDH mas moderno a otro mas antiguo?, no quiero ROM cocinadas por que suelen dar fallos, con la original sin lo de Vodafone me sirve.

oamo
25/09/12, 21:01:50
Podría portar la ROM de un HDH mas moderno a otro mas antiguo?, no quiero ROM cocinadas por que suelen dar fallos, con la original sin lo de Vodafone me sirve.

Todo depende de si el procesador es el mismo, al principio puse un link donde hay bastantes modelos de smathphone ordenados por tipo de procesador

Ultracity
02/11/12, 13:32:03
¿Se podrían portar ROMS de la gama NXT de Sony al Xperia U, por ejemplo?