Aller au contenu

Centralisation des tutos de compilation du kernel Wiko


Recommended Posts

Pour celles et ceux qui ont commencé à se renseigner sur le développement d'android, Pouvez-vous nous indiquer les meilleurs tutos que vous avez trouvez?

Compilation du Kernel fourni par WIKO :

En attendant, je vais essayer de compiler le kernel fourni par Wiko. Je vais tenir mais notes ici ( Pas de présentation).

Début de Tuto :

Créer l'arborescence de travail :

mkdir -p ~/android/kernel

Télécharger les sources :

http://www.wikogeek.com/

Les placer dans ~/android/kernel

Décompresser l'archive

unzip CINK_KING_ICS_1564dsf4s64.zip

Télécharger toolchain ( Cross Compiler ):

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

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

Vous devriez avoir cette arborescence :

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

Préparer le compilation :

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

Récupérer le fichier arm-eabi-ld.bfd et le placer dans ~/android/kernel/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/kernel/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
chmod +x ~/android/kernel/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-ld.bfd

Lancer la compilation

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

le .config nous permet d'effectuer des optimisations.

Décompacter le boot.img

http://technologeek....?title=Boot.img

Récupérer l'outil mtk-tool (Dont le unpack-MT65xx.pl et le repack)

git clone https://github.com/bgcngm/mtk-tools

Pour le boot.img, je vais utiliser celui de la MAJ V14 mais bon je ne suis pas sur. On verra bien...

# 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

Bon on place le zImage dans le répertoire que l'on veut et on doit repack le tout.

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

Bon faut ajouter les droits d'execution au fichier mkbootimg

J'ai utilisé cette commande :

# sudo mtk-tools/repack-MT65xx.pl -boot zImage 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'.

J'ai bien mon fichier monboot.img qui a été créé.

Bizzarrement, il est plus grand que celui d'origine.. Est-ce parcequ'il provient de la MAJ?

...

# du -sh *
4,0M boot.img
3,4M boot.img-kernel.img
1,1M boot.img-ramdisk
4,2M monboot.img
292K mtk-tools
3,6M zImage

Sources :

http://forum.xda-dev...d.php?t=1197147

http://www.droidforu...own-kernel.html

http://madteam.co/ne...or-your-device/

Bon imaginons que le nouveau boot.img est bon... Quel est notre interet? En quoi d'avoir le kernel nous permettrait de passer à Cyanogen? J'arrive pas à trouver un tuto ou je comprends bien la compilation de Cyanogen et surtout un tuto pour un téléphone pour lequel ils n'ont rien développé.

Si vous avez ça je suis preneur.

Edit du 12/02 --> Super tuto ici : http://forums.androi...age-source.html

Eléments de compilation de cyanogen CM9

Début de réponse : http://forum.xda-dev...d.php?t=2010281

et http://forum.xda-dev...d.php?t=1935162

Je commence par ça :

- SDK

- Java

- Packages de dev C...

Préparation de l'environnement de développement :

apt-get update
 apt-get install git-core gnupg flex bison gperf build-essential \
 zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 \
 g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown \
 libxml2-utils xsltproc zlib1g-dev:i386 pngcrush

Téléchargement des sources android

mkdir ~/bin
export PATH=~/bin:$PATH
curl [url="https://dl-ssl.google.com/dl/googlesource/git-repo/repo"]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > ~/bin/repo
chmod a+x ~/bin/repo

mkdir -p ~/android/system
 cd ~/android/system
 repo init -u [url="https://github.com/CyanogenMod/android.git"]https://github.com/CyanogenMod/android.git[/url] -b ics
 repo sync -f

Je pars la dessus :

http://wiki.cyanogen...:_porting_intro

1ere chose : Récupérer des infos sur le téléphone.

Pour ce faire : Une fois que le sdk est installé, il faut modifier le path pour ajouter le chemin d'adb

puis récupérer le fichier build.prop comme ceci :

adb pull /system/build.prop

