|
||
|
![]() |
![]() |
ROMs y desarrollo Xiaomi MI3 ROMs y desarrollo Xiaomi MI3 |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Como compilar un kernel
Requisitos
Abrimos un terminal y copiamos y pegamos Código:
sudo apt-get install gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc Código:
mkdir kernel cd kernel ![]() git clone -b cancro-kk-oss https://github.com/alexret/Xiaomi_Kernel_OpenSource.git
![]() Código:
cd kernel git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.X (Sustituimos la X por 6, 7 (recomendado), 8 Empecemos a compilar. Abrimos el terminal y escribimos lo siguiente Código:
export ARCH=arm export SUBARCH=arm export CROSS_COMPILE=arm-eabiX(el que hayamos descargado antes)/bin/arm-eabi- make clean make cancro_user_defconfig Si todo ha ido bien no dará ningún error make Última edición por alexret Día 16/04/15 a las 15:03:58. |
Los siguientes 17 usuarios han agradecido a su comentario: | ||
|
#2
|
||||
|
||||
CREACIÓN BOOT.IMG
Una vez que tengamos el zImage (está en arch/arm/boot )nos descargamos las mkbootin tools https://github.com/xiaolu/mkbootimg_tools Las descomprimimos y cogemos un boot.img* de una rom Miui (solo he probado con esta rom) y lo metemos en la carpeta de las mkbooting_tools. *NOTA: boot.img = kernel Abrimos un terminal y hacemos lo siguiente. ![]() ./mkboot boot.img kernel
![]() El kernel es la carpeta donde se van a descomprimir los archivos del boot.img. Bien, si todo ha salido bien nos saldrá algo como esto ![]() Unpack & decompress boot.img to kernel
kernel : /home/xiaolu/work/initramfs/s4/e330s/kernel/zImage ramdisk : /home/xiaolu/work/initramfs/s4/e330s/kernel/ramdisk.gz page_size : 2048 base_addr : 0x00000000 kernel size : 6911360 kernel_addr : 0x00008000 ramdisk_size : 2685222 ramdisk_addr : 0x02000000 second_size : 0 second_addr : 0x00f00000 dtb_size : 1427456 tags_addr : 0x01e00000 cmdline : console=null androidboot.hardware=qcom user_debug=31 maxcpus=2 msm_rtb.filter=0x3F Unpack completed. ![]() Vamos a la carpeta de las mkbooting_tools y vamos a la carpeta kernel. Veremos que nos salens varios cosas, veremos un zImage creado del boot.img que hemos desempaquetado antes, lo borramos y ponemos el que hemos copiado anteriormente. Una vez hecho esto, abrimos un terminal y nos dirigiremos a la ruta de mkbooting_tools y haremos lo siguiente para empaquetar nuestro kernel ![]() ./mkboot kernel boot.img
![]() ![]() mkbootimg from ksuamg5/img_info.
kernel : /home/xiaolu/work/initramfs/s4/e330s/ksuamg5/zImage ramdisk : /home/xiaolu/work/initramfs/s4/e330s/ksuamg5/new_ramdisk.gz page_size : base_addr : 0x00000000 kernel size : 6911360 kernel_addr : 0x00008000 ramdisk_size : 2685222 ramdisk_addr : 0x02000000 second_size : second_addr : dtb_size : 1427456 dtb_img : dt.img tags_addr : 0x01e00000 cmdline : console=null androidboot.hardware=qcom user_debug=31 maxcpus=2 msm_rtb.filter=0x3F Kernel size: 6911360, new ramdisk size: 3416778, recovery.img: 11759616. recovery.img has been created. ![]() En el siguiente paso os explicaré como flashearlo y os daré las instrucciones para meterlo en un zip ![]() Última edición por alexret Día 08/04/15 a las 22:07:17. |
#3
|
||||
|
||||
A ver si me animo a intentar algo jeje, gracias por compartir estas cosas
|
#5
|
||||
|
||||
¿Has podido compilar el kernel Alex?
Esto debería tener chincheta. |
#6
|
||||
|
||||
Que lástima que a estas alturas no tenga tiempo de meterle mano a fondo al kernel...anda que no me gustaría.
Enorme alexret echando una mano para que la gente empiece con esto!
__________________
Veterano de las primeras guerras chinas...
|
#7
|
||||
|
||||
Muchas gracias alex!
Has conseguido arreglar el fallo que te daba? |
#8
|
||||
|
||||
Que va, si es que no hay manera. Casi todos los errores que me ha dado sin iguales pero este no hay manera de corregirlo. Dejo el error por si alguien tiene alguna idea Código:
CC drivers/input/input-compat.o CC sound/usb/card.o CC sound/usb/clock.o sound/usb/card.c:61:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/card.o] Error 1 make[2]: *** Se espera a que terminen otras tareas.... CC net/ipv4/ip_sockglue.o CC drivers/input/input-mt.o LD drivers/input/serio/built-in.o CC drivers/iommu/iommu.o sound/usb/clock.c:32:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/clock.o] Error 1 make[1]: *** [sound/usb] Error 2 make: *** [sound] Error 2 make: *** Se espera a que terminen otras tareas.... CC drivers/iommu/msm_iommu.o |
Gracias de parte de: | ||
#9
|
||||
|
||||
habría que preguntar a @david_korku o en xda a Bitti09, audahadi, jackeagle...
seguro que pueden ayudar... |
#10
|
||||
|
||||
Gracias alexret!!!!
Muy bien explicado. |
#11
|
||||
|
||||
Para hacer el git clone del repo del kernel:
Código:
git clone -b cancro-kk-oss git://github.com/MiCode/Xiaomi_Kernel_OpenSource.git |
Gracias de parte de: | ||
#12
|
||||
|
||||
Que va, si es que no hay manera.
Casi todos los errores que me ha dado sin iguales pero este no hay manera de corregirlo. Dejo el error por si alguien tiene alguna idea Código:
CC drivers/input/input-compat.o CC sound/usb/card.o CC sound/usb/clock.o sound/usb/card.c:61:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/card.o] Error 1 make[2]: *** Se espera a que terminen otras tareas.... CC net/ipv4/ip_sockglue.o CC drivers/input/input-mt.o LD drivers/input/serio/built-in.o CC drivers/iommu/iommu.o sound/usb/clock.c:32:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/clock.o] Error 1 make[1]: *** [sound/usb] Error 2 make: *** [sound] Error 2 make: *** Se espera a que terminen otras tareas.... CC drivers/iommu/msm_iommu.o ![]() Tienes todos los paquetes necesarios? Enviado desde mi MI 3W mediante Tapatalk
__________________
Estoy mirando fijamente a una mosca y para mi, que está tramando algo.
No hace más que frotarse las manos ![]() |
Gracias de parte de: | ||
#13
|
||||
|
||||
|
#14
|
||||
|
||||
Yo tengo bastante contacto con un cocinero de roms de samsung. CRISTELO.
Si quieres alex ,se lo pregunto
__________________
Pensamientos tontos los tenemos todos, pero el sabio se los calla
|
Gracias de parte de: | ||
#15
|
||||
|
||||
Por ejemplo para GNU/Linux nos hacen falta tambien las cabeceras del kernel para compilarlo en caso de ser de repositorios como es el caso con este, estas las conseguimos asi: aptitude install linux-headers-`uname -r` Uname -r es el numero o nombre exacto del kernel en cuestion, en mi caso ahora mismo desde LM seria: 3.13.0-24-generic. Como ya digo de compilarlo desde Android NPI, solo aporto algun dato de como compilarlo desde sistemas GNU/Linux en el que supongo que se comprende Android tambien ;) |
Gracias de parte de: | ||
#16
|
||||
|
||||
![]() No soy ningun experto no he compilado nunca un kernel Android pero varias veces en Debian, diria que el kernel esta incompleto y le faltan esos directorios, de ahi el error del make.
Por ejemplo para GNU/Linux nos hacen falta tambien las cabeceras del kernel para compilarlo en caso de ser de repositorios como es el caso con este, estas las conseguimos asi: aptitude install linux-headers-`uname -r` Uname -r es el numero o nombre exacto del kernel en cuestion, en mi caso ahora mismo desde LM seria: 3.13.0-24-generic. Como ya digo de compilarlo desde Android NPI, solo aporto algun dato de como compilarlo desde sistemas GNU/Linux en el que supongo que se comprende Android tambien ;) ![]() Sobre mi error, como he dicho, me han salido varios como ese y los he corregido, pero ese en concreto es muy puñetero y no hay manera. |
Gracias de parte de: | ||
#17
|
||||
|
||||
muy bueno!!!
__________________
Mis androides:
HTC Magic - HTC Desire - Samsung Galaxy S - LG Optimus Black - Motorola RAZR Maxx - Samsung Galaxy S2 - Samsung Galaxy S4 - Xiaomi Mi3 64GB - Xiaomi Mi5 ADVANCED 64GB - Xiaomi Mi5S Plus 6/128GB - Xiaomi Mi8 6/128GB |
#18
|
||||
|
||||
Que va, si es que no hay manera.
Casi todos los errores que me ha dado sin iguales pero este no hay manera de corregirlo. Dejo el error por si alguien tiene alguna idea Código:
CC drivers/input/input-compat.o CC sound/usb/card.o CC sound/usb/clock.o sound/usb/card.c:61:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/card.o] Error 1 make[2]: *** Se espera a que terminen otras tareas.... CC net/ipv4/ip_sockglue.o CC drivers/input/input-mt.o LD drivers/input/serio/built-in.o CC drivers/iommu/iommu.o sound/usb/clock.c:32:18: fatal error: card.h: No such file or directory compilation terminated. make[2]: *** [sound/usb/clock.o] Error 1 make[1]: *** [sound/usb] Error 2 make: *** [sound] Error 2 make: *** Se espera a que terminen otras tareas.... CC drivers/iommu/msm_iommu.o ![]() Edito: Añado. No te mates mucho porque uno de los miembros del equipo que hicieramos para Cyanogenmod ya ha compilado el kernel y lo tiene funcionando con una custom rom 5.0.2 . Pronto lo anunciará el supongo así que mejor no digo más ![]() Última edición por david_korku Día 01/04/15 a las 19:53:13. |
Los siguientes 8 usuarios han agradecido a david_korku su comentario: | ||
#19
|
||||
|
||||
Ese error que yo sepa significa que le falta el header card.h , referenciado desde card.c con "#include "card.h"". ¿ Tienes en la carpeta sound/usb el archivo card.h ?. ¿Estás compilando como root o como un usuario?
Edito: Añado. No te mates mucho porque uno de los miembros del equipo que hicieramos para Cyanogenmod ya ha compilado el kernel y lo tiene funcionando con una custom rom 5.0.2 . Pronto lo anunciará el supongo así que mejor no digo más ![]() ![]() Siempre compilo como usuario. Eso es un grandísimo avance!! Eso lo tengo que probar. Esperando me hallo. ![]() |
|
#20
|
||||
|
||||
Ese error que yo sepa significa que le falta el header card.h , referenciado desde card.c con "#include "card.h"". ¿ Tienes en la carpeta sound/usb el archivo card.h ?. ¿Estás compilando como root o como un usuario?
Edito: Añado. No te mates mucho porque uno de los miembros del equipo que hicieramos para Cyanogenmod ya ha compilado el kernel y lo tiene funcionando con una custom rom 5.0.2 . Pronto lo anunciará el supongo así que mejor no digo más ![]() ![]() ¿Lo ha compilado y ha tenido que adaptarlo para Lollipop? |
![]() |
![]() |
||||||
|
Herramientas | |