Une réinstallation pour mon boîtier « AFP » (l’échec de la semaine)

Cette semaine, j’ai cassé une carte microSD et passé deux soirées à tenter de faire marcher un truc qui marchait.

Le début de mon histoire (peut-être sans intérêt, désolé), c’est un sujet de la semaine dernière (que je prépare en général le week-end). Pour résumer cette partie, j’utilise depuis des années un Raspberry Pi avec le logiciel A2SERVER pour partager des données entre les Mac modernes et les Mac qui le sont moins. Le partage AFP a l’avantage de fonctionner sur tous les Mac avec de l’Ethernet et même sur ceux qui n’en ont pas, en utilisant un LocalTalk vers EtherTalk.

Oups.


Avant de casser, elle chauffait et affichait 8 ko de capacité.

Et ce jour là, impossible d’y accéder depuis mon Mac. Après quelques essais, je me rends compte que j’ai modifié récemment le réseau chez moi pour simplifier (un peu) et que j’ai déplacé le Raspberry Pi dans une autre pièce. Le problème, c’est que la liaison passe par un switch Netgear qui a une feature désagréable : il bloque l’AppleTalk. Du coup, après avoir tiré un long câble pour régler le souci, j’ai noté que je devais trouver une solution. L’idée de base était simple : mettre la carte dans un Raspberry Pi Zero alimenté par un adaptateur Ethernet (c’est pratique). Mais comme un idiot, j’ai été un peu vite pour tirer la carte microSD. Je l’ai probablement pliée la première fois, et elle a cassé dans mes mains (c’est littéral).

Les joies de la réinstallation

J’ai donc sorti une carte microSD et j’ai installé la dernière version de l’OS des Raspberry Pi, c’est le plus simple. Après quelques soucis bizarres liés à l’accès SSH, je me suis résolu à sortir un câble mini HDMI (le Raspberry Pi Zero a le défaut de passer par cette prise reloue) et un adaptateur Micro USB. Parce que le Zero est vite embêtant pour ça aussi : si j’utilise mon adaptateur Ethernet, je ne peux pas brancher de clavier. Ma première idée était de réinstaller A2SERVER, mais le site d’origine n’existe plus (il y a une archive) et le readme de la version en place sur GitHub n’est pas très explicite. Je vous passe les détails, mais A2SERVER ne fonctionne pas avec Debian 10 (Buster) pour pleins de raisons techniques. En cherchant un peu, je suis tombé sur un post de forum qui explique que ça fonctionne normalement sur Debian 9 (Stretch). La solution de base consiste à récupérer l’archive (git clone https://github.com/RasppleII/a2server) puis à lancer le script (./install.sh).

Quelques recherches plus tard, pour trouver comme télécharger Stretch (astuce : les images Raspbian sont ici, les Raspbian Lite là), j’ai installé la dernière version officielle (il faut l’image du 9 avril 2019, soit 2019-04-09). J’accélère un peu, parce que préparer la carte, mettre à jour et installer A2SERVER, ça prend facilement 1 à 2 heures avec un Raspberry Pi Zero.

Au premier abord, ça semblait marcher (le Netgear S8000 ne bloque pas l’AppleTalk) mais… impossible de redémarrer. En regardant un peu, je vois une erreur, vue ici, mais pas de solutions. En gros, l’OS démarre dans un mode d’urgence sans accès au réseau, et comme dit plus haut, brancher un clavier est vite bloquant sur un Pi Zero.

On démarre en mode Emergency (en bas)


A cause d’une erreur liée à un système de fichiers (au milieu)

Je suis donc passé (première idée) sur une plus vieille version de Raspbian, la Jessie (Debian 8). Ca implique de remonter plus loin (5 juillet 2017, 2017-07-05, au même endroit que les liens ci-dessus), de recommencer… et d’avoir la même erreur. Petit aparté, comme Jessie est une vieille version, il faut commencer par modifier une ligne pour pouvoir mettre à jour. Il faut modifier /etc/apt/sources.list (sudo nano /etc/apt/sources.list) et remplacer mirrordirector.raspbian.org par legacy.raspbian.org.

Du coup, je suis quand même allé voir exactement l’erreur : il y a un souci avec ciopfs. Là encore, je résume : visiblement le script ne télécharge pas correctement l’utilitaire (nécessaire) mais il ne bloque pas. Il y a visiblement un problème avec la version en ligne au niveau du certificat, et le script vérifie sa présence (avec une option de repli) mais pas si le certificat est bon. J’ai bien essayé de le compiler moi-même (après avoir installé) mais sans trop de succès : au premier démarrage, même erreur. Comme je ne suis même pas certain à 100 % qu’il s’agit du problème, je ne détaille pas.

Une solution pas géniale

Du coup, j’en ai eu marre. Comme je sauvegarde de temps en temps les cartes de mes Raspberry Pi (pas très souvent,, ce qui n’est pas une bonne idée), j’ai récupéré une sauvegarde. J’ai dû trouver une carte microSD d’assez grande capacité, perdre encore du temps à préparer le tout (écrire 32 Go sur un microSD, ça ne va pas vite) et espérer. Heureusement, ça a fonctionné, avec une Debian 9 (Stretch) vaguement à jour. Ensuite, un petit sudo raspi-config a été nécessaire pour quelques réglages (étendre les partitions, changer le nom, etc.).

En l’état, j’ai donc un système qui marche et consomme peu (le Raspberry Pi Zero est compact et économe) mais sur un vieil OS. Comme la machine n’est pas accessible de l’extérieur, ce n’est normalement pas un souci, mais il y a quand même un problème de pérennité. En effet, l’OS ne démarre pas sur toutes les cartes récentes. En réalité, je pourrais me prendre la tête à installer Netatalk et tout le nécessaire sur une distribution récente, mais je n’ai pas envie de le faire. A2SERVER a l’avantage de tout préparer (quand ça marche), de la compilation de Netatalk à la configuration du partage SMB pour un accès depuis un appareil moderne. Avec un peu de chance, le script d’A2SERVER sera corrigé (je suis bien incapable de le faire), mais en attendant j’ai une solution qui marche. Après beaucoup trop de temps perdu.