Come posso evitare che la scheda SD del mio Pi venga corrotta così spesso?


47

Ottengo un errore I / O all'avvio e quindi ottengo questo "errore": (Sto eseguendo l'ultima versione di Raspbian)

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

E l'ho visto prima, e mi è stato spiegato che la mia scheda SD è stata danneggiata poiché non ho chiuso correttamente. Una settimana dopo, non ho affrontato questo errore, fino a quando la potenza non si è accesa / spenta tre volte e ora non riesco a riavviare. Mi sembra di ri-preparare la mia scheda SD ogni giorno !!! Non mi piace, per non parlare del fatto che amo le capacità del mio Pi. Ma questo "breakpoint" mi sta facendo impazzire! C'è un modo per impedirlo o rafforzare qualcosa in modo che non accada se il potere si spegne? Eventuali suggerimenti? Grazie!

PS Il mio file zip non è stato danneggiato e il mio servizio di estrazione è Win32DiskImager


2
È la tua carta in questo elenco
Butters,

hai mai pensato a UPS?
Lenik,

@lenik Stai dicendo che dovrei avere qualcosa come un limitatore di sovratensione?
user151324

Perché spegni la cosa senza un arresto corretto?
jippie,

1
@coding_corgi più probabilmente qualcosa con una batteria interna, che fornisce energia per 5-10 minuti dopo l'interruzione di corrente, che ti consente di ignorare i brevi sfoghi di potenza e ti dà il tempo di spegnere (automaticamente?) il computer quando si spegne per un lungo periodo tempo. Si chiama "Uninterruptable Power Supply" o UPS in breve.
lenik,

Risposte:


48

Non scriverò sul controllo degli elenchi HW e delle schede SD compatibili, perché molto probabilmente hai già controllato tutti questi. Quello che sto per scrivere è la soluzione permanente, che consente di stroncare il problema sul nascere e risolverlo definitivamente .

Se non si desidera che la scheda SD si rompa quando si gira l'interruttore di alimentazione, è necessario utilizzarlo in modalità di sola lettura. Se non viene scritto nulla sulla tua scheda SD, non verrà danneggiato, qualunque cosa tu faccia.

Una soluzione ovvia (ma non funzionante) sarebbe un tentativo di capovolgere l'interruttore "sola lettura" sul lato della scheda SD, sfortunatamente questo non funziona perché gli schemi mostrano che questo interruttore non è indirizzato da nessuna parte e la sua posizione è generalmente ignorata.

Un altro approccio più sottile (ma funzionante) sarebbe la modifica /etc/fstabper montare tutte le partizioni in sola lettura. Lo svantaggio di questo approccio è che i registri devono essere scritti altrove (chiavetta USB, unità RAM?) E in caso di unità RAM i registri non persistono durante il riavvio. Per farlo:

  1. Copia un'immagine RPi sulla tua scheda SD usando qualsiasi metodo che ti piace.
  2. Avvia da SD e raspi-configsi avvierà automaticamente. Non "Espandi file system", basta impostare il fuso orario e le impostazioni internazionali.
  3. Esegui sudo fdisk /dev/mmcblk0, premere 'p' per stampare la tabella delle partizioni corrente. Quindi immettere i seguenti comandi:

    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. Modifica /etc/fstab. Dovrebbe essere simile al seguente:

    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. Esegui sudo partprobeper riconoscere la nuova partizione.

  6. Formatta la tua nuova partizione con sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Reboot.

Se per qualche motivo è necessario apportare modifiche al sistema, è possibile rimontare le partizioni di sola lettura con accesso in scrittura:

sudo mount -o remount,rw /dev/mmcblk0p2

Aspetta, non riesco a scrivere sulla mia scheda SD se lo faccio? O solo all'avvio?
user151324

1
@coding_corgi Questo dovrebbe interrompere completamente la scrittura sulla scheda SD.
apnorton,

perché devi scrivere sulla tua scheda SD? scrivendo su SD + power down = FS corruzione, è possibile utilizzare una chiavetta USB o creare una partizione separata sulla scheda SD se è necessario salvare alcuni dati. in questo caso almeno il tuo sistema sarà attivo e funzionante, quindi potresti controllare i tuoi dati per possibili danni.
Lenik,

