Raspberry Pi et l’histoire de la corruption de la carte SD

Les contes de corruption de la carte SD Raspberry Pi sont disponibles en ligne par poignées et sont définitivement une constante dans les communautés adjacentes à Pi. Il est évident que certains types de problèmes ont tendance à survenir lorsqu’un Raspberry Pi rencontre une carte SD – ce qui semble assez ironique, car une carte SD est le moyen officiel et recommandé de démarrer un Pi. Qu’est-ce qui se passe avec tout ça ?

Je peux commencer par une leçon d’histoire. À l’époque du lancement de Raspberry Pi en 2012 – il y a maintenant 10 ans – il y avait des problèmes de pilote de contrôleur de carte SD, ce qui est logique compte tenu de la grande variété de cartes SD disponibles. Ils ont été corrigés de manière vérifiable un par un à un moment donné, au fur et à mesure du débogage, leur impact a diminué et les bogues avec des cartes individuelles ont été lissés. C’est ainsi que le mème « Corruption de la carte SD Pi » est né ; cependant, si les problèmes devaient s’arrêter là, le mème le serait aussi. Pourtant, les histoires de cartes SD cassées nous tourmentent à ce jour – bien moins graves qu’elles ne l’étaient au début, mais suffisamment prononcées pour que vous voyiez les gens les rencontrer de temps en temps.

Au fil des ans, une base dévouée de détracteurs de la carte SD Pi s’est développée. Leur demande était simple – Raspberry Pi doit pouvoir démarrer à partir d’autre chose, en grande partie pour des raisons de corruption, mais aussi indéniablement à cause des limitations de vitesse et de capacité/coût des cartes SD. Grâce à leurs demandes et à leur travail, nous avons vu une série de projets passer d’efforts non officiels et de hacks à des capacités Raspberry Pi officiellement prises en charge – le démarrage USB étant initialement plus une solution de contournement, mais maintenant quelque chose que vous pouvez activer prêt à l’emploi, équipé d’un SSD Les boîtiers Pi deviennent de plus en plus une norme, et maintenant, le démarrage NVMe apparaît à l’horizon. Toutes les quelques années, nous obtenons une nouvelle façon de démarrer un Pi.

Citation disant : Devriez-vous personnellement abandonner les cartes SD ?  La réponse est plus susceptible d'être "non" que "Oui".Je tiens à préciser que le démarrage à partir d’un SSD ou d’une clé USB est une très bonne option, et lorsque vous voulez que votre Pi soit rapide, réactif et fiable, vous pouvez absolument l’essayer. La fente pour carte SD est restée après tout ce temps, n’est pas près de disparaître, et toutes les cartes SD de nos tiroirs non plus. Devriez-vous personnellement abandonner les cartes SD ? La réponse est plus susceptible d’être « non » que « oui ».

Tout le monde ne rencontre pas des problèmes de carte SD, les images de la carte SD étant la première chose disponible chaque fois que vous voyez un nouveau projet sympa, et un Pi équipé de SD reste un élément de base d’un engin de fabricant moyen. Les partisans de l’USB et du démarrage réseau citent également une latence améliorée pour l’utilisation de Pi-as-desktop, une gestion Pi plus facile en cas de démarrage réseau, et ce sont à eux seuls de bonnes raisons – mais certainement pas pour tous les projets. Les cartes SD restent l’option la plus simple et la moins chère pour démarrer un Pi.

Vous ne pouvez pas toujours éviter le démarrage de la carte SD non plus. Démarrer un Pi Zero à partir d’une clé USB nécessite que vous gaspilliez votre seul port USB ou que vous ajoutiez un concentrateur USB complet dans le mélange, ce qui complique davantage la configuration, en ajoutant des câbles embêtants et des points de défaillance. En ce qui concerne les appareils portables et alimentés par batterie construits avec un Pi, une carte SD est difficile à battre en termes de consommation d’énergie – les clés USB ne sont pas connues pour être optimisées en termes de faible consommation d’énergie, et les concentrateurs USB non plus, qui vous remarquerez si vous vérifiez à quel point un circuit intégré de concentrateur USB peut chauffer après avoir transmis une quantité relativement faible de paquets USB.

En fin de compte, même les passionnés de démarrage SSD externes les plus dévoués pourraient toujours vouloir ajouter une carte SD pour le stockage supplémentaire indépendant qu’elle apporte. La fente est là, et si vous avez une carte à revendre, pourquoi ne pas l’utiliser ? À moins que vous ne rencontriez des problèmes, c’est-à-dire – alors passons en revue ceux-ci.

