¿Cómo puedo evitar que la tarjeta SD de mi Pi se corrompa con tanta frecuencia?

47

Recibo un error de E / S en el arranque y luego recibo este 'error': (Estoy ejecutando la última versión de Raspbian)

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

Y lo he visto antes, y me explicaron que mi tarjeta SD se corrompió porque no la apagué correctamente. Una semana después, no me ocupé de este error, hasta que el poder parpadeó tres veces y ahora no puedo arrancar de nuevo. ¡Parece que estoy preparando mi tarjeta SD todos los días! No me gusta esto, sin mencionar que amo las capacidades de mi Pi. ¡Pero este 'punto de quiebre' me está volviendo loco! ¿Hay alguna forma de prevenir esto o fortalecer algo para que no suceda si se va la luz? ¿Alguna sugerencia? ¡Gracias!

PD: mi archivo zip no estaba dañado y mi servicio de extracción es Win32DiskImager

usuario151324
fuente
2
¿Está su tarjeta en esta lista?
Butters
¿Alguna vez has pensado en UPS?
lenik
@lenik ¿Estás diciendo que debería tener algo como un protector contra sobretensiones?
user151324
¿Porque apagas la cosa sin un apagado adecuado?
jippie
1
Es más probable que @coding_corgi tenga algo con una batería adentro, que proporcione energía durante 5-10 minutos después del corte de energía, que le permita ignorar los pequeños cortes de energía y le dé tiempo para apagar (¿automáticamente?) su computadora cuando se corta la energía por un tiempo prolongado hora. Se llama "Fuente de alimentación ininterrumpida" o UPS para abreviar.
lenik

Respuestas:

48

No voy a escribir sobre verificar sus listas de tarjetas SD HW y compatibles, porque probablemente ya haya verificado todas estas. Lo que estoy a punto de escribir es la solución permanente, que permite cortar el problema de raíz y solucionarlo permanentemente .

Si no desea que su tarjeta SD se rompa al presionar el interruptor de encendido, debe usarla en modo de solo lectura. Si no hay nada escrito en su tarjeta SD, no se dañará sin importar lo que haga.

La solución obvia (pero que no funciona) sería un intento de activar el interruptor de "solo lectura" en el costado de la tarjeta SD, desafortunadamente esto no funciona porque los esquemas muestran que este interruptor no se enruta a ninguna parte y su posición generalmente se ignora.

Otro enfoque más sutil (pero funcional) sería modificar su /etc/fstabpara montar todas sus particiones de solo lectura. El inconveniente de este enfoque es que sus registros deben escribirse en otro lugar (memoria USB, unidad RAM?) Y en el caso de la unidad RAM, los registros no persistirán durante el reinicio. Para hacer esto:

  1. Copie una imagen RPi a su tarjeta SD usando cualquier método que desee.
  2. Arranque desde SD y raspi-configse iniciará automáticamente. No "Expanda el sistema de archivos", solo configure su zona horaria y la configuración internacional.
  3. Ejecute sudo fdisk /dev/mmcblk0, presione 'p' para imprimir la tabla de particiones actual. Luego ingrese los siguientes comandos:

    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. Editar /etc/fstab. Debería parecerse a lo siguiente:

    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. Ejecute sudo partprobepara reconocer la nueva partición.

  6. Formatee su nueva partición con sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Reiniciar.

Si por alguna razón necesita realizar cambios en su sistema, puede volver a montar las particiones de solo lectura con acceso de escritura:

sudo mount -o remount,rw /dev/mmcblk0p2
lenik
fuente
Espera, ¿ no puedo escribir en mi tarjeta SD si hago esto? ¿O solo en el arranque?
user151324
1
@coding_corgi Esto debería dejar de escribir en la tarjeta SD por completo.
apnorton
¿Por qué necesitas escribir en tu tarjeta SD? escribiendo en SD + apagado = corrupción FS, puede usar una memoria USB o crear una partición separada en la tarjeta SD si necesita guardar algunos datos. en este caso, al menos su sistema se pondrá en funcionamiento y luego podrá verificar sus datos para detectar posibles daños.
lenik
@anorton, esto detiene el acceso de escritura a las dos primeras particiones en la tarjeta SD, pero nadie dice que no puede crear otra partición o usar medios diferentes para guardar los datos. por ejemplo, RasPi de solo lectura que escribe datos a través de la red, podría ser una solución muy confiable.
lenik
1
¡Escribo en mi tarjeta SD los datos de video de la cámara raspi y murió tantas veces! Ni una sola vez tuve problemas con el arranque, la desconexión del cable o el bloqueo del sistema. Leer solo es bueno para la producción cuando se conecta y se reproduce. Este problema no debería ocurrir durante el desarrollo de ninguna manera. Sospecho que incluso leer solo arruinará sus datos porque algo está sucediendo a un nivel superior al que el núcleo puede manejar.
Piotr Kula
4

