domingo, 18 de noviembre de 2012

Tutorial: como hacer nuestra propia rom para galasy s Parte 1


Cocina tu propia ROM

Bueno, pues esto es una guía básica para crear un ROM partiendo de una stock rom en formato .tar típica de samfirmware, instalarle root y busybox, establecer de serie el kernel que más rabia nos de, poner nuestro productcode y salescode preferido y añadirle o quitarle las apps que queramos. Después de eso podremos aplicar una serie de optimizaciones opcionales y pongo algunos extras a modo de ejemplo para hacerse a un idea de como se pueden ir añadiendo cosillas a nuestra criatura.

Esta guía no está pensada para que esté actualizada al día, por eso usaremos una rom como ejemplo, extraeremos su estructura, sabremos que hace cada cosa, nos familiaricemos con la sintaxis y formato, identificar archivos esenciales, etc.
La idea es que a partir de aquí sepas moverte por otras custom roms, saber adaptarte a nuevas versiones, aprender cosillas nuevas, integrarlas en tus proyectos, etc.... pero recuerda que si la publicas debes mencionar de dónde has sacado el material. El plagio es comunidades de desarrolladores o modders es reprobable.

Al lío.

Hay dos opciones para extraer un /system original, uno flasheando un stock rom con kernel de serie, instalar un CWM, hacer un nandroid backup
y extraer el system.img siguiendo este tuto para windows y linux http://www.htcmania.com/showthread.php?t=156996 o montando una imagen factory.rfs que es como se plantea este tutorial.

Lo primero es descargar una stock rom en formato .tar para flashear desde ODIN, por ejemplo una nueva JPU. Descomprimimos todos los tar.md5, y buscamos factoryfs.rfs


Montando imagen factoryfs en Windows :
Puedes usar programas como Poweriso o MagicISO

Montando imagen factoryfs en linux
:
Código:
mkdir factoryfs
sudo  mount -o loop factoryfs.rfs ./factoryfs
Creamos nuestra carpeta de trabajo ROM:
  • Copia el contenido de /factoryfs a /ROM/system

  • Borrar los siguientes archivos:
/system/bin/ --->[cat, chmod, chown ,cmp, csview, date, dd, df, dmesg, dumstate, getevent, getprop, hd, id, ifconfig, iftop, insmod, ioctl, ionice, kill, ln, log, ls, lsmod, mkdir, mount, mv, nandread, netstat, newfs_msdos, notify, printenv, ps, reboot, renice, rm, rmdir, rmmod, route, schedtop,sendevent, setconsole, setprop, sleep, smd, start, stop, sync, top, umount, vmstat, watchprops,wipe]
/system/etc/ ----> [autorun.iso] (este es el "wimax windows installer" que no necesitamos)
  • Ahora, del zip "extras.zip" adjunto, extrae y coloca los siguientes archivos y carpetas en /ROM:
http://www.multiupload.com/ON4MJ68UVK

ROM/system/bin/zipalign ----> (binario necesario para hacer zipalign)
ROM/system/xbin/su -- -->(binario necesario para ser root)
ROM/system/xbin/busybox ---->(binario busybox v.1.18.1)
ROM/system/xbin/dreboot
ROM/system/etc/init.d/S01sysctl ---->(carga configuraciones y variables del kernel) (**)
ROM/system/etc/init.d/S70zipalign ----> (este script aplica zipalign a todas las /data/app en cada inicio)
ROM/system/etc/init.d/S99complete---->(devuelve el control a init.rc)
ROM/META-INF ---->(carpeta contenedora del updater-script y varios certificados necesarios para el recovery y android). Se incluye un update-script basado en DocRom por ser más o menos "genérica" pero modificado con algunas líneas extras para hacer wipe y eliminado la ejecución de un script redundante)

(**) En /system/etc/init.d podrás incluir tus propios scripts que se ejecutaran al inicio siempre que el kernel tenga activado run-parts en init.rc. Prácticamente todos los custom kernel lo tienen habilitado. Estos scripts utilizan este path 
#!/system/bin/sh y deben empezar por "S" seguido de un número entre 01 y 99, que indica el orden en que se ejecutarán.
*puedes sobreescribir el contenido de extras.zip sobre /ROM ya que respeta la estructura

