Aller au contenu

[Howto] Comment compilé le kernel Wiko étape par étape


Recommended Posts

Dans ce tuto, je vais vous présenter ma manière de compiler le kernel fourni par Wiko. Vous remarquerez qu'ils n'ont pas fourni tous les éléments nécessaires. Quelques bugs subsistent.

Espérons que pour la version JB, ils nous fourniront un code source complet et utilisable directement.

Tout d'abord, nous allons nous concentrer sur les pré-requis :

Créer l'arborescence de travail :

mkdir ~/android

cd ~/android

Télécharger les sources : http://www.wikogeek.com/

Décompresser l'archive

unzip ~/Téléchargements/CINK_KING_ICS_1564dsf4s64.zip

Installation du compilateur (Toolchain) :

Se placer dans ~/android puis lancez cette commande :

git clone https://android.googlesource.com/platform/prebuilt/

Il y'a environ 2G à télécharger.

Récupérer le fichier arm-eabi-ld.bfd et le placer dans ~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/ et lui donner les droits d'execution.

wget https://raw.github.com/AdiPat/Android_Toolchains/master/arm-eabi-4.4.3/bin/arm-eabi-ld.bfd
mv arm-eabi-ld.bfd ~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
chmod +x ~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-ld.bfd

Vous devriez mantenant avoir cette arborescence dans ~/android:

drwxr-xr-x 25 utilisateur utilisateur 4096 févr. 20 13:55 kernel/
drwxr-xr-x 7 utilisateur utilisateur4096 nov. 13 09:07 mediatek/
drwxr-xr-x 3 utilisateur utilisateur 4096 févr. 20 14:38 prebuilt/
-rwxr-xr-x 1 utilisateurcutilisateur259 déc. 14 11:16 README*

Télécharger les outils

Pour avoir un boot.img convenable, nous aurons besoin d'un outil qui permet de récupérer le ramdisk du boot.img officiel. Le boot.img est récupérable des la maj v14 du Wiko Cink King.

L'outil nécessaire est unpack-MT65xx.pl :

Créer une nouvelle arborescence et télecharger les outils :

mkdir ~/android/tools
cd ~/android/tools
git clone [url="https://github.com/bgcngm/mtk-tools"]https://github.com/bgcngm/mtk-tools[/url]

Récupérer le ramdisk

Copiez le boot.img de la v14 dans le répertoire ~/android/tools

Placez-vous dans le répertoire ~/android/tools

Lancez la commande suivante :

# mtk-tools/unpack-MT65xx.pl boot.img
MTK-Tools by Bruno Martins
MT65xx unpack script (last update: 27-01-2013)
Valid Android signature found...
Input file information:
Kernel size: 3506404 bytes / load address: 0x10008000
Ramdisk size: 591128 bytes / load address: 0x11000000
Second stage size: 0 bytes / load address: 0x10f00000
Page size: 2048 bytes
ASCIIZ product name: ''
Command line: (none)
Kernel written to 'boot.img-kernel.img'
Removed old ramdisk directory 'boot.img-ramdisk'
Ramdisk size: 2046 blocs
Extracted ramdisk contents to directory 'boot.img-ramdisk'
Successfully unpacked kernel and ramdisk

Vous avez maintenant un fichier boot.img-kernel.img correspondant au zImage et un répertoire contenant le ramdisk boot.img-ramdisk.

Récupération du header.

Pour que votre Wiko puisse démarrer sur votre kernel compilé, il vous faudra récupérer le header du fichier boot.img-kernel.img. Sachant que celui-ci est un fichier binaire, nous utiliserons cette commande :

dd if=boot.img-kernel.img of=header bs=512 count=1

Le fichier header contiendra l'entête à ajouter au zImage.

