Installation grapheneos
GrapheneOS est un système d'exploitation mobile pour Google Pixel basé sur Android Open Source Project (AOSP) et focalisé sur la sécurité. En ce sens, il n’intègre aucun logiciel Google (mais permet l'installation des Play Services dans un bac à sable en mode non privilégié pour une utilisation "normale" d'un mouchard de poche moderne) et propose des fonctions visant la sécurité tout en veillant à garder l'utilisation quotidienne agréable. Le gros des apports sécuritaires est issus de travaux de fond sur le système d'exploitation lui-même : allocateur mémoire, LSM, noyau Linux basé sur Linux Hardened, vérification d'amorçage, canal de mise à jour dédié et activement maintenu, contrôle poussé des permissions, minimisation des surfaces d'attaques, IOMMU d'isolation pour le modem à bande de base...
Parmi les fonctions proposées, on retrouvera notamment le chiffrement du système de fichier, des profiles SELinux correctement implémentés, la gestion des profiles Android, l'aléatoirisation des adresses MAC lors de connexion aux réseaux Ethernet et autres joyeusetés.
Le choix des Google Pixel est basé sur des critères de sécurité objectifs et fidèles au modèle de sécurité pensé par Google pour AOSP tels que :
- un support logiciel d'au moins 3 ans
- éditer des bulletins mensuels de sécurité
- posséder un TPM ou autre composant de sécurité moderne
- permettre de verrouiller le chargeur d'amorçage avec système d'exploitation et clés personnalisées
- implémenter de façon fonctionnelle le verified boot
Si un autre téléphone venait à respecter ces principes, il serait probablement supporté par ce système mais force est de constaté que les constructeurs de mouchards ont d'autres priorités...
Je vous recommande la lecture des articles de l’excellent blogue d'un pauvre type ;) passionné et curieux avec une attention particulière à celui-ci et celui-là.
ATTENTION
Il est indispensable de disposer d'un appareil permettant l'autorisation du déverrouillage du chargeur d'amorçage pour pouvoir changer de système d'exploitation (procédure plus bas). Vérifiez bien cette possibilité au moment de l'achat (certains Pixel vendus par les opérateurs sont bloqués avec des ROM non déverrouillables) sous peine de ne devoir vous résigner à utiliser Android (avez que ça pue quand même).Installation de l'environnement
Au vu du nombre de merdes à installer sur son PC pour flasher un ordiphone Android, il est vivement recommandé de recourir à une installation dédiée de Debian qui ira direct au formatage à l'issue... La version 11 de la célèbre distribution Linux a été utilisée le 13/05/2023 pour la réalisation de cette documentation. Il est préférable de suivre les indications de la page officielle du projet qui dispose également d'un installeur WEB (non fonctionnel le jour du besoin mais déjà utilisé il y a quelques temps et fournis le même résultat à l'identique). La présente documentation a pour objet de compléter la procédure de quelques étapes qui ont été indispensables dans mon cas (comme c'est bien trop souvent le cas lorsque l'on suit des procédures...).
INFORMATION
Concernant les risques liés aux opérations sur le téléphone, sachez que j'en ai flashé plusieurs et que comme on en a l'habitude en informatique, il a toujours une couille qui fait échouer une étape. Je peux donc dire qu'il y a suffisamment de gardes-fous dans cette usine à gaz pour ne pas risquer de transformer votre appareil en brique inutilisable.Installation des outils
apt install android-sdk-platform-tools-common signify-openbsd libarchive-tools android-tools-adb android-tools-fastboot
Téléchargement de la plateforme d'outils Android
wget https://dl.google.com/android/repository/platform-tools_r34.0.1-linux.zip echo '09aa9346b7c61adbf79f15378cbd61666899a20678b8cb9872f078c38fe3833f platform-tools_r34.0.1-linux.zip' | sha256sum -c
Décompresser l'archive et rendre utilisable les binaires s'y trouvant
bsdtar xvf platform-tools_r34.0.1-linux.zip export PATH="$PWD/platform-tools:$PATH"
INFORMATION
Les outilsfastboot
et adb
sont respectivement destinés à interagir avec Android et le chargeur d'amorçage.Création de l'espace de travail
mkdir /tmp/grapheneos cd /tmp/grapheneos
Téléchargement de la clé publique du projet
wget https://releases.grapheneos.org/factory.pub
Téléchargement de l'image de GrapheneOS (et de sa signature) pour votre appareil (Pixel 6, dit oriole dans l'exemple)
wget https://releases.grapheneos.org/oriole-factory-2023050500.zip https://releases.grapheneos.org/oriole-factory-2023050500.zip.sig
Vérifier la signature de l'image (renvoie "vérifiée" si c'est bon)
alias signify=signify-openbsd signify -Cqp factory.pub -x oriole-factory-2023050500.zip.sig && echo vérifiée
Extraire l'image
bsdtar xvf oriole-factory-2023050500.zip cd oriole-factory-2023050500
Permettre le chargement du bon pilote (lorsque le téléphone sera dans son chargeur d'amorçage et branché au PC) en lieu est place du périphérique MTP standard d'Android (nécessaire uniquement pour l'installation de GrapheneOS)
echo 1 | tee /sys/bus/usb/drivers_autoprobe
Note : la valeur par défaut est à 0 et se réinitialise au démarrage du PC.
Préparation du téléphone
Afin de rendre possible le changement du système d'exploitation, il est impératif d'autoriser le déverrouillage du chargeur d'amorçage via les options pour développeurs. Ce menu, par défaut caché, est activable en appuyant 7 fois sur le champ numéro de build
de À propos du téléphone
dans l'application Paramètres
. Une fois les options développeurs activées, il faut se rendre dans le menu Système
(situé au même niveau que À propos du téléphone
) suivi de Options pour les développeurs
et activer l'interrupteur Déverrouillage OEM
(si elle est grisée c'est que c'est mort pour vous) ainsi que Débogage USB
. Cette dernière option permet la prise en main de l'ordiphone par votre PC via USB.
ASTUCE
Dans le cas où le déverrouillage OEM n'est pas disponible, vous pouvez toujours tentez de vous tourner vers votre vendeur (il peut exister une procédure de déblocage car ceci est prévu par Google), regarder si une faille existe pour contourner le blocage (cela s'est vu par le passé) ou bien retourner votre appareil pour en prendre un autre (venant de la boutique officielle de Google de préférence).Une fois ceci fait, il faut redémarrer dans le chargeur d'amorçage. Celui-ci est accessible en maintenant enfoncé le bouton volume bas
lors du démarrage du téléphone ou bien en entrant la commande qui suit depuis votre PC :
adb reboot bootloader
INFORMATION
Le fait queadb
puisse interagir avec votre Pixel est le fait de l'option Débogage USB
. La commande adb devices
permet de s'assurer de la bonne prise en charge de votre appareil en affichant ceux qu'il détecte.À ce stage, votre téléphone est en attente dans le menu de son chargeur d'amorçage : écran simple sur fond noir avec un peu de texte et une esthétique qui laisse à désirer. Il ne vous reste plus qu'à déverrouiller ce même chargeur d'amorçage pour permettre l'introduction d'un nouveau système.
fastboot flashing unlock
De la même manière que pour adb
, un fastboot devices
va lister les périphériques détectés et vous confirmer (ou non si vous êtes encore dans l'une des bizarreries de l'informatique...) la bonne présence de votre appareil.
Installation du système d'exploitation
Veuillez noter que cette partie va consommer plusieurs gigaoctets dans le répertoire $TMPDIR
(généralement /tmp). Veillez à avoir de la marge (moins d'une dizaine de gigaoctets devrait suffire). Dans mon cas, j'affectionne l'utilisation d'une partie de ma RAM pour ce genre d'opérations. Voici ma méthode que vous pouvez adapté à votre configuration matérielle.
mkdir /tmp/ramdisk mount -t tmpfs -o rw,size=50G none /tmp/ramdisk
Nous voilà arrivé à l'étape fatidique qui va remplacer le maliciel Android fourni de base avec votre téléphone par un système plus respectueux de vos correspondants et de vous même. Ceci va formater la mémoire morte de votre appareil et donc empêcher un retour en arrière sans passer par la réinstallation d'Android (procédure à chercher par vous même car non testé de mon côté si cela vous intéresse).
ANDROID_PRODUCT_OUT="./" TMPDIR="/tmp/ramdisk" ./flash-all.sh
La variable $ANDROID_PRODUCT_OUT
est initialisée au répertoire courant (soit /tmp/grapheneos/oriole-factory-2023050500/
à ce stade de la procédure) et interrompt l'installation si vide (valeur par défaut). Allez savoir pourquoi ce n'est pas dans la documentation officielle...
Le téléphone va passer par diverses phases de redémarrage pour terminer là où il a commencé, à savoir le menu du chargeur d'amorçage. Le script d'installation est assez verbeux donc sachez qu'il y a un problème si votre stdout
est vierge. Vous pouvez également observer le remplissage de votre $TMPDIR
à mesure de l'avancée du processus.
Il vous faut maintenant reverrouiller le chargeur d'amorçage
fastboot flashing lock
Démarrer sur GrapheneOS et désactiver l'autorisation de déverrouillage du chargeur d'amorçage via l'interrupteur Déverrouillage OEM
de tout à l'heure.
Votre nouvelle installation est maintenant prête !