Comment puis-je empêcher la carte SD de mon Pi d'être corrompue si souvent?

47

Je reçois une erreur d'entrée-sortie au démarrage, puis l'erreur suivante: (J'utilise la dernière version de Raspbian)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

Et je l'ai déjà vu auparavant, et on m'a expliqué que ma carte SD avait été corrompue car je ne m'étais pas éteinte correctement. Une semaine plus tard, je n'ai pas eu affaire à cette erreur, jusqu'à ce que le pouvoir scintille trois fois et maintenant, je ne peux plus redémarrer. Il semble que je re-prépare ma carte SD tous les jours !!! Je n'aime pas cela, sans oublier que j'aime les capacités de mon Pi. Mais ce "point d'arrêt" me rend fou! Est-ce que je peux empêcher cela ou renforcer quelque chose pour que cela ne se produise pas si le courant est coupé? Aucune suggestion? Merci!

PS Mon fichier zip n'était pas corrompu et mon service d'extraction est Win32DiskImager

utilisateur151324
la source
2
Votre carte est sur cette liste
Butters
Avez-vous déjà pensé à UPS?
Lenik
@lenik Voulez-vous dire que je devrais avoir quelque chose comme un protecteur de surtension?
user151324
Parce que vous éteignez la chose sans un arrêt adéquat?
Jippie
1
@coding_corgi plus probablement quelque chose avec une batterie à l'intérieur, qui fournit de l'énergie pendant 5 à 10 minutes après la coupure de courant, qui vous permet d'ignorer les courts coups d'alimentation et vous donne le temps d'éteindre (automatiquement?) votre ordinateur lorsque l'alimentation est coupée pendant une longue période temps. C'est ce qu'on appelle "Uninterruptable Power Supply" ou UPS pour faire court.
lenik

Réponses:

48

Je ne vais pas écrire sur la vérification de vos listes de matériel et de cartes SD compatibles, car vous avez probablement déjà vérifié toutes ces listes. Ce que je suis sur le point d’écrire est la solution permanente, qui permet d’étouffer le problème dans l’œuf et de le résoudre définitivement .

Si vous ne voulez pas que votre carte SD soit brisée lorsque vous actionnez l'interrupteur d'alimentation, vous devez l'utiliser en mode lecture seule. Si rien n’écrit sur votre carte SD, celle-ci ne sera pas endommagée quoi que vous fassiez.

Une solution évidente (mais qui ne fonctionnerait pas) consisterait à essayer de basculer le commutateur "lecture seule" sur le côté de la carte SD. Malheureusement, cela ne fonctionne pas car les schémas montrent que ce commutateur est acheminé nulle part et que sa position est généralement ignorée.

Une autre approche plus subtile (mais efficace) consisterait à modifier votre système /etc/fstabpour monter toutes vos partitions en lecture seule. L'inconvénient de cette approche est que vos journaux doivent être écrits ailleurs (clé USB, lecteur de RAM?) Et qu'en cas de lecteur de RAM, les journaux ne seront pas conservés lors du redémarrage. Pour faire ça:

  1. Copiez une image RPi sur votre carte SD en utilisant la méthode de votre choix.
  2. Démarrez à partir de SD et raspi-configdémarrera automatiquement. Ne "développez pas le système de fichiers", configurez simplement votre fuseau horaire et les paramètres internationaux.
  3. Exécuter sudo fdisk /dev/mmcblk0, appuyez sur 'p' pour imprimer la table de partition actuelle. Puis entrez les commandes suivantes:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. Modifier /etc/fstab. Cela devrait ressembler à ceci:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. Exécuter sudo partprobepour reconnaître la nouvelle partition.

  6. Formatez votre nouvelle partition avec sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Redémarrer.

Si, pour une raison quelconque, vous devez modifier votre système, vous pouvez remonter les partitions en lecture seule avec un accès en écriture:

sudo mount -o remount,rw /dev/mmcblk0p2
Lenik
la source
Attendez, je ne peux pas écrire sur ma carte SD si je le fais? Ou seulement au démarrage?
user151324
1
@coding_corgi Ceci devrait arrêter d'écrire entièrement sur la carte SD.
apnorton
pourquoi avez-vous besoin d'écrire sur votre carte SD? écriture sur SD + extinction = corruption FS, vous pouvez utiliser une clé USB ou créer une partition séparée sur la carte SD si vous avez besoin de sauvegarder des données. dans ce cas, au moins votre système sera opérationnel et vous pourrez ensuite vérifier si vos données sont corrompues.
lenik
@anorton cela arrête l'accès en écriture aux deux premières partitions de la carte SD, mais personne ne vous dit que vous ne pouvez pas créer une autre partition, ni utiliser un support différent pour enregistrer les données. Par exemple, l'écriture de données RasPi en lecture seule sur le réseau peut constituer une solution très fiable.
lenik
1
J'écris sur ma carte SD des données vidéo de Raspi Cam et il est mort tellement de fois! Pas une seule fois, je n’ai eu de problèmes de démarrage, de débranchement de fil ou de panne du système. La lecture seule est bonne pour la production lorsque vous branchez et jouez. Ce problème ne devrait pas se produire pendant le développement de quelque manière que ce soit - je pense que même en lecture seule, ses données seront gâchées parce que quelque chose se passe à un niveau supérieur à celui que le noyau peut gérer.
Piotr Kula
4

En fonction de l'utilisation que vous faites de votre RPi, vous pouvez être initié à IPE, qui est une "saveur de Raspbian à l'épreuve des pannes d'électricité".

Je prévois de l'utiliser pour démarrer mon RPi. Si j'ai besoin de données écrites, j'utiliserai un lecteur USB que je monterai en lecture seule (je préfère que mon SD soit sécurisé et corrompre un lecteur USB plutôt que de le réparer)

Voir la page d'accueil IPE

Comme indiqué, "Utilisez également“ ipe-rw ”et“ ipe-ro ”pour faire basculer le système de fichiers racine en mode inscriptible ou en lecture seule."

lauhub
la source
2

J'ai surmonté ce problème en utilisant un lecteur flash USB pour mes partitions principales.

  1. Restaurer l'image raspbian sur un lecteur USB

  2. Formater une carte SD en gras

  3. Copier le contenu de la partition fat du lecteur USB sur la carte SD

  4. Modifier le fichier config.txt sur la carte SD pour démarrer à partir de / dev / sda

Essentiellement, le rpi démarrera toujours à partir de la carte SD, mais utilisera le lecteur USB pour le système d'exploitation et les opérations de lecture / écriture.

Ace
la source
2

J'utilise l' UPS Pico, un onduleur spécialement conçu pour le Raspberry Pi et je n'ai jamais eu de tels problèmes.

Alexandre
la source
1

veuillez vous assurer que votre RPi fonctionne aux vitesses par défaut (c’est-à-dire un processeur à 700 MHz). Personnellement, j'ai rencontré des corruptions de stockage avec différentes cartes SD - mais uniquement lorsque je travaillais sans arrêt. malheureusement, certaines distributions (images) ont des paramètres douteux dans config.txt .

gigue
la source
Je n'ai pas overclocké mon processeur, merci bien
user151324
essayez un autre RPi pour exclure le risque que le vôtre soit défectueux ou même cassé
jitter
J'ai seulement un
user151324
vous pouvez être à court d'options et demander un RMA ..
jitter
RMA? Qu'est-ce que c'est?
user151324
1

Si votre Raspberry Pi est gelé, vous ne pouvez pas l'éteindre correctement, cela vous aidera. Je me suis cassé mes quelques cartes SD avant de le savoir:

Maintenez les touches Alt + PrintScreen enfoncées et, tout en maintenant ces touches enfoncées, appuyez successivement sur les touches suivantes, une à la fois, avec une pause de quelques secondes entre elles.

Alt+ PrintScreen+R E I S U O

ou

Alt+ PrintScreen+ R E I S U B(redémarrage)

Un mnémonique pratique à retenir: le redémarrage même si le système est totalement en panne.

Remplacez "O" par "O" pour arrêter le système au lieu de redémarrer (O = désactivé, B = démarrage).

Source: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262

Almas Dusal
la source
0

Tel que trouvé sur le site elinux. Je n'ai sélectionné que ce qui s'applique à votre situation, mais visitez-les pour plus d'informations ...

  • Si vous avez des problèmes, vérifiez que vous avez la dernière version du firmware avec rpi-update
  • Certaines cartes SD ne fonctionnent pas sur le R-Pi, consultez la liste des cartes SD connues .
  • Si vous rencontrez des problèmes pour configurer votre carte SD, vous pouvez commencer par l’effacer complètement, en particulier si elle a déjà été utilisée ailleurs et contient encore des données / partitions. Il est bon de faire un format FULL (bas niveau) de quelque manière que ce soit, car il peut parfois trouver des secteurs défectueux et les ajouter à une liste d'ignorés.
    • Les utilisateurs Windows et Mac peuvent télécharger un outil de formatage à partir de l’association SD: https://www.sdcard.org/downloads/formatter_3/
    • Il est également facile de reformater des cartes dans un appareil photo numérique.
    • Si vous préparez manuellement votre carte SD sous Linux ou Mac OS à l'aide de la commande dd, cette opération effacera complètement les données et partitions existantes. Assurez-vous d’écrire sur l’ensemble de la carte (par exemple, / dev / sdd) et non sur une partition existante (par exemple, / dev / sdd1).
  • Si vous avez une carte SD qui ne fonctionne pas avec le dernier firmware, rendez-vous ici .
  • Assurez-vous d'avoir une bonne alimentation. Essayez de débrancher tout et de voir combien de temps cela dure. Rebranchez les éléments un à un pour tester la stabilité.

Si vous avez suivi toutes ces étapes, la seule chose à faire est d’utiliser une autre carte SD soigneusement sélectionnée dans la liste des cartes compatibles. Assurez-vous également d’acheter la carte originale à un endroit de confiance. Pas comme la Chine eBay ou quelque chose.

Piotr Kula
la source
Dans le processus, j'ai utilisé 3 cartes SD (toutes prises en charge): une SanDisk, une Kingston et une Lexar. Je ne configure pas manuellement ma carte SD. J'ai utilisé Win32DiskImager après avoir essayé Ubuntu et Mac OS X.
user151324
Il est étrange que le fait de lire votre fichier fs l’a seulement corrigé. Vous sur un million de personnes a ce problème. Peut-être avez-vous des virus / ordures qui gâchent votre système de fichiers. La racine en lecture seule est une douleur dans le cul ... attendez et voyez.
Piotr Kula
merci, quelque chose de bizarre se passe, certainement pas un virus si ...
user151324
0

Juste pour couvrir tout le terrain, vérifiez également si votre alimentation est suffisamment bonne. essayez un autre chargeur ou branchez le RPI à un port USB du PC pour le tester. Rappelez-vous que l’offre recommandée de RPI est d’environ 700mA, mais certains chargeurs faibles pourraient ne pas le supporter à des niveaux stables.

J'avais un routeur qui commençait à devenir fou pendant quelques jours, puis j'allais bien, puis à nouveau fou et plus tard, tout va bien de nouveau ... fou. Remplacé cette offre par une nouvelle, tout va bien. Essayez donc de remplacer l'alimentation et de mesurer la tension de sortie.

Enfin, désactivez le RPI en éteignant le système d’exploitation et ne le débranchez que lorsque vous n’avez qu’un voyant rouge. le RPI n'est pas vraiment arrêté si vous avez autre chose qu'une led rouge. Aussi, essayez d'éviter de déconnecter le RPI en retirant l'alimentation de la fiche, il est préférable de retirer l'alimentation du RPI et seulement après avoir retiré l'alimentation de la fiche.

higuita
la source
Non, j'ai un 5.1V stable à 2100 A, et j'ai toujours correctement arrêté
user151324
0

J'ai des problèmes similaires sur un pi de RS Components. C'est l'un des pis faits sur la Chine. Un autre produit fabriqué au Royaume-Uni par Element 14 n'a jamais été corrompu avec les mêmes cartes SD et alimentations. Peut-être un peu de matériel avec les unités de composants ra. Pas sûr de cela bien sûr, mais tout semble aller dans cette direction.

mcobit
la source
0

J'ai également rencontré des défaillances SD avec mon PI, parfois 5 jours de suite, parfois pendant un mois.

Le seul moyen de le rendre fiable pendant plus d'un an consiste à démarrer à partir d'une clé USB. De cette façon, vous n'utilisez pas votre carte SD (uniquement au démarrage), vous avez juste besoin d'environ 500 Mo de carte SD (bon marché) et d'une clé USB.

Gotschi
la source
0

J'ai suivi un indice que vous pouvez faire syncavant l'arrêt, et jusqu'à présent, cette commande a eu un certain succès:

sync; sudo shutdown -t 9 -r now
dirkk0
la source
Avez-vous toujours des problèmes avec Raspberry en utilisant la solution ci-dessus?
CuriousMind
Je n’avais plus de problème - mais j’avoue que j’ai plutôt tendance à laisser tomber la pi au lieu de la fermer. Mais je suppose que je l'ai chié bien plus de cinquante fois avec la ligne ci-dessus, et il n'a pas échoué une fois depuis. Donc, à partir de cette statistique - cela fonctionne.
dirkk0
Je ne pense pas que cela résoudra le problème. Lorsque vous exécutez un arrêt contrôlé, votre carte SD ne devrait pas être endommagée de par sa conception. La corruption semble se produire principalement dans les cas où le périphérique est simplement débranché (ou une panne de courant se produit), ce qui n’est pas lié à vos commandes syncou, à shutdownmoins que vous ne lanciez syncimmédiatement avant le débranchement (inattendu!) Qui semble irréalisable.
Nhee