Préparer la compilation : ( Mention spécial au king je n'ai pas testé pour les autres)

Dans les sources du king, il manque quelques drivers:

- m4u

- videocodec

- g2d

Il faut vous les procurer dans ce github : https://github.com/a.../mt6577_sources

Je vous conseil de le telecharger completement de cette manière :


mkdir ~/android/kernel-modules

cd ~/android/kernel-modules

git clone https://github.com/aquila-dev/mt6577_sources

Une fois le téléchargement terminé, nous devons ajouter à nos sources les drivers manquants :

[color="#000000"]cp [/color][color="#666600"]-[/color][color="#000000"]rp [/color][color="#666600"]~[/color][color="#008800"]/android/[/color][color="#000000"]kernel[/color][color="#666600"]-[/color][color="#000088"]module[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]platform[/color][color="#666600"]/[/color][color="#000000"]mt6577[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers[/color][color="#666600"]/[/color][color="#000000"]g2d [/color][color="#666600"]/[/color][color="#000000"]android[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]platform[/color][color="#666600"]/[/color][color="#000000"]mt6577[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers
cp [/color][color="#666600"]-[/color][color="#000000"]rp [/color][color="#666600"]~[/color][color="#008800"]/android/[/color][color="#000000"]kernel[/color][color="#666600"]-[/color][color="#000088"]module[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]source[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers[/color][color="#666600"]/[/color][color="#000000"]m4u [/color][color="#666600"]~[/color][color="#008800"]/android/[/color][color="#000000"]kernel[/color][color="#666600"]-[/color][color="#000088"]module[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]source[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers
cp [/color][color="#666600"]-[/color][color="#000000"]rp [/color][color="#666600"]~[/color][color="#008800"]/android/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]source[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers[/color][color="#666600"]/[/color][color="#000000"]videocodec [/color][color="#666600"]~[/color][color="#008800"]/android/[/color][color="#000000"]kernel[/color][color="#666600"]-[/color][color="#000088"]module[/color][color="#666600"]/[/color][color="#000000"]mediatek[/color][color="#666600"]/[/color][color="#000000"]source[/color][color="#666600"]/[/color][color="#000000"]kernel[/color][color="#666600"]/[/color][color="#000000"]drivers[/color]

Exportez les variables d'environnements nécessaire à la compilation :


export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/

Lancer la compilation

cd ~/android/kernel
cp mediatek-configs .config
TARGET_PRODUCT=s9081 MTK_ROOT_CUSTOM=../mediatek/custom make

La compilation se termine

un fichier zImage a été créé dans ~/android/kernel/arch/arm/boot/

Placez le zImage dans le répertoire ~/android/tools

Se placer dans ~/android/tools

Ajout du header au zImage :

dd if=header of=zImageMod
dd if=zImage of=zImageMod bs=512 seek=1

Cette commande crée un nouveau fichier zImageMod contenant le header et le zImage.

A présent, nous pouvons créer notre boot.img compilé en utilisant la commande repack-MT65xx.pl.

Créer le nouveau boot.img

Voici les arguments de l'outil repack-MT65xx.pl :

# ./repack-MT65xx.pl
MTK-Tools by Bruno Martins
MT65xx repack script (last update: 27-01-2013)

Usage: repack-MT65xx.pl COMMAND [...]

COMMANDs are:

-boot <kernel> <ramdisk-directory> <outfile>
Repacks boot image

-recovery <kernel> <ramdisk-directory> <outfile>
Repacks recovery image

-logo [--no_compression] <logo-directory> <outfile>
Repacks logo image

Ajouter les droits d'execution au fichier mkbootimg

chmod +x mtk-tools/mkbootimg

Lancer la commande de repack :

# sudo mtk-tools/repack-MT65xx.pl -boot zImageMod boot.img-ramdisk monboot.img
MTK-Tools by Bruno Martins
MT65xx repack script (last update: 27-01-2013)
Repacking boot image...
Ramdisk size: 2046 blocs
Repacked boot image into 'monboot.img'.

Voila, il ne vous reste plus qu'à flasher le boot.img sur votre téléphone à l'aide de SPFlashtools.

Bugs connus :

- Caméra avant ne marche pas

Edit : Faute d'orthographe dans le titre désolé et surement dans le texte. j'étais un peu pressé dsl.

Modifié par croco
  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

Merci pour ton tuto mais tu a commis quelques erreurs

il faut lire

cp -rp ~/android/kernel-modules/mt6577_sources/platform/mt6577/kernel/drivers/g2d ~/android/kernel/mediatek/platform/mt6577/kernel/drivers

cp -rp ~/android/kernel-modules/mt6577_sources/source/kernel/drivers/m4u ~/android/kernel/mediatek/source/kernel/drivers

cp -rp ~/android/kernel-modules/mt6577_sources/source/kernel/drivers/videocodec ~/android/kernel/mediatek/source/kernel/drivers

Et non :

cp -rp ~/android/kernel-module/mediatek/platform/mt6577/kernel/drivers/g2d /android/kernel/mediatek/platform/mt6577/kernel/drivers
cp -rp ~/android/kernel-module/mediatek/source/kernel/drivers/m4u ~/android/kernel-module/mediatek/source/kernel/drivers
cp -rp ~/android/kernel/mediatek/source/kernel/drivers/videocodec ~/android/kernel-module/mediatek/source/kernel/drivers

ou alors enlève le s a ton mkdir kernel-moduleS

Et le git clone done comme dossier parent mt6577_sources et non mediatek

Et également

cd ~/android/kernel

cp mediatek-configs .config

TARGET_PRODUCT=s9081 MTK_ROOT_CUSTOM=../mediatek/custom make

Et non

cd ~/android/kernel/kernel
cp mediatek-configs .config
TARGET_PRODUCT=s9081 MTK_ROOT_CUSTOM=../mediatek/custom make

A corriger ;)

Modifié par Le Bugdroid
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Arrivez vous à compiler tous les modules nécessaires au kernel également ? Notemment le fichier m4u.ko ? Je travail sur le peax, dont l'arbo est très similaire, j'ai bien le driver m4u, et le fichier m4u_kernel.c est bien compilé, cela permet d'utiliser les fichiers .ko déjà présent sur le device, cependant j'aimerais faire une monté de version en 3.0.69 et il me faut dans ce cas pouvoir générer les 40 modules présent sur le device stock or les source wiko ne produisent que 26 modules...

Benoit

Lien vers le commentaire
Partager sur d’autres sites

  • 4 weeks later...

Tentative de compilation du kernel Wiko JB :

In file included from drivers/usb/gadget/android.c:58:

drivers/usb/gadget/f_mtp.c: In function 'receive_file_work':

drivers/usb/gadget/f_mtp.c:1072: warning: too few arguments for format

drivers/usb/gadget/android.c: At top level:

drivers/usb/gadget/android.c:2008: internal compiler error: in dwarf2out_finish, at dwarf2out.c:18906

ça ne marchera jamais du premier coup! Bizzarre

Lien vers le commentaire
Partager sur d’autres sites

Ici ca marche(.com), aucun soucis de compilation (kernel JB).

3 compilations, une tel quel et rien à signaler, une avec des modifs dans la configuration par défaut et encore une autre avec des modification perso du code. (préparation pour modification de celui du slim quand il arrivera... d'ici 6 mois...)

A vu de nez, il y a aussi tout ce qu'il faut pour compiler android sans avoir à trop se prendre la tête (à confirmer)

Modifié par Old geek
Lien vers le commentaire
Partager sur d’autres sites

4.6, il provient de chez google

git clone https://android.goog...rm/arm-eabi-4.6

Je préviens, il y a 2 personnes qui ont eu un soucis avec dès le lancement du make (je ne sais pas pourquoi, pour le kernel 3.0) mais ici il fonctionne très bien.

Je suis sous debian 7 (version 6 passé en testing pour avoir les softs en version plus récente)

Pas de soucis particulier pour compiler android AOSP non plus (si ce n'est un manque de drivers à corriger ce qui devrait s'améliorer quand on aura jelly bean de dispo)

Modifié par Old geek
Lien vers le commentaire
Partager sur d’autres sites

Bon et bien j'ai testé avec ton gcc et... Ba j'ai toujours l'erreur :

make[1]: *** [mediatek/custom/out/tinno77_jb/kernel/alsps/cm3607.o] Error 1

make: *** [mediatek/custom/out/tinno77_jb/kernel] Error 2

Bizarre que toi tu n'ais pas cette erreur...

Modifié par croco
Lien vers le commentaire
Partager sur d’autres sites

Quelle commande make utilise tu ? Après CUSTOM_MAKE tu met quoi ? Si tu met ALPS_ICS2 ou quelque chose tu genre ça ne fonctionnera pas.

Rend toi dans le dossier mediatek/custom et regarde le nom du dossier qui est autre que "common" et "mtk6577"

Modifié par Pdroid
Lien vers le commentaire
Partager sur d’autres sites

Effectivement, si tu te fies à la doc ça va pas marcher. Il ne faut pas chercher plus loin.

Le readme, c'est comme pour le reste, 50% vrai et 50% bidon :P

TARGET_PRODUCT=s9081 MTK_ROOT_CUSTOM=../mediatek/custom/ make

Lien vers le commentaire
Partager sur d’autres sites

J'ai fais comme ça la première fois que j'ai essayé mais avec le gcc 4.4.3 Je reessai. Merci ;)

Bon je viens de reessayer avec ce make :

make TARGET_PRODUCT=s9081 MTK_ROOT_CUSTOM=../mediatek/custom CROSS_COMPILE=/home/olivier/android/prebuilt4.6/arm-eabi-4.6/bin/arm-eabi-

Voici le message d'erreur :

  MODPOST vmlinux.o
WARNING: modpost: Found 7 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
 GEN	 .version
 CHK	 include/generated/compile.h
 UPD	 include/generated/compile.h
 CC	  init/version.o
 LD	  init/built-in.o
 LD	  .tmp_vmlinux1
mediatek/kernel/built-in.o: In function `musb_dma_completion':
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1203: undefined reference to `musb_h_ep0_irq'
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1211: undefined reference to `musb_host_tx'
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1220: undefined reference to `musb_host_rx'
mediatek/kernel/built-in.o: In function `musb_interrupt':
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1143: undefined reference to `musb_h_ep0_irq'
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1158: undefined reference to `musb_host_rx'
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1179: undefined reference to `musb_host_tx'
mediatek/kernel/built-in.o: In function `musb_stage0_irq':
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:549: undefined reference to `musb_root_disconnect'
mediatek/kernel/built-in.o: In function `musb_stop':
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:714: undefined reference to `musb_root_disconnect'
mediatek/kernel/built-in.o: In function `musb_probe':
/home/olivier/android/kernel/mediatek/kernel/drivers/usb20/musb_core.c:1450: undefined reference to `musb_hc_driver'
make: *** [.tmp_vmlinux1] Error 1

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...