ROMs y desarrollo HTC Desire ROMs y desarrollo HTC Desire

Respuesta
 
Herramientas
  #1  
Viejo 07/03/12, 17:27:49
Array

[xs_avatar]
Wel Wel no está en línea
Cocinero veterano
 
Fecha de registro: jul 2011
Localización: En el Sur
Mensajes: 5,460
Modelo de smartphone: 2xHMNote4X/Global
Tu operador: Vodafone
¿ Como Hacer Compilación de Kernels?



Ir al link original: http://forum.xda-developers.com/showthread.php?t=1377467








Lo primero y más esencial es que yo, no tengo conocimientos suficientes para desarrollar este tutorial. Ni poseo herramientas para ello. Dicho esto y aclarado, aquí os lo dejo. Para el que sí sepa, y no entienda el Idioma.

Espero que os sea de ayuda, a los que buscaís para todos nosotros, compilar todo tipo de Kernels para nuestras Desis.






Traducción de ¿Como hacer Compilación de Kernels?


Como hasta el momento, no he podido encontrar una guía para hacer Kernels. Ya que algunas de las que hay, son anticuadas y se asume demasiado. Pense que yo mismo escribiría el mio propio.
Aquí les pongo:

Anotación:
Esto no es una guía para novatos.
Investigue antes de preguntar, por favor.

Para que el Menú interactivo del Kernel construya el Script, mire el post #31
Desarrollaré este Post a la vez que lo hago, por lo cual estará imcompleto al principio, careciendo de detalles.

Elementos necesarios:

1. Ubuntu Box (Pcon esto quiero decir un ordenador personal con una instalación Ubuntu, no un Live CD)
2. Un el Android NDK, o su propio toolchain
3. Una fuentede una Desiré GB/Froyo de htcdevs.com, o fuentes de github
4. Familiaridad con Shell Linux y comandos de linux básicos.
5. Voluntad para aprender
Primero lo más importante:


1. Adquisición de las fuentes