Dans ce fichier il y a ces lignes :

ro.product.name=s9081

ro.product.manufacturer=WIKO

Ces informations vont nous servir à créer le script extract-files.sh

tout d'abord, creer l'aborescence :

mkdir -p device/wiko/s9081

mkdir -p vendor/wiko/s9081

mkdir -p kernel/wiko/s9081

J'ai placé le code source du kernel ici : ( je sais pas encore si ça sert à qqchose)

mkdir -p device/wiko/s9081/kernel

Ensuite on copie un fichier extract-files.sh qui se trouve par exemple dans l'arborescence du device panda comme ceci :

sudo cp -p device/ti/panda/extract-files.sh device/wiko/s9081/
sudo cp -p device/ti/panda/setup-makefiles.sh device/wiko/s9081/

J'ai modifié les deux fichiers device/wiko/s9081/extract-files.sh et setup-makefiles.sh comme ceci :

DEVICE=s9081
MANUFACTURER=wiko

Ce script va permettre, il me semble, de récupérer des librairies nécessaire à la compilation de CM. Il faut que le tel soit connecté au pc et reconnu par la commande adb.

adb devices

S'il y a des ???????????? c'est qu'il n'y a pas les bons droit sur votre PC.

Il faut donc taper cette commande :

$ lsusb
Bus 001 Device 004: ID [b]0bb4:0c03[/b] HTC (High Tech Computer Corp.)

Récuperer l'id.

puis creer le fichier /etc/udev/rules.d/99-android.rules

et mettre cette ligne à l'interieur :

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4:0c03", SYMLINK+="android_adb", MODE="0666" GROUP="plugdev"
TEST=="/var/run/ConsoleKit/database", \
RUN+="udev-acl --action=$env{action} --device=$env{DEVNAME}"

Maintenant, il faut débranché et rebrancher le tel et retesté la commande adb devices.

voir : http://forum.xda-dev...40#post11823740

Bon maintenant on se place dans device/wiko/s9081 et on lance la commande extract-files.sh.

J'ai des librairies qui ne sont pas récupérée :

$ ./extract-files.sh
45 KB/s (5476 bytes in 0.116s)
remote object '/system/vendor/lib/egl/libEGL_POWERVR_SGX540_120.so' does not exist
remote object '/system/vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so' does not exist
remote object '/system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so' does not exist
remote object '/system/vendor/lib/hw/gralloc.omap4.so' does not exist
446 KB/s (248888 bytes in 0.544s)
347 KB/s (75492 bytes in 0.212s)
150 KB/s (21768 bytes in 0.141s)
133 KB/s (13660 bytes in 0.100s)
75 KB/s (9340 bytes in 0.120s)
375 KB/s (95356 bytes in 0.248s)
422 KB/s (197980 bytes in 0.457s)
524 KB/s (877956 bytes in 1.633s)
./extract-files.sh: 99: ./extract-files.sh: ./setup-makefiles.sh: not found

Je vais regarder si c'est fichiers sont à un autre emplacement.

Bon déja dans le répertoire /system/vendor/lib/egl/, j'ai que :

libEGL_mtk.so
libGLESv1_CM_mtk.so
libGLESv2_mtk.so

J'pense qu'il faut que je modifie le fichier extract-files.sh pour qu'il récupère ces fichiers mais faut-il qu'ils gardent le même nom???

Bon j'ai modifié comme ceci :

adb pull /system/vendor/lib/egl/libEGL_mtk.so ../../../vendor/$MANUFACTURER/$DEVICE/proprietary/libEGL_mtk.so
adb pull /system/vendor/lib/egl/libGLESv1_CM_mtk.so ../../../vendor/$MANUFACTURER/$DEVICE/proprietary/libGLESv1_CM_mtk.so
adb pull /system/vendor/lib/egl/libGLESv2_mtk.so ../../../vendor/$MANUFACTURER/$DEVICE/proprietary/libGLESv2_mtk.so
adb pull /system/vendor/lib/hw/gralloc.mt6577.so ../../../vendor/$MANUFACTURER/$DEVICE/proprietary/gralloc.mt6577.so