Dependiendo de para qué use su RPi, puede estar interesado en IPE, que es un "sabor de Raspbian a prueba de apagón".

Planeo usarlo para arrancar mi RPi. Si necesito que se escriban datos, utilizaré una unidad USB que montaré de solo lectura (prefiero que mi SD sea segura y corrompa una unidad USB que tener que reparar mi SD)

Ver la página de inicio de IPE

Como se indica allí, "Además, use" ipe-rw "e" ipe-ro "para cambiar el sistema de archivos raíz al modo de escritura o de solo lectura".

lauhub
fuente
2

He superado este problema utilizando una unidad flash USB para mis particiones principales.

  1. Restaurar imagen raspbian a una unidad USB

  2. Formatear una tarjeta SD para engordar

  3. Copie el contenido de la partición fat de la unidad USB en la tarjeta SD

  4. Modifique config.txt en la tarjeta SD para arrancar desde / dev / sda

Esencialmente, el rpi todavía se iniciará desde la tarjeta SD, pero usará la unidad USB para el sistema operativo y leer / escribir.

As
fuente
2

Estoy usando el UPS Pico, un UPS especialmente diseñado para la Raspberry Pi y nunca he tenido tales problemas.

Alejandro
fuente
1

asegúrese de que su RPi se esté ejecutando a las velocidades predeterminadas (es decir, CPU a 700 mhz). personalmente, encontré daños en el almacenamiento con varias tarjetas SD, pero solo cuando se ejecuta a través del reloj. desafortunadamente, algunas distribuciones (imágenes) vienen con configuraciones cuestionables en config.txt .

estar nervioso
fuente
Sin embargo, no he overclockeado mi CPU, gracias
User151324
intente con otro RPi para excluir la posibilidad de que el suyo sea de alguna manera defectuoso o incluso roto
jitter
Solo tengo uno
user151324
puede quedarse sin opciones y solicitar un RMA ..
jitter
RMA? ¿Que es eso?
user151324
1

Si su Raspberry Pi está congelada, entonces no puede apagarla correctamente, entonces esto ayuda. Estaba roto mis pocas tarjetas SD antes de saber esto:

Mantenga presionadas las teclas Alt + PrintScreen y, mientras mantiene presionadas esas teclas, presione las siguientes teclas en secuencia, una a la vez, con una pausa de unos segundos entre ellas.

Alt+ PrintScreen+R E I S U O

o

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

Una práctica mnemotécnica para recordar es reiniciar incluso si el sistema está completamente roto.

Sustituya "O" por "B" para apagar el sistema en lugar de reiniciar (O = apagado, B = inicio).

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

Almas Dusal
fuente
0

Como se encuentra en el sitio de elinux. Solo seleccioné lo que se aplica a su situación, pero visítelos para obtener más información ...

  • Si tiene problemas, compruebe que tiene la última versión de firmware con rpi-update
  • Algunas tarjetas SD no funcionan en el R-Pi, así que revise la lista de tarjetas SD conocidas .
  • Si tiene problemas para configurar su tarjeta SD, es posible que desee comenzar borrándola por completo, especialmente si se ha utilizado en otro lugar y todavía contiene datos / particiones. Es bueno hacer un formato COMPLETO (bajo nivel) de cualquier manera, ya que a veces puede encontrar sectores defectuosos y agregarlos a una lista de ignorados.
    • Los usuarios de Windows y Mac pueden descargar una herramienta de formato de SD Association: https://www.sdcard.org/downloads/formatter_3/
    • Reformatear tarjetas también es fácil de hacer en una cámara digital.
    • Si está preparando manualmente su tarjeta SD en Linux o Mac OS utilizando el comando dd, esta operación borrará completamente cualquier dato y partición existentes. Asegúrese de escribir en toda la tarjeta (por ejemplo, / dev / sdd) y no en una partición existente (por ejemplo, / dev / sdd1).
  • Si tiene una tarjeta SD que no funciona con el último firmware, diríjase aquí .
  • Asegúrese de tener una buena fuente de alimentación. Intenta desconectar todo y ver cuánto dura. Vuelva a enchufar los elementos uno por uno para probar la estabilidad.