Añadir Modem y Kernel:
Necesitamos el modem.bin distribuido con el paquete original tar.md5 y un zImage (kernel), recomendable un custom kernel con CWM. Con esto podremos flashear sobre cualquier rom sin necesidad de flashear "una base".

Ruta:
ROM/updates/modem.bin
ROM/updates/zImage

Configura tu CSC (productcode y salescode):
Descarga un CSC de tu operador de aquí: http://forum.xda-developers.com/showthread.php?t=787163 y extrae la carpeta de tu operador, por ejemplo XEC para movistar:
  • Crea la carpeta ROM/system/csc
  • Pon dentro el contenido de /XEC/system/
  • Edita CSCVersion.txt y adáptalo al código de tu rom, en este caso “I9000XECJPU”. Haz lo mismo con SW_Configuration.xml
Si no quieres que instale las apps de movistar o los wallapers borrar todas las carpetas menos "csc", edita CSCFiles.txt y elimina sus rutas.

También puedes establecer un CSC libre para España -FOP- , tan solo descomprimir, copiar el contenido de FOP en /system y editar de la misma manera


Build.prop:


Edita /system/build.prop:

Código:
ro.build.version.incremental=XXJPU
ro.build.PDA=I9000XXJPU
ro.build.description=GT-I9000-user 2.2.1 FROYO XXJPU release-keys
ro.build.hidden_ver=I9000XXJPU
ro.build.fingerprint=samsung/GT-I9000/GT-I9000/GT-I9000:2.2.1/FROYO/XXJPU:user/release-keys
En un principio no debe sería necesario tocar prácticamente nada ya que obviamente viene configurado apropiadamente, pero puede ser interesante si tuvieses problemas y no vieras algunas aplicaciones protegidas, entonces puedes probar cambiando la versión de la compilación al final de fingerprint.(.../FROYO/XXJPU). A veces funciona...

Ten en cuenta cuando manipules build.prop que habrá que adaptarlo a la versión de tu compilación en cada campo, por ejemplo si fuese una Froyo 2.2 tipo JPM debería ser GT-I9000:2.2 y XXJPM tanto en ro.build.fingerprint como en ro.build.description.

Por ejemplo, un fingerprint genérico que no da problemas y muestra todas las apps de pago:
Código:
ro.build.fingerprint=samsung/GT-I9000/GT-I9000/GT-I9000:2.2/FROYO/XXJPO:user/release-keys
Configura el idioma por defecto:

Código:
ro.product.locale.language=es
ro.product.locale.region=ES
Ya solo faltaría darle un nombre de compilación a tu ROM:

Código:
ro.build.display.id=MI_ROM_MOLA_v1.XXJPU

Cambia la configuración regional del GPS:
Edita /system/etc/gps.conf:

Europa:
Código:
NTP_SERVER=europe.pool.ntp.org
España:
Código:
NTP_SERVER=es.pool.ntp.org

Añadir o quitar aplicaciones:
  • Si quieres añadir apps de serie crea la ruta /ROM/data/app y añádelas
  • Para limpiar stock apps ve a /system/app y bórralas con sus .odex. Más info
  • Es recomendable incluir la aplicación “superuser” en system/app para gestionar permisos root.
  • Ahora añade a capricho: launchers, herramientas backup, frameworks modificados, nuevo market, sgstolols, sgs toolbox, galería3D,....


##############################################
Con esto tendrías ya lo básico.
Solo faltaría comprimir el contenido de /ROM/ en un zip y directo a la raíz de la SDCARD.
Flashear desde un Clokworkmod recovery!


Para saber más:

Disclaimer:
  • Eres responsable de lo que pueda pasar modificando tu sistema. No debe haber riesgo de brick con los cambios básicos propuestos pero no está de más que te informes bien antes de cualquier modificación.
  • Esto funciona a base de ensayo y error así que asegúrate de hacer backups antes de nada.
  • Toda esta info está sacada de las custom roms que rondan por nuestra cocina, así que todos los créditos para ellos.
  • agradecimientos especiales a @Lorse por su perseverancia y ayuda y a @jorgecg por cederme amablemente su post para tenerlo todo más organizado 
informacion sacada de www.htcmania.com

No hay comentarios:

Publicar un comentario