Jump to content
crocodanser

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...

Edited by croco
  • Like 2

Share this post


Link to post
Share on other sites

Ton zimage est plus gros que celui de wiko donc ca se ressent dans le boot.img stou

Share this post


Link to post
Share on other sites

Kernel compilé mais pas testé. Y'a t'il un risque de tester un boot.img?

Mais pourquoi il est plus gros ? J'ai rien fait de plus que ce qu'ils ont fourni.

Share this post


Link to post
Share on other sites

Si tu backup avant de flash non, au pire tu restore si sa tourne au vinaigre.

Il peut être plus gros tout bêtement a par manque d'optimisation a ce niveau (genre option -0s)

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

alors franchement si vous etes assez bon pour pondre un kernel modded facon franco ce serait tres puissant !! :)

je suis de tout coeur avec vous : )

Edited by niikkoo

Share this post


Link to post
Share on other sites

ou un petit dorimax...ou hyperdroid...y en a tellement ^^

quand j aurais un peu de temps je me plongerais dedans..mais avec un bon gros tuto si tu peu nous en pondre un ;)

Share this post


Link to post
Share on other sites

Ba écoute, j'écris mes notes ici. Si j'arrive à quelque chose, je ferais un méga tuto bien détaillé comme il en existe très peu...

Share this post


Link to post
Share on other sites

etant sous win a l epoque ou je regardais les tuto c etais toujours sous linux...

les outils sous win ca serais bien..

Share this post


Link to post
Share on other sites

franchement je prefere de loing mon windows seven kernel whs ^^

j ai mint d installer sur mon autre pc mais ca me gave

le tux je m en sert uniquement pour les serveurs plus light que whs

Share this post


Link to post
Share on other sites

bah tu virtualize ton mint dasn ton whs et ta tout ce qu il te faut ^^

Share this post


Link to post
Share on other 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.

Edited by jmb--

Share this post


Link to post
Share on other 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.

Edited by jmb--

Share this post


Link to post
Share on other sites

Merci pour l'info.

Peux-tu décrire la methode que tu as utilisé pour ajouter le module?

La méthode de compilation que tu as utilisé est la même que la mienne? T'as utilisé la même commande que moi pour l'empactage du zImage en boot.img?

Share this post


Link to post
Share on other 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.

Edited by jmb--

Share this post


Link to post
Share on other 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

Edited by croco

Share this post


Link to post
Share on other sites

Je testerai de booter sur le zImage avec

fastboot boot zImage

[du sdk] mais je n'y crois pas trop.

Je referai une compil quand j'aurai accès a mon ordi qui fait aussi emulateur psx pour mon fils.

Share this post


Link to post
Share on other sites

moi j'vais en refaire un ce midi. Pour tester, il faut SPFlashtool juste le boot.img en cas de problème, j'ai juste à reflasher le boot.img de la v14 c'est ça? Pas besoin de root?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...