Si ha seguido todos esos pasos, lo único que puede intentar es usar otra tarjeta SD cuidadosamente seleccionada de la lista compatible. También asegúrese de comprar la tarjeta original de un lugar confiable. No como ebay china o algo así.

Piotr Kula
fuente
Utilicé 3 tarjetas SD en el proceso (todas compatibles) una SanDisk, una Kingston y una Lexar, tampoco estoy configurando manualmente mi tarjeta SD, utilicé Win32DiskImager después de probar Ubuntu y Mac OS X.
user151324
Es extraño que hacer que tu fs lea solo lo solucionó. Usted de millones de personas tiene este problema. Tal vez tienes basura / virus que estropea tu sistema de archivos. Readonly root es un dolor en el culo ... espera y verás.
Piotr Kula
gracias, algo extraño está sucediendo, definitivamente no es un virus ...
user151324
0

Solo para cubrir todo el terreno, también verifique si su fuente de alimentación es lo suficientemente buena. pruebe otro cargador o conecte el RPI a un puerto USB de la PC para probarlo. Recuerde que el suministro recomendado de RPI es de aproximadamente 700 mA, pero algunos cargadores débiles pueden no mantener esto en niveles estables.

Tuve un enrutador que comenzó a actuar como loco durante algunos días, luego se volvió bien, luego se volvió loco y luego bien otra vez ... descubrí que la fuente de alimentación estaba emitiendo un voltaje cambiante (3V a 5.5V) en el momento en que el enrutador estaba loca. Reemplazado ese suministro por uno nuevo, todo está bien. Intente reemplazar la fuente de alimentación y mida el voltaje de salida.

Finalmente, apague el RPI apagando el sistema operativo y solo desconecte el RPI cuando tenga solo un led rojo. el RPI no se apaga realmente si tiene otro led rojo. Además, trate de evitar desconectar el rpi quitando la fuente de alimentación del enchufe, es mejor quitar la alimentación del RPI y solo después de que la fuente de alimentación remota del enchufe.

higuita
fuente
No, tengo un 5.1V constante a 2100 A, y siempre
apago
0

Tengo problemas similares en un pi de RS Components. Este es uno de los pis hechos en China. Otro hecho en Reino Unido a partir de Element 14 nunca tuvo corrupción con la misma tarjeta SD y fuente de alimentación. Podría ser un poco de Hardwareflaw con las unidades de componentes ra. No estoy seguro de eso, por supuesto, pero todo parece apuntar en esa dirección.

mcobit
fuente
0

También he experimentado fallas SD con mi PI, a veces 5 días seguidos, a veces funciona durante un mes.

La única forma en que podría funcionar de manera confiable durante más de un año ahora es arrancando desde una memoria USB. De esta manera, no usa su tarjeta SD (solo en el arranque) y solo necesita una tarjeta sd de 500 mb (barata) y una memoria USB.

Gotschi
fuente
0

Seguí una pista que puedes hacer syncantes del apagado, y hasta ahora tuve cierto éxito con este comando:

sync; sudo shutdown -t 9 -r now
dirkk0
fuente
¿Sigue teniendo problemas con Raspberry usando la solución anterior?
CuriousMind
Ya no tenía ningún problema, pero admito que tiendo a dejar el pi en lugar de apagarlo. Pero supongo que lo cagué más de cincuenta veces con la línea anterior, y no falló ni una vez desde entonces. Entonces, a partir de esa estadística, funciona.
dirkk0
No creo que esto solucione el problema. Cuando ejecutas un apagado controlado, no debe ocurrir ningún daño a tu tarjeta SD por diseño. La corrupción parece ocurrir sobre todo en los casos en los que el dispositivo es simplemente desenchufado (o falta de energía ocurre), que esté relacionada con su synco shutdowncomandos a menos que ejecute syncinmediatamente antes de la (! Inesperada) desenchufar que parece inviable.
nhee