La fuentepara la Desiré de HTC está disponible de dos clases de Resources ( puedes conseguirlo A través de htcdevs.com (HTC oficial Dev sitio), o del código fuente subido por alguién. Para este Turorial, asumiré que trabajamos en el código fuente de GRAN BRETAÑA HTC oficial. Por tanto descargue bravo_2.6.35_gb-mr.tar.gz de htcdevs.com.


2. Configuración de la compilación pera poner en una Box, y preparado del Codigo fuente
2.1. Instalar algunos paquetes esenciales para el Terminal Linux

Code:
sudo apt-get install libncurses5-dev

2.2 Extraer el código fuente

El archivo que usted descargó es un archivo TAR (como un archivo ZIP), entonces usted tiene que extraerlo auna ruta conveniente. Vaya a la Shell de Linux y abrá una ventana terminal (Accesorios-> Terminal)
Teclé:
Vamos a nuestro directorio de casa:
Código:
cd ~

Ahora, cree los directorios para nuestro Kernel Compilation Box.
Ahora tienes que copiar el archivo tar.gz de donde quiera que usted lo descargara a este Dir.
Extraiga el archivo:
Código:
tar -xvf ~/android/kernel/bravo_2.6.35_gb-mr.tar.gz
cd ~/android/kernel/bravo_2.6.35_gb-mr
Ahora podemos ver los archivos extraídos dentro del directorio ~/android/kernel/bravo_2.6.35_gb-mr

2.3 Establecer el Toolchain

Un Toolchain es un paquete de programas que permiten que usted compile el código fuente (cualquier código fuente, no sólo de Kernels). El Toolchain es específico para el procesador y hardware, entonces necesitamos un específico para Android y sobre todo para la Desiré. Si usted es un usuario PRO o semiavanzado, puede compilar su propio Toolchain (Ver la guía de los theGanymede para hacer esto). Si la compilación de Kernels es todo lo que usted requiere, por suerte para usted, hay un camino fácil - el Androide NDK - v7 (último por ahora) está disponible aquí
Consiga el NDK para Linux –
Ahora copie el archivo NDK a ~/android/ndk
Siempre que yo diga COPY, usted tiene que copiar a mano el archivo con cualquier administrador de archivos. El Nautilus viene con Ubuntu, y Delfín con Kubuntu. También puede usar la Shell por supuesto.
Código:
cp [sourcefile] [destination]
Extraigalo:
Código:
  
tar -jvxf android-ndk-r7-linux-x86.tar.bz2
Ahora añada el Path para su Toolchain a la variable env:
Código:
gedit ~/.bashrc
Al final de archivo, añada esta línea:

2. Configuración de parámetros del Kernel

Los Kernels son compilados con un programa llamado GNU, y usan un juego de opciones de configuración especificadas dentro de un archivo llamado Makefile.
Un punto vital para anotar es que los Kernels son compilados con un programa llamado GNC (básicamente el GNU compilador), y nuestro NDK en sí tiene su propia versión optimizada de GCC. Compilando, nosotros, actualmente lo compilamos cruzándolo (sentido de la compilación de un paquete binario en un sistema que es diferente del sistema actual que se supone, va dirigirlo - usted lo compila en su ordenador personal mientras realmente se destina para corra en la Desiré)
Este significa que cuando usted lo compila, usted tiene que asegurarse que usted compila con la versión del NDK de GCC, en vez de la versión de sistema. ¡Por otra parte usted termina con un Kernel destinado para correr en su PC, ! La especificación qué GCC usa, es por la variable CROSS_COMPILE. Usted puede establecerlo con este comando
Código:
CROSS_COMPILE=arm-linux-androideabi-
¡Anote el guión (-) al final, y no olvide de incluirlo! En el tiempo de compilación, el sistema realmente usará esta variable para encontrar todos los programas que esto necesita. EJ: el camino para GCC se hará arm-linux-androideabi-gcc
Podemos compilar Kernels con muchas opciones diferentes, como con el soporte de ext4, o sin ext4 como parte del Kernel zImage (en cuyo caso hace el Kernal más grande), o como un módulo cargable (de la forma somename.ko, que es cargado en init.d/init.rc con la orden insmod modulename.ko)
Especificamos las opciones exactas que requerimos con la ayuda del programa llamado menuconfig para una configuración útil (Como su nombre sugiere, es un menú para hacer opciones de Configuración).
Una cosa importante para anotar concerniente a la compilación de Kernels Hay una cantidad enorme de opciones al sistema, y a menos que usted sea cuidadoso con la compilación del Kernel, usted no será capaz de establecer las opciones correctamente y conseguir su Kernel para Bootearlo. Por suerte para nosotros, la fuente de Kernel ya viene con un juego de falta de parámetros que pueden ser fácilmente establecidos.
Anote: Todos estos comandos debe ser ejecutados dentro del directorio bravo_2.6.35_gb-Sr.. Vamos allá:
Código:
cd  ~/android/kernel/bravo_2.6.35_gb-mr
  make ARCH=arm CROSS_COMPILE=arm-linux-androideabi- bravo_defconfig

Este produce un archivo .config (usado por el menuconfig)para contener parámetros esenciales, para producir un Kernel Bootable para nuestra Desiré.
anote: hay un modo más simple de conseguir el archivo .config básico, y este debe conseguirlo de un Kernel que esté ya construido por alguien . Usted puede extraer el .config de un Kernel que corra con estos comandos:
Código:
cd  ~/android/kernel/bravo_2.6.35_gb-mr
  adb pull /proc/config.gz
  zcat config.gz > .config
Ahora nosotros podemos abrir menuconfig además de añadir algo que necesitamos.
Código:
make ARCH=arm CROSS_COMPILE=arm-linux-androideabi- menuconfig
Puede ver la enorme cantidad de opciones disponibles en menuconfig.
Puedes añadir el soporte de ext4 por ejemplo (Ver la imagen encima)
Una vez haya hecho la elección de opciones, puede salir de menuconfig.

4. Compilandolo

Este es simple. El comando básico es:
Hacer ARCH=arm cROSS_COMPILE=arm-linux-androideabi--j10
El-j10 especifica el número de empleos para ejecutar por operación. Por lo general, por encima de 50 en mi CPU( Quad Core). Prevengasé, puesto que puede tener una CPU lenta y congelarse Linux.
Durante la compilación, usted verá todas las clases de mensajes, que pueden incluir Advertencias. En la mayor parte de casos, hágase fuerte no para hacer caso de advertencias. Si hay errores, la compilación se parará, y usted tendrá que fijar las cuestiones.
5. Distribución de su Kernel a usuarios
Al final de compilación, se genera los archivos llamados zImage, y varios archivos .ko.
Usted tiene que copiarlos de su ruta por defecto a un archivo de ZIP. El mejor camino, es usar mi variante de Koush de cualquier Kernel, y copias los archivos . Entonces, puede cerrar el ZIP con la carpeta entera y verá que tiene el Falsheable Zip para distribuir a otros
Usted también puede quitar el zImage y los módulos de/system/lib/modules de cualquier Kernel ZIP y copiarle sobre sus archivos, en la posición correcta.
De este modo, digamos que usted a extraído un Kernel ZIP, existente a la posición ~/flashable
La estructura de archivo debería parecer a esta:
Código:
|-- kernel
  |   |-- dump_image
  |   |-- mkbootimg
  |   |-- mkbootimg.sh
  |   |-- unpackbootimg
  |   `-- zImage
  |-- META-INF
  |   |-- CERT.RSA
  |   |-- CERT.SF
  |   |-- com
  |   |   `-- google
  |   |       `-- android
  |   |           |-- update-binary
  |   |           `-- updater-script
  |   `-- MANIFEST.MF
  `-- system
      `-- lib
          `-- modules
              `-- bcm4329.ko
  
  8 directories, 11 files
He incluido mi directorio flasheable junto con este Post
Descarga de kernel_flashable.tar.bz2.zip a ~

Código:
cd ~
  tar -jvxf kernel_flashable.tar.bz2.zip
Este creará la estructura de directorio perfilada encima.
Ahora después de cada compilación del Kernel, ejecute estos comandos de donde usted ejecutó
Haga:

Código:
cp arch/arm/boot/zImage ~/kernel_flashable
  find . -name '*ko' -exec cp '{}' ~/kernel_flashable/system/lib/modules/ \;
  cd ~/kernel_flashable
  zip -r mykernel .
Este creará mykernel.zip en ~/kernel_flashable. Usted puede distribuir este a sus usuarios para flashearlo . Asegúrese que usted corrige la updater-escriturantes .

Errores comunes y otras materias

Ok, el Post #1 era la materia simple. Ahora,en el supuesto de que usted haya tenido errores compilando. El post *2 es sobre esto, y sube el nivel del conocimiento un poco..

Algunos errores de compilación de Kernel:

Las advertencias de error se solucionan quitando la String '-Werror' de todo Makefiles del archivo que dejó de compilar. Algunas personas habían dicho que el verdadero error (Serie de límites que advierten) era debido a optimizaciones GCC. Pero poniendo-O2 a-o0 no hacen nada.
Ningunos de empleos deberían exceder 50.
'advertencia: paquete de variables no usado [-wunused-but-set-variable] '-mira en KBUILD_CFLAGS por lo general Makefile. Añada-Wno-error=unused-but-set-variable para el Set existente de banderas.
Anote lo siguiente del manual GCC:
-WerrorMake todas las advertencias en errores difíciles. El código fuente que provoca advertencias será rechazado.
Los-w Inhiben todos los mensajes de advertencia. Si usted está familizrizado con el código de C y le gusta fijar la materia, no debe hacer caso de Bugs potenciales, use esto como últimop recurso - un 'brahmastram' (el arma más poderosa en su tiempo de la necesidad más grave) cuando las epopeyas dirían
-WerrorMake todas las advertencias en errores.
-Werror=Make la advertencia especificada en un error. El specifier para una advertencia es añadido, por ejemplo el-werror=switch gira las advertencias controladas por-Wswitch en errores. Este interruptor toma una forma negativa, para ser usado en negar-Werror para advertencias específicas, por ejemplo el-wno-error=switch hace advertencias-Wswitch no ser errores, aun cuando-Werror es en efecto. Usted puede usar la opción-fdiagnostics-show-option para tener cada advertencia controlada y enmendada con la opción que lo controla, y determinar que usar con esta opción.
Entonces lo que hice para suprimir errores, fue añadir:
Código:
KBUILD_CFLAGS += -w
  KBUILD_CFLAGS += -Wno-error=unused-but-set-variable
Aunque el-wunused-but-set-variable no sea una verdadera cuestión en sí mismo, esto genera tanto 'ruido' que usted puede perder lo que actualmente dá error.
Este es el error de qué yo hablaba..

Código:
drivers/net/wireless/bcm4329_204/wl_iw.c: In function 'wl_iw_set_pmksa':
  drivers/net/wireless/bcm4329_204/wl_iw.c:5075:5: error: array subscript is above array bounds [-Werror=array-bounds]
  drivers/net/wireless/bcm4329_204/wl_iw.c:5078:5: error: array subscript is above array bounds [-Werror=array-bounds]
Solución:
Corrija drivers/net/wireless/bcm4329_204/Makefile
Localice-Werror dentro de DHDCFLAGS, y suprímalo.

Código:
DHDCFLAGS = -DLINUX -DBCMDRIVER -DBCMDONGLEHOST -DDHDTHREAD -DBCMWPA2 \
  -DUNRELEASEDCHIP -Dlinux -DDHD_SDALIGN=64 -DMAX_HDR_READ=64 \
  -DDHD_FIRSTREAD=64 -DDHD_GPL -DDHD_SCHED -DBDC -DTOE -DDHD_BCMEVENTS \
  -DSHOW_EVENTS -DBCMSDIO -DDHD_GPL -DBCMLXSDMMC -DBCMPLATFORM_BUS \
  -Wall -Wstrict-prototypes -Werror -DOOB_INTR_ONLY -DCUSTOMER_HW2 \
  -DDHD_USE_STATIC_BUF -DMMC_SDIO_ABORT -DWLAN_PFN -DWLAN_PROTECT \
  -DBCMWAPI_WPI \


Este impedirá a GCC tratar como meras advertencias los errores

Como modificar Kerenls aplicados a mods - Aplicación de Path de Kernel

Ok, usted ha compilado un Kernel Stock Simple. ¿Ahora qué? ¿Quisiera usted añadir fix/mods desarrollados por otros desarrolladores de Kernels? Este post explica Patchs y como hacer exactamente esto.
Los Paths de Kernels son aplicados vía archivos de Path. Los archivos de Path son archivos de texto simples generados por el linux diff programa que toma dos archivos de texto, los compara y escribe las diferencias (de ahí llamado diff) a otro archivo de texto que por la convención tiene la extensión .patch
Atado a este post hay un Path que contiene mi 'Extended Battery' fijado con battfix de Sibere. Explicaré el zurcido con esto. Vamos a entender de qué se trata. Ábralo en cualquier editor de textos.
Código:
diff -rupN -X /home/droidzone/android/kernel/exclude.opts  bravo_2.6.35_gb-mr/drivers/power/ds2784_battery.c  bravo_2.6.35_gb-mr.main//drivers/power/ds2784_battery.c---  bravo_2.6.35_gb-mr/drivers/power/ds2784_battery.c    2011-08-25  13:16:53.000000000 +0530+++  bravo_2.6.35_gb-mr.main//drivers/power/ds2784_battery.c    2011-11-06  16:43:21.544317342 +0530@@ -118,8 +118,11 @@ PS. 0 or other battery ID  use the same p /* Battery ID = 1: HT-E/Formosa 1400mAh */ #define  BATT_ID_A                1 #define BATT_FULL_MAH_A            1400-  #define BATT_FULL_MAH_DEFAULT    1500+#define BATT_FULL_MAH_CAMERONSINO     2400+#define BATT_ID_CAMERONSINO+#define BATT_TYPE 0+
Anote la primera línea:

Código:
diff -rupN -X /home/droidzone/android/kernel/exclude.opts   bravo_2.6.35_gb-mr/drivers/power/ds2784_battery.c   bravo_2.6.35_gb-mr.main//drivers/power/ds2784_battery.c
el diff-rupN básicamente describe la orden que fue usada para generar este Patch. El-u significa que el archivo de Patch es algo que llamo como Patch Universal
bravo_2.6.35_gb-mr/drivers/power/ds2784_battery.c era el archivo original, y bravo_2.6.35_gb-mr.main // drivers/power/ds2784_battery.c era el archivo objetivo o el archivo que contiene el mod..
¿Cómo aplicar archivos de Pacth?
La orden depende de donde su directorio corriente este. Si usted está en ~/android/kernel/bravo_2.6.35_gb-mr/y su directorio corriente contiene el directorio 'Drivers', usted puede aplicar este Patch con esta orden:

Código:
patch -p1<extended_battfix.patch
Código:
patch -p2<extended_battfix.pat
Espero que consigua la idea esencial. Básicamente, cuando usted se mueve en el árbol de la fuente, tiene que incrementar el nivel de Patch por el número de directorios en los que usted ha movido abajo. Muy simple,¿ no?
extbattfix.patch.zip - [Click for QR Code] (2.4 KB, 29 vie)ch
Compartiendo y Colaborando - Usando Github

________________________________________
La compilación de Kernel es un esfuerzo de grupo (al menos debería ser). Cuando diferentes desarrolladores trabajan en partes diferentes del código y crean a sus propios mods, progresa el desarrollo. Para este fin, es importante que usted comparta su código con otro desarrolladores. El mejor modo de hacer es Subir sus fuentes a github.
Primero, cree una cuenta de github.
Después usted puede ver las fuentes github de otros desarrolladores y examinar sus cometidos. Cometidos son básicamente Patch que se aplican a la fuente anterior cargada. El cometido de Github es el uso, y el formato de Path universal y puede ser visto directamente, descargado como archivos de Pacth, y aplicado su código.
Usted también puede decidir descargar el árbol de la fuente entero, cargado por otro desarrollador y examinarlo.

Construye un sistema de Menú Interactivo para Kernels.

Esto te ahorra tiempo si haces muchos Kernels
Ver post *22









__________________





Última edición por Wel Día 07/03/12 a las 20:32:45.
Responder Con Cita
Los siguientes 5 usuarios han agradecido a Wel su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 07/03/12, 17:43:18
Array

[xs_avatar]
Wel Wel no está en línea
Cocinero veterano
 
Fecha de registro: jul 2011
Localización: En el Sur
Mensajes: 5,460
Modelo de smartphone: 2xHMNote4X/Global
Tu operador: Vodafone
Bueno aqui os lo dejo....jejeje
Si le veis algo, avisais, ok??
Un saludo, y espero que sirva....
__________________




Responder Con Cita
  #3  
Viejo 07/03/12, 17:53:57
Array

[xs_avatar]
JOSNARO JOSNARO no está en línea
Colaborador
 
Fecha de registro: abr 2010
Localización: Huelva
Mensajes: 6,993
Modelo de smartphone: HOS - Desire - NEXUS 5
Tu operador: Orange
 Cita: Originalmente Escrito por Wel Ver Mensaje
Bueno aqui os lo dejo....jejeje
Si le veis algo, avisais, ok??
Un saludo, y espero que sirva....

Lo unico que veo, que te ha quedado muy bien.
__________________




Responder Con Cita
Gracias de parte de:
  #4  
Viejo 15/08/13, 01:13:07
Array

[xs_avatar]
log30 log30 no está en línea
Nuevo Cocinero
· Votos compra/venta: (2)
 
Fecha de registro: ene 2012
Localización: En Casa
Mensajes: 2,152
Modelo de smartphone: Xiaomi Mi 9t Pro / Samsung Galaxy Tab A 10.1 2016
Tu operador: Pepephone
antiguo post pero espero que con esta ayuda lo intente
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Otras marcas y modelos de smartphones de venta en España > HTC > Otros modelos antiguos de HTC > HTC Desire > ROMs y desarrollo HTC Desire



Hora actual: 19:25:33 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /