Partitions de carte SD auto-réparatrices

9

De nombreuses cartes SD sont plutôt fragiles. J'ai eu un pi pendant environ 2 ans maintenant et les principaux échecs étaient dus à la carte SD corrompue pour une raison ou une autre.

Je me demande s'il y a un développement pour "renforcer" la carte SD au démarrage. Je me souviens d'avoir quelque chose comme ça dans un projet précédent, où uboot choisirait entre 12 tarballs si l'un d'eux avait une somme de contrôle crc32 invalide. Il recopierait alors celui validé à tous les autres qui ont été modifiés après un démarrage réussi.

Je voudrais utiliser mon pi dans une configuration "permanente" et ce serait bien si cela pouvait fonctionner sans jamais reflasher la carte.

Y a-t-il déjà un développement de cette manière? Bien que l'idée générale soit plutôt banale, obtenir le redémarrage pour fonctionner correctement est généralement un processus assez douloureux que j'aimerais éviter.

ÉDITER :

Après avoir creusé plus profondément, il semble que ce que j'envisageais pourrait ne pas être possible, ou possible d'une manière qui donnerait un avantage significatif. Ici, le processus de démarrage est décrit . Le code sur lequel je travaillais fonctionnait au premier niveau de démarrage, car ma carte avait un flash programmable pour cela. Avec le pi, il est stocké dans une ROM d'usine. Tout le reste provient de la carte SD, donc si la carte est endommagée, le chargeur de démarrage du deuxième étage a autant de chances d'être détruit que n'importe quelle autre partition.

Il est peut-être possible d'abuser du chargeur de démarrage ROM à cette fin, mais il est difficile de dire comment. Le code semble également propriétaire.

Modifier 2:

L'explication du processus de démarrage réel est en conflit selon les sources. Je vais essayer d'en lire plus

Eric
la source

Réponses:

9

Si vous avez des problèmes avec les cartes SD, vous devriez essayer (dans l'ordre):

  1. Utilisez une autre alimentation (plus grande).
  2. Connectez un concentrateur alimenté entre le Raspberry et tout périphérique USB que vous pourriez avoir.
  3. Utilisez des cartes SD de marques bien connues.
  4. Utilisez une carte SD plus grande (pour un nivellement d'usure distribué).
  5. Réglez vos rootfs en lecture seule et évitez ainsi d'écrire sur la carte SD.
  6. Utilisez une distribution "en direct" qui fonctionne entièrement à partir de la RAM. Mon projet Nard SDK en fait partie (mais il y en a aussi d'autres). Avec Nard, la carte SD n'est utilisée qu'au démarrage. Une fois que le système de fichiers est opérationnel et n'est plus utilisé, vous pouvez même brancher à chaud la carte SD ...

Voir: http://www.arbetsmyra.dyndns.org/nard/

Ronny Nilsson
la source
J'ajouterais que vous pouvez également exécuter le système d'exploitation à partir d'un disque dur connecté par USB - comme votre article n ° 6.
Phil B.
Merci pour les suggestions. Cependant, la carte SD est sujette à la corruption lorsque l'alimentation est coupée. Peut-être que mettre la carte en lecture seule serait utile. Je conviens que la prévention de la corruption en premier lieu est une meilleure solution, mais elle est difficile à prévenir complètement.
Eric
Si la corruption en cas de perte de pouvoir est le problème, une distribution en direct est le remède.
Ronny Nilsson
1

Vous ne devriez pas être confronté à une corruption dramatique fréquente, même si le pouvoir est parfois perdu.

Si un système de fichiers a une valeur non nulle dans la sixième colonne de /etc/fstab, il sera vérifié pour voir s'il est nécessaire de le rechercher des erreurs avant de le monter. Les distributions pi classiques (devraient) avoir cet ensemble pour /dev/mmcblk0p1et la partition du système de fichiers racine (sur Raspbian, mmcblk0p2). Ce que cela signifie pour les systèmes de fichiers ext4 (tels que le fs racine), c'est que cela se produit indépendamment de chaque montage N; pour la valeur de N, voir "Nombre maximal de montages" dans la sortie de tune2fs -l /dev/[partition]; vous pouvez ajuster cette valeur à l'aide de tune2fs -c(voir man tune2fs).

Il sera également analysé si le système de fichiers n'a pas été correctement démonté. Cela se fait avec e2fsck. Dans la plupart des cas, tout ira bien. Il y a cependant la possibilité que vous perdiez des données à cause de la corruption; la preuve de cela sera laissée /lost+found. Si possible (et c'est généralement le cas), le système de fichiers sera toujours laissé dans un état utilisable et non corrompu par la suite. La question est alors de savoir si un composant critique a été perdu dans le correctif - mais encore une fois, ce serait très inhabituel.

La raison pour laquelle il est peu probable que cela affecte quelque chose de critique est que la plupart de ces éléments, bien que techniquement non en lecture seule, ne sont pas modifiés dans le cours normal des choses. Le système a des tonnes de choses à partir de la mémoire /binet /libchargées en mémoire à un moment donné, mais il n'y a aucune intention de modifier leur source sur le disque, donc aucune chance que le disque ne se désynchronise avec ces changements inexistants.

Bien que je ne sache pas quelles sont les règles pour la première partition vfat contenant le noyau et le firmware (car elle n'est pas formatée ext), je suppose qu'une vérification similaire est possible, et en tout cas, la logique du dernier paragraphe s'applique - ce truc ne change que pour les mises à jour du système. En fait, si vous voulez être vraiment paranoïaque, vous pouvez le faire monter en lecture seule sauf pour les mises à jour (ou pas du tout, car ce n'est pas nécessaire une fois le démarrage normal terminé).

Après tout cela, vous ne devriez pratiquement jamais subir de corruption grave, sauf si vous lancez fréquemment les dés en coupant le pouvoir (et même alors, cela devrait être rare). Si vous rencontrez souvent de la corruption, il y a quelque chose de très grave. Il y a eu au moins quelques personnes ici qui ont signalé des problèmes de corruption même lors de l'utilisation d'un système de fichiers en lecture seule , ce qui est un peu déroutant. Cela implique que la corruption est causée arbitrairement par du matériel défectueux ou un bogue logiciel.

Et en effet, je pense qu'il y avait un tel bug qui aurait pu affecter arbitrairement les pis entre 2013 et mi-fin 2014 (en supposant que le système d'exploitation est tenu à jour). J'ai un pressentiment que nous avons eu moins "Ma carte SD est corrompue!" postes au cours des 4-6 derniers mois (mais Nb. Je n'ai pas fait de véritable comptabilité pour le confirmer).

Boucles d'or
la source
1

Vous souhaiterez peut-être utiliser un lecteur flash USB / disque dur USB.

Ils sont généralement plus fiables que les cartes SD

Voici un fil qui décrit comment le faire

nkizz
la source
0

L'auto-réparation est un problème avec toute distribution Linux où fsck est sur le système de fichiers le plus sujet à la corruption. C'est un problème que Raspbian partage avec à peu près toutes les distributions Linux - ces jours-ci, ils aiment tout mettre [y compris / boot dans le cas d'Ubuntu !! ??] sur une grande partition ext4.

Une partition racine en lecture seule fait des merveilles pour éviter le problème de destruction de démarrage où Linux rencontre des problèmes de système de fichiers avant d'avoir pu exécuter fsck.

Mais même une racine en lecture / écriture rarement mise à jour est un énorme pas en avant.

Raspbian fonctionne très bien sur une racine en lecture seule. La configuration prend un peu d'effort et, bien sûr, vous devez être prêt à "monter -o remonter, rw /" avant toute modification du système de fichiers racine.

David Sainty
la source