Tout d’abord, les cartes fausses et bon marché gâchent le plaisir de tout le monde. Les clones de cartes MicroSD sont omniprésents et difficiles à distinguer des cartes fabriquées légitimement, mais certainement pas soumis aux mêmes normes de qualité. Les cartes bon marché partagent la partie « faible qualité », mais au moins, vous pouvez reconnaître une carte sans nom en la regardant. Ni les fausses cartes ni les cartes bon marché ne conviennent généralement à un système d’exploitation complet. Non seulement ils rendront votre Pi plus lent qu’il ne peut fonctionner, mais ils entraîneront également des échecs mystérieux et, plus tard, une corruption assez explicite. Obtenir des cartes décentes dans des endroits réputés fait partie d’une recette pour un voyage d’exploration calme de Pi, et de nos jours, cela ne casse même plus vraiment la banque, étant donné la quantité importante de stockage que vous obtenez pour votre argent.

Même les cartes authentiques peuvent causer des problèmes. Notre hackerspace a acheté un lot de cartes Samsung authentiques pour nos Pis en 2014, et chacune d’entre elles est finalement décédée avec les mêmes symptômes – puisque chaque Pi a utilisé une carte du même lot, cela s’est terminé par une infrastructure hackerspace en voie de disparition. -par appareil, frustrant les membres qui en dépendent. Après tout, une carte SD est un appareil complexe hautement intégré, le contrôleur étant un petit processeur spécialement conçu à cet effet – il y a de la place pour les erreurs de micrologiciel, les défauts de fabrication et juste le bon vieux matériel aléatoire. Soi-disant, nous avons dépassé cela, mais méfiez-vous.

Comme la majorité des périphériques de stockage de nos jours, une carte SD contient deux entités distinctes : le contrôleur et la mémoire flash. Le contrôleur a un certain travail de gestion du flash à faire chaque fois qu’il reçoit des données à écrire, mais le faire sur place prendrait du temps, retarderait les opérations d’écriture ultérieures et pourrait être un gaspillage. Par la suite, le contrôleur de carte SD doit disposer d’un petit morceau de mémoire cache et conserver une liste des opérations qui doivent encore être effectuées mais qui ne l’ont pas été.

C’est la raison d’être de « l’arrêt de votre Pi en toute sécurité », c’est-à-dire « l’exécution poweroff avant de débrancher l’alimentation « point de discussion – si vous ne donnez pas un peu de temps à votre carte SD et peut-être même une notification préalable automatisée du système d’exploitation, il peut y avoir des opérations d’écriture en attente qui ne seront jamais terminées, ce qui entraînera un stockage brouillé la prochaine fois mettre la carte sous tension. Certains ingénieurs chevronnés affirment que de tels arrêts sont finalement garantis pour casser de manière irréversible une carte SD moyenne à long terme, en raison du fonctionnement interne des cartes, et je ne discuterais pas avec eux à ce sujet.

Citation disant: Bien que des mises hors tension sûres soient souhaitées, être laxiste n'est pas la fin du mondePouvez-vous compter sur une carte SD même si des arrêts dangereux se produisent de temps en temps ? Mon expérience dit « oui ». L’un de mes premiers rôles « d’ingénierie » consistait à tester un appareil commercial basé sur Pi pour exactement ce problème, où j’ai construit une configuration de test éteignant un Pi pendant les écritures sur carte SD et l’ai exécuté pendant quelques jours, avec notre logiciel toujours passer tous les tests. À ma connaissance, nous avons expédié cette combinaison matérielle avec succès à long terme. Avec ZeroPhone, une gestion de l’alimentation non conventionnelle sans équivalent logiciel pour compenser ses lacunes a entraîné des baisses de tension régulières (parfois même cycliques) tous les quelques jours pendant quelques années, chaque fois que j’oubliais de le recharger. Les cartes SD que j’ai utilisées ont assez bien survécu à long terme et vivent à ce jour, à l’exception d’un incident sans incident. fsck de temps en temps.

Ma conclusion est que, bien que des mises hors tension sûres soient souhaitées, être laxiste n’est pas la fin du monde, et de nombreux amateurs qui ont retiré le câble d’alimentation de leur Pi négligemment confirmeront cette expérience. Cependant, si votre logiciel écrit une quantité considérable sur la même carte SD à partir de laquelle vous exécutez votre système d’exploitation, vous aimeriez peut-être le décharger ailleurs.

