J'ai récupéré un boitier ASUS Chromebox CN60 utilisé en mode kiosque dans une entreprise pour promouvoir ses produits et comme son nom l'indique, avec ChromeOS comme système d'exploitation. Je vais profiter de l'expérience acquise lors d'une migration d'un portable sous ChromeOS vers Linux Mint/Primtux et relatée dans cet article [Primtux] Installation sur un Chromebook HP x360 pour renouveler l'expérience avec cet appareil.
Autres sources :

IMPORTANT : Comme il s'agit d'un modèle d'entreprise, il est "enrolled" et ne peut être modifié tant qu'il n'est pas un-enrolled par l'administrateur système... Bref, tant qu'il ne sera pas "unenrolled" ou "deprovisionned" par l'entreprise initiale,  on ne pourra pas l'utiliser personnellement et modifier l'OS... À moins de trouver une solution de contournement... en flashant le BIOS.

Plus d'info ici : https://support.google.com/chromebook/answer/6350022?sjid=1003188662938256223-EU&visit_id=638488777255582453-3042616626&ctx=ownership&p=ownership&rd=1

 

I- Caractéristiques de la Chromebox

Mon modèle est pourvu d'un disque SSD de 16 Go, d'une barette de 2 Go de ram avec un slot de libre et d'un processeur inconnu au moment de l'installation mais ça doit être un Celeron 2955U / 1.4 GHz (modèle le moins puissant).

Il dispose du Wi-Fi double bande 802.11 a/b/g/n, quatre ports USB 3.0, 1 port HDMI, 1 DisplayPort et un lecteur de carte SD.
Ce boîtier doit dater de 2014 et n'est plus suivi par Google : https://support.google.com/a/answer/9300504

