Installation grapheneos

De Wiki doc


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 outils fastboot 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 que adb 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 !

Source