@anorton questo interrompe l'accesso in scrittura alle prime due partizioni sulla scheda SD, ma nessuno dice che non è possibile creare un'altra partizione o utilizzare supporti diversi per salvare i dati. ad esempio, RasPi di sola lettura che scrive dati in rete - potrebbe essere una soluzione molto affidabile.
Lenik,

1
Scrivo i dati video sulla mia scheda SD da raspi cam ed è morto così tante volte! Non ho mai avuto problemi con l'avvio, il cavo estratto o il crash del sistema. Sola lettura è utile per la produzione quando si collega e si gioca. Questo problema non dovrebbe verificarsi durante lo sviluppo - sospetto che anche la sola lettura rovinerà i suoi dati perché qualcosa sta accadendo a un livello superiore a quello che il kernel può gestire.
Piotr Kula,

4

A seconda di cosa usi il tuo RPi, potresti essere interessato a IPE, che è un "sapore di Raspbian a prova di blackout".

Ho intenzione di usarlo per avviare il mio RPi. Se ho bisogno di scrivere i dati, userò un'unità USB che monterò di sola lettura (preferisco che la mia SD sia sicura e corrotta su un'unità USB piuttosto che dover riparare la mia SD)

Vedi la homepage di IPE

Come indicato qui, "Inoltre, utilizzare" ipe-rw "e" ipe-ro "per passare al file system root in modalità scrivibile o di sola lettura."


2

Ho superato questo problema utilizzando un'unità flash USB per le mie partizioni principali.

  1. Ripristina l'immagine raspbian su un'unità USB

  2. Formattare una scheda SD su grasso

  3. Copia il contenuto della partizione fat dall'unità USB sulla scheda SD

  4. Modifica config.txt sulla scheda SD per l'avvio da / dev / sda

Essenzialmente l'Rpi si avvierà comunque dalla scheda SD, ma utilizzerà l'unità USB per il sistema operativo e per la lettura / scrittura.



1

assicurati che il tuo RPi funzioni alle velocità predefinite (ad es. CPU a 700 mhz). personalmente, ho riscontrato danni alla memoria con varie schede SD, ma solo durante il funzionamento continuo. sfortunatamente, alcune distribuzioni (immagini) hanno impostazioni discutibili in config.txt .


Non ho overcloccato la mia CPU, grazie
user151324 il

prova un altro RPi per escludere la possibilità che il tuo sia in qualche modo difettoso o addirittura rotto
jitter

Ne ho solo uno
user151324

potresti esaurire le opzioni e richiedere un RMA ..
jitter

RMA? Cos'è quello?
user151324

1

Se il tuo Raspberry Pi è congelato, non puoi spegnerlo correttamente, quindi questo aiuta. Ero al verde delle mie poche schede SD prima sapevo questo:

Tieni premuti entrambi Alt + PrintScreen e, mentre tieni premuti quei tasti, premi i seguenti tasti in sequenza, uno alla volta, con alcuni secondi di pausa tra di loro.

Alt+ PrintScreen+R E I S U O

o

Alt+ PrintScreen+ R E I S U B(riavvio)

Un utile mnemonico da ricordare, riavvia anche se il sistema è completamente rotto.

Sostituire "O" con "B" per arrestare il sistema invece di riavviare (O = spento, B = avvio).

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


0

Come si trova sul sito elinux. Ho selezionato solo ciò che si applica alla tua situazione, ma ti invitiamo a visitarli per ulteriori informazioni ...

  • In caso di problemi, verificare di disporre della versione più recente del firmware con rpi-update
  • Alcune schede SD non funzionano sull'R-Pi, quindi controlla l' elenco delle schede SD note .
  • In caso di problemi con la configurazione della scheda SD, è possibile iniziare a cancellarla completamente, soprattutto se è stata utilizzata altrove e contiene ancora dati / partizioni. È bene fare un formato FULL (basso livello) in ogni modo in quanto può trovare settori danneggiati a volte e aggiungerli a un elenco ignorato.
    • Gli utenti Windows e Mac possono scaricare uno strumento di formattazione dall'Associazione SD: https://www.sdcard.org/downloads/formatter_3/
    • La riformattazione delle carte è anche facile da eseguire in una fotocamera digitale.
    • Se stai preparando manualmente la tua scheda SD su Linux o Mac OS usando il comando dd, questa operazione cancellerà completamente tutti i dati e le partizioni esistenti. Assicurati di scrivere sull'intera scheda (ad es. / Dev / sdd) e non su una partizione esistente (ad es. / Dev / sdd1).
  • Se hai una sdcard che non funziona con l'ultimo firmware, vai qui .
  • Assicurati di avere un buon alimentatore. Prova a scollegare tutto e vedi quanto dura. Ricollegare gli elementi uno a uno per testarne la stabilità.