Bon j'vais fouiller un peu car je suis perdu...

J'arrive pas à lancer la compilation enfin je sais meme pas ce que je compile...

Ce qu'il faut que je comprenne :

Comment gérer au mieux les variables d'environnement.

Comment intégrer les sources mediatek ( Il semble y avoir pas mal d'info importante dans le repertoire mediatek des sources fournies par wiko) Le problème c'est que l'arborescence ne correspond pas à cyanogen...

Comment compiler convenablement...

Bon j'fais une pause... J'fouillerais demain...

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

Pour cyanogen, il ne faut pas obligatoirement les sources du noyau pour le compiler mais on a besoin de celles-ci pour correctement le rendre compatible...

Le plus simple et que tu commence par compiler cyanogen pour un autre téléphone histoire de générer les outils et te familiariser avec les sources et voir comment et gérer le code spécifique a un tél...

Âpres tu peux commencer par cela : http://wiki.cyanogenmod.org/w/Doc:_porting_intro

Lien vers le commentaire
Partager sur d’autres sites

J'ai également réussi à compiler le kernel stock et j'ai obtenu le zImage.

Pour personnaliser le kernel, j'ai fait un make config mais ... pfiou... beaucoup trop d'options dont j'ignore totalement le rôle.

J'ai modifié les sources pour ajouter le gouvernor smartass2 d'Erasmusx.

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

Croco : http://forum.frandro...r-io-scheduler/

C'est une manière plus équilibrée de gerer l'activité du CPU. C'est censé procurer de bonne performance tout en économisant le CPU dès qu'il n'y a plus trop besoin de lui.

C'est pas forcément le governor que tout le monde utilisera mais c'est surtout pour moi l'occasion de tester comment on rajoute des fonctions au kernel de base (le kernel wiko propose de base hybrid/ondeman/performance/powersave/userspace)

Je me retrouve avec 2 versions du boot.img

Une version stock compilée depuis les sources, je vais commencer par tester celle ci.

Une version mod avec l'ajout du governor smartass2 que je testerai si mon téléphone n'est pas encore brické par l'étape 1 :)

J'éditerai ce message ensuite pour éviter le flooder le topic.

Edit 10h30 : Echec. J'ai flashé le boot.img compilé. Le King tourne en boucle dès l'allumage sur le logo cink king (il s'allume, affiche le logo, s'éteint, se rallume, etc.) J'ai donc reflashé le boot.img fourni dans la v14 et ça roule. Je pense que la compilation est ok mais que la méthode pour empaqueter le tout dans le boot.img ne doit pas être la bonne. Aucune idée pour débloquer la situation.

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

Je me suis basé sur ton premier post.

J'ai utilisé la même méthode que toi pour la compilation et l'empactage.

Je viens de faire un test : j'ai récupéré le boot.img de la v14, j'ai utilisé le script unpack pour obtenir le kernel et le ramdisk. J'ai immédiatement repacké les 2 parties et le boot.img obtenu fonctionne quand on le flash via flashtool.

Le problème n'est donc pas l'empactage en boot.img mais cela vient du zImage lui même.

Pourtant, aucun problème à la compilation.

Pour ajouter le smartass, j'ai modifié les sources du kernel en ajoutant tout cela dans les fichiers indiqués: https://github.com/e...1f0aebd8f0b9302 (j'ai fait le commit à la main ;) ) Je n'ai même pas testé le zImage obtenu vu que le premier ne fonctionne déjà pas.

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

C'est étrange.... Y'a vraiment quelque chose de bizarre... j'ai pas trop d'idée qui me viennent...

Il faudrait recompiler et mettre le déroulement de la compilation dans un fichier et analyser chaque warning.

De mémoire, il y a quelques warning

Modifié par croco
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...