meta données pour cette page
Replicant sur GT-i9100 (samsung S2)
Replicant est une distribution Android entièrement open-source n'étant pas équipe de logiciel privatif ou d'applications liée directement à Google. C'est un système d'exploitation mobile à base de logiciel libre mettant l'accent sur la liberté et la vie privée / sécurité
Une fois les installations faites, de nombreuses APK sont disponible sur le site APKMirror
Pré-requis
Ressources documentaires :
Téléchargeons la dernière version système et le recovery respectif de Replicant : https://redmine.replicant.us/projects/replicant/wiki/ReplicantImages
Puis vérifier la correspondance de la ROM grâce au checksum :
sha256sum recovery-i9100.img sha256sum replicant-6.0-i9100.zip
On aura besoin de ces paquets par la suite :
apt-get install heimdall-flash android-tools-adb
Installer le recovery
Commençons par stopper totalement le smartphone puis appuyer sur les touches :
Volume bas + Menu + Power
Puis sélectionner le volume haut pour accepter de télécharger des données. Depuis le pc on peut faire :
heimdall flash --KERNEL recovery-i9100.img
Installer la ROM
Une fois le terminée, il va redémarrer en mode recovery. Il faudra alors suivre ces étapes :
- Factory reset > Wipe data (keep media) > Yes
- Apply update > Apply from ADB
Depuis le pc on téléversera la ROM :
adb sideload replicant-6.0-i9100.zip
Terminons par supprimer toutes les informations concernant le mode usine :
- Factory reset > Full factory reset > Yes
- Reboot system now
Le 1er démarrage va être lent car il paramétrera les applications de bases. Cela devrait prendre moins de 10 minutes.
Notons que la procédure est la même pour son upgrade
Installer le firmware Wifi et Bluetooth
Les étapes qui vont suivre sont pas plus compliqué que précédemment, il suffit de télécharger une suite de fichiers. Créons d'abord un dossier qui les regroupera :
mkdir firmware cd firmware for i in bcmdhd_{apsta,sta,p2p}.bin nvram_net.txt; do wget 'https://raw.githubusercontent.com/TheMuppets/proprietary_vendor_samsung/cm-14.1/i9100/proprietary/system/etc/wifi/'$i; done cd ../ wget https://redmine.replicant.us/attachments/download/1484/dhd.ko
Il faut pas la suite s'assurer que le téléphone (en état de marche) puisse communiquer avec le pc. On se rend dans les paramètres en suivant ces menus :
- Settings > Developer options > Android Debugging = enabled
- Settings > Developer options > Root access = ADB only
Il reste plus qu'a téléverser les fichiers avec les bon droits puis de faire un reboot pour prendre en compte les changements (se mettre en tant que root sur sa machine locale ) :
adb root adb remount adb push dhd.ko /system/lib/modules/dhd.ko adb shell mkdir /system/vendor/firmware adb shell chown root:shell /system/vendor/firmware adb shell chmod g-w,o-w /system/vendor/firmware find firmware/ -type f -exec adb push {} /system/vendor/firmware \; adb reboot
Activez le Wifi et vous devez maintenant être dans la capacité de voir les points d'accès environnant. En cas de soucis, plus de détails sont données à cet article : https://manurevah.com/blah/en/p/Replicant-6-Enabling-Wifi-on-Galaxy-2-i9100
Debuggage
Si vous rencontrez ce type d'erreur :
ADB server didn't ACK* failed to start daemon *
Relancer le daemon ainsi :
adb kill-server adb start-server
Installer le firmware GPS
Ci dessous, ce sont juste des prises de notes car à ce jour, c'est très mal supporté.
mkdir gps cd gps for i in {libakm,libsec-ril,libsecril-client}.so ; do wget 'https://raw.githubusercontent.com/TheMuppets/proprietary_vendor_samsung/cm-14.1/i9100/proprietary/system/lib/'$i; done cd ../ wget https://github.com/TheMuppets/proprietary_vendor_samsung/blob/cm-14.1/i9100/proprietary/system/lib/hw/gps.exynos4.so
adb push gps.exynos4.so /system/lib/hw/ find gps/ -type f -exec adb push {} /system/lib \;
Sources :
- https://paste.autarcie.org/?a3104993646e1c0e#2DGLVvZkDP2WZxL5Hbf8Rq7C1W35MVsDSD9pNDYskAKh (un paste pour pas endommager son SEO)
Build Image
Gardons en tête que les codes sources sont disponible ici : https://git.replicant.us/replicant/device_samsung_i9100/
Les prochaines étapes vont requières ~70Go d'espace disque et plusieurs heures d'installations.
Dépendances
C'est la première étape :
dpkg --add-architecture i386 ; apt-get update
Il faudra vérifier dans les sources.list si l'option “deb-src” est bien active pour ensuite exécuter les commandes suivantes :
apt-get build-dep gcc binutils llvm-defaults apt-get install bash gcc-arm-none-eabi cmake python-dev swig ant bc proguard maven-debian-helper libemma-java libasm4-java libguava-java libnb-platform18-java libnb-org-openide-util-java libandroidsdk-ddmlib-java libmaven-source-plugin-java libfreemarker-java libmaven-javadoc-plugin-java ca-cacert curl gawk libgmp3-dev libmpfr-dev libmpc-dev git-core gperf libncurses-dev squashfs-tools pngcrush zip zlib1g-dev lzma libc6-dev-i386 g++-multilib lib32z1-dev lib32readline-dev lib32ncurses5-dev zlib1g-dev:i386 xsltproc python-mako schedtool gradle dirmngr libandroidsdk-sdklib-java eclipse-jdt libgradle-android-plugin-java android-sdk-build-tools android-sdk-platform-23 aapt lzop rsync
Installons les outils de Google :
mkdir ~/.bin cd ~/.bin git clone https://android.googlesource.com/tools/repo chmod a+x repo ln -s ~/.bin/repo/repo /usr/local/bin/repo
Initialiser le projet
Passons à la partie concernant le projet Replicant :
mkdir ~/replicant-6.0 cd ~/replicant-6.0 repo init -u https://git.replicant.us/replicant/manifest.git -b replicant-6.0 repo sync
Préconstruire les applications :
gpg --recv-key 37D2C98789D8311948394E3E41E7044E1DBA2E89 vendor/replicant/get-prebuilts
Ces deux commandes sont à relancer à chaque fois qu'on lance un “repo sync”
Construction
Nous aurons besoin de la toolchain (La compilation peut prendre plusieurs heures) :
cd ~/replicant-6.0 ./vendor/replicant/build-toolchain
Puis enfin compiler l'image Replicant (Idem, la patience est grandement requise) :
./vendor/replicant/build.sh i9100
Des binaires se trouverons dans out/host/linux-x86/bin/ et out/dist/i9100/
Commandes utiles
- Lancer/stopper le service adb :
adb start-server adb kill-server
- Lister des téléphone connectés :
adb devices
- Executer une commande bash :
adb shell ls /sdcard/
- Reboot parmis ces modes :
adb reboot recovery adb reboot bootloader
- Attend qu'un périférique se connecte :
adb wait-for-device
Enregistrer son écran
Ajouter dans le bashrc :
screenStream() { while true do adb exec-out screenrecord --output-format=h264 --size 1024x768 - done }
Puis lancer sa diffusion :
screenStream |ffplay -framerate 60 -probesize 32 -framedrop -bufsize 16M -sync video -