Se hai seguito tutti questi passaggi, l'unica cosa possibile da provare è utilizzare un'altra scheda SD accuratamente selezionata dall'elenco compatibile. Assicurati anche di acquistare la carta originale da un luogo attendibile. Non come la Cina ebay o qualcosa del genere.


Ho usato 3 schede SD nel processo (tutte supportate) un SanDisk, un Kingston e una Lexar, non sto nemmeno configurando manualmente la mia scheda SD, ho usato Win32DiskImager dopo aver provato su Ubuntu e Mac OS X.
user151324

È strano che farti leggere il tuo fs sia stato risolto. Su un milione di persone hai questo problema. Forse hai della spazzatura / virus che rovinano il tuo filesystem. La radice di sola lettura è un dolore nel culo ... aspetta e vedi.
Piotr Kula,

grazie, sta succedendo qualcosa di strano, sicuramente non è un virus ...
user151324

0

Solo per coprire tutto il terreno, controlla anche se il tuo alimentatore è abbastanza buono. provare altri caricabatterie o collegare l'RPI a una porta USB del PC per testarlo. Ricorda che l'alimentazione RPI consigliata è di circa 700 mA, ma alcuni caricabatterie deboli potrebbero non sostenerlo a livelli stabili.

Ho avuto un router che ha iniziato a comportarsi da matti per alcuni giorni, poi è andato bene, poi di nuovo è impazzito e poi di nuovo bene ... Ho scoperto che l'alimentazione stava cambiando tensione (da 3 V a 5,5 V) nel momento in cui il router era pazza. Sostituito quel rifornimento con uno nuovo tutto bene. Quindi prova a sostituire l'alimentatore e misurare la tensione di uscita.

Infine, disattiva l'RPI spegnendo il sistema operativo e scollega l'RPI solo quando hai un solo led rosso. l'RPI non si spegne realmente se si dispone di un altro LED rosso. Inoltre, cerca di evitare di scollegare l'RPI rimuovendo l'alimentatore dalla spina, è meglio rimuovere l'alimentazione dall'RPI e solo dopo l'alimentazione remota dalla spina.


No, ho un 5.1V costante a 2100 A e lo
spengo

0

Ho problemi simili su un pi di RS Components. Questo è uno dei pis fatti sulla Cina. Un altro prodotto nel Regno Unito da Element 14 non ha mai avuto corruzione con la stessa sdcard e la stessa fornitura di energia. Potrebbe essere un po 'di Hardwareflaw con le unità componenti ra. Non ne sono certo, ma tutto sembra puntare in quella direzione.


0

Ho anche riscontrato errori SD con il mio PI, a volte 5 giorni consecutivi, a volte funziona per un mese.

L'unico modo per farlo funzionare in modo affidabile per più di un anno è l'avvio da una chiavetta USB. In questo modo non usi la tua scheda SD (solo all'avvio) e hai solo bisogno di una scheda SD da 500 MB (economica) e una chiavetta USB.


0

Ho seguito un suggerimento che puoi fare syncprima dell'arresto, e finora ho avuto un certo successo con questo comando:

sync; sudo shutdown -t 9 -r now

Hai ancora problemi con Raspberry utilizzando la soluzione sopra?
CuriousMind

Non ho più avuto alcun problema, ma ammetto che tendo piuttosto a lasciar perdere il pi, invece di spegnerlo. Ma la mia ipotesi è che l'ho buttato giù per più di cinquanta volte con la linea sopra, e da allora non è fallito. Quindi da quella statistica - funziona.
dirkk0,

Non penso che questo risolverà il problema. Quando si esegue uno spegnimento controllato, non dovrebbe verificarsi alcun danno alla scheda SD in base alla progettazione. La corruzione sembra verificarsi soprattutto nei casi in cui il dispositivo viene semplicemente scollegato (o si verifica un'interruzione dell'alimentazione) che non è correlato ai tuoi comandi synco ai shutdowncomandi a meno che non si esegua syncimmediatamente prima dello scollegamento (imprevisto!) Che sembra irrealizzabile.
nhee,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.