Il y a un suspect inhabituel à mentionner, et c’est la qualité de l’alimentation. Parfois mentionnée à l’improviste, c’est une raison sous-estimée, et j’ai eu une quête de débogage pi hackerspace en proie à la corruption pendant des années où cela s’est avéré être le coupable. Le Pi en question était le seul d’un réseau Pi entier à avoir ces problèmes, et était également alimenté par un SMPS LM2576 soudé à la main sans plan de masse en vue – évidemment la seule solution viable au moment de la construction, qui y est resté depuis des lustres à cause du facteur humain « hé, ça marche ».

Bien que le DC-DC n’alimente pas directement la carte SD – il y a un régulateur de 5 V à 3,3 V à bord pour cela – chaque partie de cette configuration, du Pi au système de fichiers, a été remplacée. Les Pis peuvent être gourmands en courant, surtout s’ils alimentent d’autres périphériques USB. Les câbles fins et les fournitures sous-spécifiées peuvent entraîner des baisses de tension, et les mauvaises cartes SD en paient le prix.

Remplacer le DC-DC par un module bleu « LM2596 », renforcé par des condensateurs supplémentaires et des fils plus épais, a été la solution qui a fait disparaître les problèmes de corruption. Il pourrait y avoir une leçon sur la propagation du bruit quelque part là-dedans. Pour vous, la conclusion que je recommande, sur la base de cela et d’autres expériences similaires mais moins déroutantes, est – obéissez à la loi d’Ohm dans l’esprit et assurez-vous que le chemin pour que les jus s’écoulent vers votre Pi ne soit pas resserré par un terriblement mince et long Câble MicroUSB ou Type-C, ou une configuration DC-DC qui s’avère inférieure à la moyenne.

Citation disant: Envisagez OverlayFS - une petite entrée de menu dans raspi-configDes astuces astucieuses sont apparues au fil des ans qui, si elles conviennent à votre cas d’utilisation, vous offriront une protection anti-corruption supplémentaire et vous procureront sans aucun doute une certaine tranquillité d’esprit. L’une de ces choses est l’option OverlayFS dans Raspbian, une petite entrée de menu dans raspi-config qui a été ajouté en 2019. Si vous l’activez et redémarrez, votre Pi se comportera de la même manière, mais aucune des modifications que vous apporterez ne sera réellement écrite sur votre carte SD – ce qui signifie également qu’elles ne seront pas enregistrées et disparaîtront après votre redémarrage. Si vous souhaitez modifier des fichiers sur votre carte SD, vous devrez désactiver OverlayFS, redémarrer, apporter les modifications, réactiver OverlayFS et redémarrer à nouveau. Il y a peut-être un moyen de contourner cela, mais c’est à vous de le découvrir.

Une option similaire est également disponible avec sdtool, qui est un petit logiciel que vous pouvez exécuter sur votre Pi et qui dirige à la place votre carte MicroSD pour passer en mode lecture seule – dont toutes les cartes SD, grandes et petites, sont capables. Si vous n’exécutez pas le dernier Raspbian, ou si vous souhaitez changer le statut de lecture seule de votre carte sans redémarrage, cette approche pourrait être fondamentalement faite pour vous.

Une autre chose que vous voudrez peut-être essayer sont les puces eMMC. Conçus pour être adaptés à un système d’exploitation, ils sont également compatibles avec l’interface de la carte SD sur le Raspberry Pi, et vous en trouverez des compatibles Pi à vendre en utilisant le moteur de recherche de votre choix. Récemment, quelqu’un qui a juré qu’il détenait l’un de ces mythiques modules de calcul Pi 4 (apparemment, pendant quelques secondes) m’a dit qu’il utilisait un stockage eMMC intégré. Non pas que les avertissements de rupture de stock me donnent l’espoir de pouvoir vraiment vérifier, mais si c’est effectivement le cas, à quel point cela pourrait-il être grave ?

La quantité d’histoires sur la corruption des cartes Raspberry Pi est décourageante, mais c’est une goutte d’eau dans un seau quand on considère que quarante millions d’entre elles ont été vendues. C’est l’essentiel de ce qui se passe dans un cas typique de corruption de carte SD. Si jamais vous avez besoin de faire face à des problèmes de corruption SD embêtants, vous savez maintenant ce qu’il faut rechercher et avez probablement appris de nouvelles variables que vous pouvez modifier. Procurez-vous une bonne carte, une bonne alimentation et ne laissez pas les expériences négatives des autres, réelles ou supposées, vous abattre !