Il serait très intéressant pour réaliser une box domotique tournant sous Home Assistant par exemple, un boitier multimédia ou en utilisation en mode "kiosque", un ordinateur dans une école (à condition d'augmenter le disque SSD, voire la ram), ...

Cette Chromebox est verrouillée au nom de l'entreprise car lorsqu'on la réinitialise, elle demande une adresse courriel avec le nom de domaine de l'entreprise. Bref, il faudra réinstaller ChromeOs de zéro flasher complètement le BIOS pour faire sauter cette limitation.

Composants de base :

  • 1 barette de 2 Go de mémoire vive : 2GB 1Rx16 PC3L-12800S-11-11-C3 (DDR3 SO DIMM - DDR3-12800 ou PC3-1600). On peut aller jusqu'à 2 x 8 Go, mais 2 x 2Go serait déjà pas mal en récupérant une barette supplémentaire de 2 Go.
    Comme je risque de récupérer d'autres modèles de ce type, j'ai commandé 2 barettes de 8 Go pour 25€ : https://www.amazon.fr/gp/product/B01NAXBSIY. Du coup, je confirme qu'on peut monter à 16 Go de ram sur cet appareil.
  • 1 disque SSD de 16 Go : Sandisk SDSA6MM-016G-1002 - 16GB 6Gb/s M.2 SATA NGFF 2242 42mm Solid State SSD.
    Je vais le remplacer par un SSD de 120 Go (amplement suffisant pour un usage basique) à 22 € : https://www.amazon.fr/gp/product/B076P63R3N. Ce nouveau disque fonctionne parfaitement sur cet appareil.

II- Démontage et démarrage:

Pour installer un autre système d'exploitation, il est nécessaire d'enlever une vis de verrouillage empêchant de modifier le firmware (oui c'est une particularité des vieux appareils sous ChromeOS). Il faut dont le démonter en enlevant les 4 vis cachés sous les patins en caoutchouc se trouvant dans les angles. Vidéo de démontage : https://yt.artemislena.eu/watch?v=m8aBOWOKAQo

La vis de verrouillage sert aussi de vis de montage (camouflée ?) : https://kodi.wiki/view/Archive:Chromebox#Disable_Firmware_Write_Protect

Le cache plastique noir à déclipser permet de mieux démonter et remonter la carte : utile à connaître lorsqu'on flashera le firmware.

 

III- IMPOSSIBLE : Passage de la Chromebox en mode "Développeur" :

Source : https://ubuntu.com/tutorials/install-ubuntu-on-chromebook#2-enabling-developer-mode

Tout comme les ordiphones sous Android (on voit bien la patte de Google) que l'on veut rooter ou mettre sous LineageOS, il est nécessaire de passer le Chromebook en mode développeur.
Pour cela, il faut insérer un trombone (ou une aiguille) dans le trou et maintenir appuyé sur le bouton de réinitialisation puis appuyer en même temps sur le bouton de mise sous tension. Une fenêtre apparaît avec un message en hollandais (langue par défaut de mon ordinateur), qu'on peut afficher en français en appuyant sur la touche "flèche gauche". On peut relâcher l'appui avec le trombone.
Presser CTRL+D pour entrer en mode développeur.
Sur l'écran suivant, comme demandé, ré-insérer le trombone pour appuyer un coup bref sur le bouton de ré-initialisation.
-> L'ordinateur est en mode "non vérification" de l'image : il s'agit du mode Développeur. Attention, ce mode saute dès que l'ordinateur redémarre sur le système pré-installé dans le boitier. Si ça arrive (ce qui est quasi certain quand on commence ce genre de manip...), il faudra recommencer les manip ci-dessus.

Presser CTRL+D lorsqu'on arrive sur l'écran de démarrage du mode développeur.
On a alors un message (en néerlandais) indiquant que le propriétaire de l'appareil a désactivé le mode développeur pour cet appareil !!! Il faut lui demander de suspendre cette restriction si on veut disposer de ce mode développeur. Le système redémarrera donc en mode vérifié. On a fait toutes les manip de ce chapitre pour rien... GRR !!!
INUTILE DE CONTINUER avec cette rectriction car on n'aura pas accès à la console shell permettant la mise à jour du firmware. Il va falloir voir comment l'enlever...

 

IV- Flashage du BIOS :

On peut visiblement contourner le problème du blocage de l'accès au mode développeur en reprogrammant la machine  :

A- Matériel nécessaire

Du coup, j'ai commandé le matériel nécessaire ici (pour 15€) : https://www.amazon.fr/gp/product/B07RKXSMKH (pas besoin de la carte convertisseur de 1.8V) et suivi la procédure très claire de MrChromebox.

B- Récupération du firmware à flasher

Il faut d'abord télécharger l'utilitaire "flasrom" avec les commandes :
sudo apt update
sudo apt install flashrom

Pour récupérer le firmware correspondant à mon modèle, j'ai tapé :
wget https://mrchromebox.tech/files/firmware/full_rom/coreboot_edk2-panther-mrchromebox_20240416.rom
Pour récupérer la somme Sha1 pour vérifier la rom :
wget https://mrchromebox.tech/files/firmware/full_rom/coreboot_edk2-panther-mrchromebox_20240416.rom.sha1

C- Récupération du "tatouage" de la machine (Vital Product Data)

Le firmware de tous les appareils sous ChromeOS comprend un section (RO_VPD) où sont inscrites les données spécifiques de la carte-mère, comme le n° de série, la localisation ou l'adresse MAC du port Ethernet. En flashant le BIOS avec un programmeur comme on va le faire (contrairement à la méthode utilisant le Firmware Utility Script), coreboot va remplacer l'adresse MAC originelle par une adresse MAC générique. Ceci n'est problématique que si on utilise 2 ou plusieurs appareils sur le même segment de réseau (car ils auront tous la même adresse MAC) mais il est possible de contourner ce "problème" potentiel.
Aussi pour éviter ce souci, il faudra extraire le VPD (à partir de la carte elle-même ou à partir d'une sauvegarde réalisée par le Firmware Utility Script)  et l'injecter dans le firmware qui sera flashé.

Pour cela, il va falloir utiliser l'utilitaire cdfstool (coreboot filesystem) qu'on récupère avec cette commande :
wget https://mrchromebox.tech/files/util/cbfstool.tar.gz && tar -zxf cbfstool.tar.gz

Extraire le firmware de l'appareil avant de le flasher avec les commandes :
sudo flashrom -p ch341a_spi -r badflash.rom
./cbfstool badflash.rom read -r RO_VPD -f vpd.bin

On peut alors injecter ces informations VPD dans le firmware que nous allons flasher :
./cbfstool coreboot_edk2-panther-mrchromebox_20240416.rom write -r RO_VPD -f vpd.bin

Remarque : il est possible de "fixer" une adresse MAC avec l'utilitaire VPD Tool (mais je n'ai pas approfondi le sujet) : https://chromium.googlesource.com/chromiumos/platform/vpd. Il s'agit du fichier vpd.bin qu'on peut éditer avec l'application BVI : https://bvi.sourceforge.net/. Voir cette page pour avoir des infos : https://github.com/MrChromebox/scripts/issues/133

D- Flashage

Il ne faut pas oublier de débrancher la pile et il faudra dévisser le ventilateur pour pouvoir accéder à la puce :


Une fois la rom vérifiée, la ligne de commande pour flasher est celle-ci :
sudo flashrom -p ch341a_spi -w coreboot_edk2-panther-mrchromebox_20240416.rom

Voici les résultats dans le terminal quand tout se passe bien (compter quelques minutes) :

flashrom v1.2 on Linux 5.15.0-102-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

On remonte, sans oublier de rebrancher la pile !
Au redémarrage, nous verrons désormais un lièvre blanc sur fond noir qui correspond au nouveau BIOS fourni par MrChromebox (encore un grand merci à lui pour le partage de son boulot !). Nous pouvons désormais installer un autre OS que ChromeOS !


Finalement cette méthode est assez facile (quand on a le matériel) et plus rapide que celle "traditionnelle" passant par le mode développeur !
Maintenant, on peut y installer Home Assistant en suivant le tutoriel (méthode 1 à partir d'une clé USB "Live CD" avec Ubuntu) : https://www.home-assistant.io/installation/generic-x86-64.
Ci-dessous, je relate la procédure si on a un modèle identique mais qui n'est pas une version d'entreprise "enrollé" et qui donc permet d'avoir accès au mode développeur.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Cette partie concerne les Chromebox "normales" permettant l'accès au mode développeur. Je ne l'ai pas testé/pratiqué mais elle devrait marcher.

V- Passage de la Chromebox en mode "Développeur" :

Source : https://ubuntu.com/tutorials/install-ubuntu-on-chromebook#2-enabling-developer-mode

Tout comme les ordiphones sous Android (on voit bien la patte de Google) que l'on veut rooter ou mettre sous LineageOS, il est nécessaire de passer le Chromebook en mode développeur.
Pour cela, il faut insérer un trombone (ou une aiguille) dans le trou et maintenir appuyé sur le bouton de réinitialisation puis appuyer en même temps sur le bouton de mise sous tension. Une fenêtre apparaît avec un message en hollandais (langue par défaut de mon ordinateur), qu'on peut afficher en français en appuyant sur la touche "flèche gauche". On peut relâcher l'appui avec le trombone.
Presser CTRL+D pour entrer en mode développeur.
Sur l'écran suivant, comme demandé, ré-insérer le trombone pour appuyer un coup bref sur le bouton de ré-initialisation.
-> L'ordinateur est en mode "non vérification" de l'image : il s'agit du mode Développeur. Attention, ce mode saute dès que l'ordinateur redémarre sur le système pré-installé dans le boitier. Si ça arrive (ce qui est quasi certain quand on commence ce genre de manip...), il faudra recommencer les manip ci-dessus.

Presser CTRL+D lorsqu'on arrive sur l'écran de démarrage du mode développeur.

ATTENTION : Il faudra toujours démarrer de cette façon et NE PAS APPUYER sur la touche ESPACE au risque de tout ré-effacer.
Au premier démarrage, le système efface toutes les données utilisateur, ce qui prend quelques minutes puis le système se ré-installe complètement.
Avec cette manipulation, on voit sur les écrans quelle est l'image de restauration à récupérer.
On peut éteindre l'ordinateur.

 

VI- Création de la clé USB Recovery:

Nous allons ré-installer ChromeOS à l'aide d'une clé USB (apparemment il n'aime pas mes clés Sandisk...) ou carte SD de récupération (qui sera reformatée) contenant l'image ChromeOs correspondant à la Chromebox. Le modèle est indiqué en bas de l'écran de démarrage : PANTHER F5M-D4A-A2T

Sous Linux, il y a une manip permettant la création indiquée sur cette page : https://support.google.com/chromebook/answer/1080595?sjid=10202606041532178271-EU#traditional&zippy=%2Cuse-a-linux-computer :

Sur un ordinateur sous GNU/Linux, il faut télécharger l'outil de restauration Recovery Tool.
Il faut changer les droits d'exécution du script avec la commande :  sudo chmod 755 linux_recovery.sh
Lancer le script avec les droits root avec la commande :  sudo bash linux_recovery.sh
Suivre les instructions à l'écran pour créer sa clé USB (ou carte SD) de restauration.
L'image correspondante au modèle de "mon" ordinateur Chromebook est la 379 (on peut la trouver en tapant les premières lettres qui sont sur le code en bas de l'écran indiquant qu'il faut restaurer ; dans mon cas ça commence par les lettres "PANTHER").

Remarque : Si on possède une image au format .BIN, il est possible de graver l'image avec Balena Etcher. J'ai essayé une vieille image .BIN de 2014 qui n'a pas été reconnue contrairement à celle récupérée ci-dessus (dans le dossier /TMP).

 

VII- Ré-installation du système :

On redémarre à l'aide du trombone comme expliqué ci-dessus et lorsque la fenêtre de démarrage apparaît, on insère la clé USB ou carte SD de récupération créée précédemment. Cela lance la restauration du système (avec des message en néerlandais...).

 

VIII- Accéder au terminal et enlever la protection en écriture du firmware/BIOS :

Pour accéder au terminal, il faut presser en même temps les touches CTRL+ALT+T. Par contre, ce terminal ne permet pas d'utiliser la commande "sudo" contrairement au terminal VT-2 qui n'est accessible qu'en mode développeur. Pour cela, il faudra appuyer sur les touches CTRL+ALT+F2 (flèche vers la droite). Pour revenir dans le terminal normal, on pressera les touches CTRL+ALT+F1 (flèche vers la gauche).
Le terminal VT-2 ne permet pas le copier-coller et je n'ai pas su modifier la disposition du clavier qui est QWERTY, ce qui ne va pas faciliter la tâche...

Dans le terminal VT-2, à l'invite "localhost login", on saisira "chronos" qui n'a pas de mot de passe.
Attention : si on a activé le mode déboggage au tout début de l'installation après être passé en mode développeur, pour se connecter, il faudra utiliser le login "root" et le mot de passe de déboggage. Avec l'utilisateur root, on pourra donner un mot de passe à l'utilisateur "chronos" avec la commande : chromeos-setdevpasswd

 

SOLUTION : Utilisation du script du site mrchromebox.tech pour déverrouiller le firmware

Ce script est appelé "Firmware Utility Script".

Mais une énième recherche sur Internet me conduit à cette page :https://needstonote.com/2021/10/installing-linux-mint-20-2-cinnamon-on-acer-chromebook-14-cb3-431-edgar/ qui renvoie vers celle-ci https://mrchromebox.tech/#fwscript qui propose un script à télécharger pour modifier le firmware.
ATTENTION, il faudra bien suivre les instructions de mrchromebox même s'il y a une légère variante !!!
Éclaircissements de Matt du site mrchromebox.tech concernant ma variante : la commande "cd;" nous place directement dans le dossier /home/chronos/user qui est ré-initialisé à chaque redémarrage, ce qui fait qu'il faut à chaque fois télécharger son utilitaire. Du coup, ma variante a l'avantage d'éviter ce retéléchargement.
Autre éclaircissement : on peut remplacer /home/chronos/user/Downloads par ~/Downloads sachant que dans le terminal VT-2, le caractère ~ s'obtient avec la touche "petit 2" au-dessous d'Échap.

Pour télécharger le script (il faut donc une connexion Internet), il faut se connecter dans le terminal VT-2 avec le login "chronos" (PAS en tant que "root" !!!) et taper les commandes ci-dessous (attention sur la ligne de commande donnée sur le site ne fonctionne pas car "cd;" renvoie sur le dossier /home/chronos/user dans lequel on ne peut pas enregistrer le script de façon pérenne d'où le fait de se déplacer dans le sous-dossier Downloads) :

cd /home/chronos/user/Downloads

curl -LO mrchromebox.tech/firmware-util.sh

sudo bash firmware-util.sh

Le script se lance une 1ère fois et là, il faudra indiquer qu'on souhaite enlever la protection en écriture, ce qui fera redémarrer l'ordinateur.

Après le redémarrage, on se replace dans le terminal VT-2 et on relance le script firmware-util.sh qui se trouve dans le dossier /home/chronos/user/Downloads pour avoir un menu permettant d'agir sur le firmware. On peut le relancer directement avec cette commande : sudo bash /home/chronos/user/Downloads/firmware-util.sh. On choisit l'option 1 "Install/Update RW_LEGACY Firmware" et si tout se passe bien on obtient un message vert indiquant la réussite puis on appuie sur ENTRÉE et on redémarre.

Sur l'écran de démarrage en mode développeur, on appuie sur les touches CTRL+L et là on pourra avoir accès au BIOS et au démarrage sur la clé USB comme sur n'importe quel ordinateur classique! On appuie sur la touche Échap et on va dans "Boot Menu" pour démarrer sur la clé USB (fonctionne très bien avec un clé sous Ventoy). Linux Mint 21.3 Mate se lance en live sans problème apparent. On va pouvoir installer un nouveau système d'exploitation.

 

IX- Exemple d'installation

Attention : vu la taille des composants, pour installer Primtux, il vaudrait mieux augmenter la mémoire vive ainsi que la taille du disque SSD !!!

Toujours à l'aide de l'utilitaire de mrchromebox.tech (il semblerait que l'utilitaire ne fonctionne que si on est connecté⋅e à Internet...), il est possible d'installer un système d'exploitation à la place de Chrome OS via le menu n°2 permettant d'installer l'UEFI. Comme il s'agit d'une opération particulièrement risquée pour l'ordi (on supprime complètement Chrome OS), il faudra valider plein de mises en garde et à un moment l'utilitaire proposera même de se créer une clé USB de secours contenant la rom qui permettra de ré-installer ChromeOS en cas de problème, chose que je ne peux que recommander. J'ai sauvegardé sur une simple clé USB de données formatée en FAT32. Ce fichier de sauvegarde est à garder jusqu'à ce qu'on ait réussi l'installation de Primtux (ou une autre distribution) car une fois qu'on aura réussi, on pourra ré-installer d'autres distributions par la suite comme sur un ordinateur classique (hors de question de revenir sur Chrome OS).

Une fois la sauvegarde faite, l'utilitaire va télécharger et installer un nouveau firmware (coreboot). Si tout se passe bien on a un message vert, on appuie sur la touche ENTRÉE et on redémarre en tapant R (ou r). Le premier démarrage est assez long et ensuite on a un bel écran de démarrage qui apparait avec un lièvre blanc qui court sur un fond noir. On n'a qu'une fraction de seconde pour appuyer sur la touche Échap afin d'atteindre le Boot Menu pour démarrer sur la clé contenant Primtux8 (beta1 au moment de l'écriture de cet article). Ensuite on procède à l'installation classique de Primtux en supprimant toutes les anciennes partitions qui sont sur la mémoire eMMC (ce n'est pas un disque dur "classique").

Résultat : Installation réussie !!! En plus avec Primtux8 (basée sur Linux Mint 21.3), tout fonctionne notamment le son, le wifi et le tactile !
Petit bémol car j'ai essayé de le faire fonctionner en rebranchant la batterie défectueuse mais sans succès : même symptomes qu'au tout début. Il va falloir tester avec une batterie neuve mais il marchera quoi qu'il en soit en filaire, batterie débranchée.

Épilogue : J'ai installé la nouvelle batterie commandée quelques jours plus tôt et ai branché le portable sur secteur. Là, le voyant de charge qui restait désespérément orange fixe avec l'ancienne batterie, s'est mis en clignoter en blanc ce qui était assez bon signe.

 

CONCLUSION :

Franchement ça n'a pas été une sinécure d'installer un système d'exploitation autre que ChromeOS sur ce Chromebook (mais je suppose que c'est la même chose pour tous les autres avec des variantes selon leur âge) car il a fallu faire pas mal de recherches et d'essais infructueux avant d'arriver à mes fins. Et ceci n'aurait pas pu être réalisé sans les outils fournis sur le site https://mrchromebox.tech/#fwscript. Un grand merci à Matt qui a partagé son travail  (et qui a répondu à mon courriel de remerciement en m'apportant des éclaircissements en lisant ce tutoriel) !!!

Ça repose quand même la question de ce verrouillage dès la conception par les constructeurs et les fournisseurs d'OS propriétaires comme Google, Apple et Windows qui empêche les utilisateur⋅rices de pouvoir disposer "facilement" de leur machine comme iels le veulent et en particulier de lutter contre leur obsolescence programmée en leur permettant des "réparations". Ce qui est d'autant plus exaspérant, c'est de constater que Chrome OS est basé sur GNU/Linux en plus.
On retrouve exatement la même problématique sur cette autre page pour l'installation de Primtux sur des HP Probook x360 verrouillés sous Windows fournis par la région Occitanie : Installer un système GNU sur loRdi HP Probook x360 11 G1 EE.

Le législateur devrait interdire la vente ou au moins l'achat via la commande publique de matériels de ce type ( qui apparaissent au départ comme intéressants financièrement) pour agir efficacement contre le gaspillage qui en résulte.
Une autre possibilité serait que les consommateur⋅rices n'achètent pas ce type de matériel et pour cela, il faudrait qu'iels soient clairement informé⋅es des alternatives existantes et qui sont soucieuses de leurs libertés mais aussi par effet ricochet de la préservation de nos ressources.