Vous vous êtes peut-être rendu compte que le nombre de mes posts a fortement diminué. La vie de famille, professionnelle, passe avant le blog. Cela dit, j'essaie en parallèle de compiler FirefoxOS pour un Xperia Kyno (Néo, hallon appelait le comme vous voulez). J'ai essayé plusieurs tutoriaux trouvés sur les forum XDA. Celui qui a fonctionné a été celui ci-dessous. Il s'agit d'une expérience pour que le plus grand nombre puisse s'essayer à la compilation assistée.
J'avais bien essayé le portage avec la documentation de Mozilla. Cela ressemble plus à une chasse au trésor pour rassembler tous les éléments (fichier *.mk en tête) nécessaire à la compilation. J'ai donc céder à la facilité et repris le travail d'autre développeur plus malin que moi.
Le post d'origine du tuto est ici http://forum.xda-developers.com/showthread.php?t=2354392 qui est lui même la copie du travail d'un japonais. Il s'agit de la V1-Train de Firefox OS. Autrement dit la toute première version, en clair une alpha.
Pour une compilation de FirefoxOS V2.0 Il faudra trouver un autre tuto où s'inspirer ce celui là.
Le but de ce tuto est de se mettre le pied à l'étrier et donc se familiariser un peu avec FirefoxOS et sa compilation.
Je vous rappelle que pour tout cela vous devez avoir un téléphone dont le bootloader a été cassé.
Le pré-requis pour Ubuntu 14.04
Je suis sous Ubuntu 14.04. Pour les pré-requis, il faut suivre les recommandations de Mozilla que vous trouverez ici : https://developer.mozilla.org/en-US/Firefox_OS/Firefox_OS_build_prerequisites#Ubuntu_14.04
Pour les avancées vers l'objectif initial, vous pouvez me suivre sur diaspora (
Le tutorial original date de juillet 2013 (donc un peu). Il est basé sur une reprise d'une Cyanogen 4.0.4 pour urushi (Xperia Ray) dernière cyanogen stable pour cet appareil. Car aussi étrange que cela paraisse, Firefox OS s'appuie sur le kernel d'Android.
ATTENTION il est important de tout faire dans la même instance (fenêtre) de TERMINAL à cause des nombreux "export" Linux. Prévoir également 30 Go de libre sur votre disque dur. Il y a énormément de sources à bouger, sans compter les compilations.
La préparation
La première étape est de récupérer la version modifié de B2G (peut-être pas la meilleur idée du monde mais ça marche)
cd ~/b2g_work export B2G_WORK=`pwd` export DEVICE=urushi git clone https://github.com/neuralassembly/B2JC.git B2G cd B2G
Après on choisi ce que l'on veut configurer (pour nous Xperia Ray - urushi)
./config.sh urushi
La commande ci dessus va récupérer tout un tas de sources un peu partout sur le web. Pour l'essentiel, les sources vont être récupéré chez Mozilla et Cyanogen. Cette étape est très longue car il y a quelques Giga de donnée à récupérer.
Maintenant on va créer un backup du téléphone à partir des sources Cyanogen
mkdir $B2G_WORK/B2G/backup-$DEVICE cd $B2G_WORK/B2G/backup-$DEVICE
On va récupérer la version d'Android pour Xperia Ray, il s'agit ici d'une Cyanogen 9.10 urushi. C'est la dernière stable chez Cyanogen pour le Xperia Ray.
wget http://download.cyanogenmod.com/get/jenkins/7098/cm-9.1.0-urushi.zip unzip cm-9.1.0-$DEVICE.zip
cd $B2G_WORK/B2G/device/semc/$DEVICE/ ./extract-files.sh
Normalement cette étape ci-dessus exige que le téléphone soit branché à l'ordinateur. L'auteur du tuto a modifié le script d'extraction pour prendre depuis l'archive. Mine de rien c'est un gain de temps non négligeable et permet de tester d'autres configurations sans forcément avoir le mobile sous la main.
Dans la version originale, il existe 2 options pour les téléphones japonais je ne les ai pas reporté ici, mais je les ai ajouté lors de mon test de compilation.
Maintenant on va patcher Gonk et Gaia. Je ne sais pas si ces patchs sont toujours nécessaires. Je n'ai pas regarder non plus de quoi il en retournait.
cd $B2G_WORK/B2G/gaia/build wget https://dl.dropboxusercontent.com/u/69652790/patch/b2g-webapp-zip.patch patch < b2g-webapp-zip.patch cd $B2G_WORK/B2G/gecko/hal/gonk/ wget https://dl.dropboxusercontent.com/u/69652790/patch/b2g-GonkHal.patch patch < b2g-GonkHal.patch
Maintenant, on va définir quelques variables systèmes pour la compilation. Si vous reprenez le travail après avoir éteint votre terminal, il vous sera nécessaire de refaire cette étape. (penser également à définir DEVICE et B2G_WORK comme au début de ce tutorial).
export LOCALE_BASEDIR=$B2G_WORK/B2G/multilocale/gaia-l10n export LOCALES_FILE=$B2G_WORK/B2G/multilocale/languages-japan.json export PATH="$PATH:$B2G_WORK/B2G/multilocale/compare-locales/scripts" export PYTHONPATH="$B2G_WORK/B2G/multilocale/compare-locales/lib" export MOZILLA_OFFICIAL=1 export GAIA_DEV_PIXELS_PER_PX=2
On va passer à la compilation du noyau du système.
cd $B2G_WORK git clone https://github.com/CyanogenMod/semc-kernel-msm7x30 -b ics cd semc-kernel-msm7x30 export ARCH=arm export CROSS_COMPILE=$B2G_WORK/B2G/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- make semc\_$DEVICE\_defconfig make -j16 cp `find drivers net -name "*.ko"` $B2G_WORK/B2G/device/semc/$DEVICE/ cp arch/arm/boot/zImage $B2G_WORK/B2G/device/semc/$DEVICE/kernel
Petite explication des lignes ci-dessus.
On va récupérer les sources du noyau pour un processeurs msm7x30 de la branche ics (Ice Cream Sandwich) depuis les dépôts de cyanogen. Ensuite on donne 2 directives pour la compilation (les export), on fabrique le fichier de .config avec le make semc_... ,on reconstruit le noyau. On fini par le copier là où il doit se trouver à la fin (les cp).
xulrunner problème
Une petite modification de mon cru pour faire passer la compilation de Gaia. Il faut remplacer les sources de xulrunner. Le Makefile de Gaia est pour le moins étrange. Il a décidé que j'étais en i386 alors que lorsque je lance la commande uname -m je suis en x86_64. Je ne sais pas d'où vient se problème et ça fait planter la compilation.
Pour cela on va chercher le sdk qui va bien ici => http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/latest/sdk/
Dans mon cas il s'agit du xulrunner-32.0.3.en-US.linux-x86_64.sdk.tar.bz2 et le décompresser dans le répertoire suivant
cd $B2G_WORK/B2G/gaia/xulrunner-sdk/bin/xulrunner
wget http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/latest/sdk/xulrunner-32.0.3.en-US.linux-x86_64.sdk.tar.bz2 tar xjf xulrunner-32.0.3.en-US.linux-x86_64.sdk.tar.bz2
Autre solution pour xulrunner changer le fichier B2G.gaia/.xulrunner-url Remplacer l'url présente par
http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/latest/sdk/xulrunner-32.0.3.en-US.linux-x86_64.sdk.tar.bz2
Dans le fichier $B2G_WORK/B2G/gaia/tools/xpcwindow/MakeFile et $B2G_WORK/B2G/gaia/Makefile Changer la valeur pour que la ligne devienne : XULRUNNER_SDK_URL=http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/latest/sdk/xulrunner-32.0.3.en-US.
On va s'éviter la compilation des tests (n'a pas vraiment fonctionné dans mon cas).
export PRODUCTION=1 export GAIA_APP_TARGET=production
Problème avec la radiofm
Lors d'une compilation j'ai eu une erreur sur la fmradio
2 solutions :
Soit virer le répertoire $B2G_WORK/B2G/framework/base/fmradio
Soit ajouter au manisfest $B2G_WORK/B2G/.repo/manifests/urushi.xml la ligne suivante (non testé) et probablement relancer le ./config.sh
<project path="hardware/ti/fmradio" name="android_hardware_ti_fmradio" remote="cm" revision="ics" />
La compilation
Voilà normalement tout est près pour lancer la commande qui va prendre une demi-journée pour certain (en fait pour moi le config.sh est beaucoup plus long)
cd $B2G_WORK/B2G ./build.sh -j1 otapackage
Si vous devez relancer une compilation il faudra effacer quelques répertoires
rm -rf objdir-gecko rm -rf out
Si tout c'est bien passé dans le répertoire vous devez avoir une fichier out/targe /product /urushi/full_urushi-ota-eng.username.zip-ray (pour moi ça donne full_urushi-ota-eng.jbaptiste.zip)
Si par hasard ça c'est mal passé vous pouvez enlever otapackage dans ce cas il va falloir envoyer les *.img un par un au terminal.
La compil plante
Si ça plante parce que c'est un peu la loose, (ça plante souvent les premières fois) vous pouvez lancer les commandes suivantes les unes à la suite des autres.
./build.sh gaia -j1 ./build.sh gecko -j1 ./build.sh -j1 ./build.sh -j1 otapackage
JE ME SUIS ARRETE Là, la suite est donnée pour les plus téméraires
L'envoi vers le smartphone
Pour le Xperia Neo (Kyno en Français ou son petit code hallon) la bonne nouvelle c'est que le Manifest est simple à changer. Il diffère d'une ligne par rapport à celui du xperia Ray. En revanche, il va falloir récupérer les .mk et là c'est une autre histoire.
Maintenant la touche finale l'envoi vers le smartphone de l'archive et surtout du boot.img
Parce qu'il n'est jamais trop tard, il aurait fallu déjà avoir installé fastboot, pour envoyer tout ce qu'il va bien vers le smartphone.
sudo apt-get install android-tools-adb android-tools-fastboot adb start-server adb devices -l
La dernière commande doit vous afficher votre terminal. Si par hasard, il est écrit que vous n'avez pas de droit dessus (style root). Il va falloir modifier quelques petites choses au niveau de la configuration Linux (je vous passerais ça plutard).
Je vous conseille d'envoyer le fichier zip qui contient tout ce qui va bien (gaia etc ) avec la commande suivante.
adb push full_urushi-ota-eng.jbaptiste.zip /sdcard
Il va falloir le démarrer en mode fastboot. Pour cela, éteindre l'Xperia Ray, Appuyer sur Volume + puis tout en maintenant la touche (volume +) branchez le cable USB. Normalement, vous devez avoir une petite led bleu allumée.
refaire un adb devices -l pour controler la présence du téléphone puis envoyé le fichier boot.img (être dans le même répertoire que le fichier)
Fastboot flash boot boot.img
Maintenant il faut démarrer le téléphone en mode recovery.
Démarré le téléphone, et appuyé sur volume + une fois, lorsque la LED s'éclaire ou change de couleur.
Ensuite, il faut aller dans le menu install from a Zip (avec volume + et - pour monté descendre, et home pour valider). choisir full_urushi-ota-eng.jbaptiste.zip valider, choisir yes, valider. Flipper un moment le temps que le zip soit mis en place.
Appuyer sur home pour revenir, puis reboot
La flipper un long moment pour savoir si ça fonctionne.
Pour les plus fous d'entre nous je mets à disposition les résultats de la compilation. JE VOUS AVERTIR QUE JE NE SUIS PAS RESPONSABLE SI VOUS BLOQUEZ votre téléphone. Je n'ai pas testé sur mon téléphone. Je n'ai aucune idée si ça fonctionne !!!
Pour le zip : http://j.baptiste.free.fr/geekmps/firefoxos/full_urushi-ota-eng.jbaptiste.zip
Pour le boot.img : http://j.baptiste.free.fr/geekmps/firefoxos/boot.img
Comments powered by CComment