Как я могу предотвратить частое повреждение SD-карты моего Pi?


47

Я получаю ошибку ввода-вывода при загрузке, а затем получаю эту «ошибку»: (Я использую последнюю версию Raspbian)

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

И я видел это раньше, и мне объяснили, что моя SD-карта была повреждена, так как я не выключился правильно. Неделю спустя я не справился с этой ошибкой, пока трижды не включилось и не выключилось питание, и теперь я не могу загрузиться снова. Кажется, я каждый день заново готовлю свою SD-карту !!! Мне это не нравится, не говоря уже о том, что мне нравятся возможности моего Пи. Но эта «точка останова» сводит меня с ума! Есть ли какой-нибудь способ, которым я могу предотвратить это или усилить что-то, чтобы этого не случилось, если отключится электричество? Какие-либо предложения? Спасибо!

PS Мой zip-файл не был поврежден, и моя служба извлечения Win32DiskImager


2
Ваша карта в этом списке
Баттерс

Вы когда-нибудь думали об UPS?
lenik

@lenik Ты хочешь сказать, что у меня должно быть что-то вроде сетевого фильтра?
user151324 15.06.13

Потому что вы выключаете устройство без надлежащего выключения?
Джиппи

1
@coding_corgi, скорее всего, что-то с аккумулятором внутри, которое обеспечивает питание в течение 5-10 минут после отключения питания, что позволяет вам игнорировать короткие щелчки питания и дает вам время для выключения (автоматически?) компьютера, когда питание отключается в течение длительного времени время. Это называется «источник бесперебойного питания» или сокращенно ИБП.
lenik

Ответы:


48

Я не собираюсь писать о проверке ваших HW и совместимых списков SD-карт, потому что вы, скорее всего, уже проверили все это. Я собираюсь написать постоянное решение, которое позволяет устранить проблему в зародыше и навсегда решить проблему.

Если вы не хотите, чтобы ваша SD-карта сломалась при щелчке переключателя питания, вы должны использовать ее в режиме только для чтения. Если на SD-карту ничего не записано, она не будет повреждена, что бы вы ни делали.

Очевидным (но нерабочим) решением будет попытка щелкнуть переключателем «только для чтения» на боковой стороне SD-карты, к сожалению, это не работает, поскольку на схемах показано, что этот переключатель нигде не маршрутизируется и его положение обычно игнорируется.

Другой, более тонкий (но работающий) подход - модифицировать ваш так, /etc/fstabчтобы монтировать все ваши разделы только для чтения. Недостатком этого подхода является то, что ваши журналы должны быть записаны где-то еще (USB-накопитель, RAM-накопитель?), И в случае RAM-накопителей журналы не сохранятся во время перезагрузки. Сделать это:

  1. Скопируйте изображение RPi на свою SD-карту любым удобным для вас способом.
  2. Загрузитесь с SD и raspi-configзапустите автоматически. Не «Расширяйте файловую систему», просто установите часовой пояс и международные настройки.
  3. Выполнить sudo fdisk /dev/mmcblk0, нажмите «p», чтобы напечатать текущую таблицу разделов. Затем введите следующие команды:

    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. Редактировать /etc/fstab. Это должно выглядеть примерно так:

    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. Запустите, sudo partprobeчтобы распознать новый раздел.

  6. Отформатируйте новый раздел с помощью sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Перезагрузка.

Если по какой-либо причине вам нужно внести изменения в вашу систему, вы можете перемонтировать разделы только для чтения с правами записи:

sudo mount -o remount,rw /dev/mmcblk0p2

Подождите, я не могу написать на мою SD-карту, если я это сделаю? Или только при загрузке?
user151324

1
@coding_corgi Это должно полностью прекратить запись на SD-карту.
Апнортон

зачем вам писать на SD-карту? запись на SD + выключение питания = повреждение FS, вы можете использовать USB-накопитель или создать отдельный раздел на SD-карте, если вам нужно сохранить некоторые данные. в этом случае, по крайней мере, ваша система будет запущена и запущена, и тогда вы сможете проверить свои данные на возможное повреждение.
lenik

@anorton это останавливает доступ для записи первых двух разделов на SD-карте, но никто не говорит, что вы не можете создать другой раздел или использовать другой носитель для сохранения данных. Например, запись данных по сети только для чтения RasPi - может быть очень надежным решением.
lenik

1
Я записываю на SD-карту видеоданные с распи-камеры, и она много раз умирала! Ни разу у меня не возникало проблем с загрузкой, отключением провода или сбоем системы. Только чтение хорошо для производства, когда вы подключите и играйте. Эта проблема не должна возникать во время разработки - я подозреваю, что даже чтение только испортит его данные, потому что что-то происходит на более высоком уровне, чем ядро ​​может обработать.
Петр Кула

4

В зависимости от того, для чего вы используете свой RPi, вы можете быть заинтересованы в IPE, который является «защищенной от затемнения разновидностью Raspbian».

Я планирую использовать его для загрузки моего RPi. Если мне понадобятся данные для записи, я буду использовать USB-накопитель, который я буду монтировать только для чтения (я предпочитаю, чтобы моя SD-карта была более безопасной и испортила USB-накопитель, чем необходимость ее восстановления)

Смотрите домашнюю страницу IPE

Как там указано, «Также используйте« ipe-rw »и« ipe-ro », чтобы переключить корневую файловую систему в режим записи или только для чтения».


2

Я преодолел эту проблему, используя флэш-накопитель USB для своих основных разделов.

  1. Восстановить распби изображение на USB-накопитель

  2. Отформатировать SD-карту в жир

  3. Скопируйте содержимое толстого раздела с USB-накопителя на SD-карту

  4. Измените config.txt на SD-карте для загрузки из / dev / sda

По сути, rpi будет по-прежнему загружаться с SD-карты, но будет использовать USB-накопитель для ОС и чтения / записи.



1

пожалуйста, убедитесь, что ваш RPi работает на скорости по умолчанию (т. е. процессор на 700 МГц). лично я столкнулся с повреждениями памяти с различными SD-картами - но только при работе на часах. К сожалению, некоторые дистрибутивы (изображения) поставляются с сомнительными настройками в config.txt .


Я не разогнал свой процессор, спасибо
user151324

попробуйте другой RPi, чтобы исключить вероятность того, что у вас есть какие-то недостатки или даже поломка
джиттер

У меня только один
user151324

у вас может не хватить опций и запросить RMA ..
jitter

RMA? Что это?
user151324

1

Если ваш Raspberry Pi заморожен, то вы не сможете правильно отключиться, тогда это поможет. Я сломал свои несколько SD-карт, прежде чем знал это:

Удерживая нажатой клавишу Alt + PrintScreen, удерживая эти клавиши, последовательно нажимайте следующие клавиши, по одной за раз, с паузой в несколько секунд между ними.

Alt+ PrintScreen+R E I S U O

или же

Alt+ PrintScreen+ R E I S U B(перезагрузка)

Помните удобную мнемонику: перезагрузка, даже если система совершенно сломана.

Замените «O» на «B», чтобы выключить систему вместо перезагрузки (O = выкл, B = загрузка).

Источник: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262.


0

Как найдено на сайте elinux. Я выбрал только то, что относится к вашей ситуации, но, пожалуйста, посетите их для получения дополнительной информации ...

  • Если у вас есть проблемы, проверьте, установлена ​​ли у вас последняя версия прошивки с помощью rpi-update
  • Некоторые SD-карты не работают на R-Pi, поэтому проверьте список известных SD-карт .
  • Если у вас возникли проблемы с настройкой вашей SD-карты, вы можете начать с ее полного стирания, особенно если она использовалась в другом месте и все еще содержит данные / разделы. Хорошо использовать формат FULL (низкий уровень) любым способом, так как он может иногда находить поврежденные сектора и добавлять их в список игнорирования.
    • Пользователи Windows и Mac могут загрузить инструмент форматирования из SD Association: https://www.sdcard.org/downloads/formatter_3/
    • Переформатирование карт также легко сделать с помощью цифровой камеры.
    • Если вы вручную готовите SD-карту в Linux или Mac OS с помощью команды dd, эта операция полностью удалит все существующие данные и разделы. Убедитесь, что вы пишете на всю карту (например, / dev / sdd), а не на существующий раздел (например, / dev / sdd1).
  • Если у вас есть SD-карта, которая не работает с последней прошивкой, зайдите сюда .
  • Убедитесь, что у вас хороший источник питания. Попробуйте отключить все и посмотрите, как долго это длится. Подключите элементы обратно один за другим, проверяя стабильность.

Если вы выполнили все эти шаги, то единственное, что можно попробовать - это использовать другую SD-карту, тщательно выбранную из списка совместимых. Также не забудьте купить оригинальную карту из надежного места. Не похоже на ebay china или что-то подобное.


В процессе я использовал 3 SD-карты (все поддерживаются) SanDisk, Kingston и Lexar, я тоже не настраиваю свою SD-карту, я использовал Win32DiskImager после попытки на Ubuntu и Mac OS X.
user151324

Странно, что заставляя ваш fs читать только исправил это. У вас из миллионов людей есть эта проблема. Может быть, вы получили какой-то мусор / вирус, портящий вашу файловую систему. Только чтение root - это боль в заднице ... подожди и посмотри.
Петр Кула

спасибо, что-то странное происходит, определенно не вирус, хотя ...
user151324

0

Просто, чтобы покрыть всю землю, также проверьте, достаточно ли у вас хороший источник питания. попробуйте другое зарядное устройство или подключите RPI к USB-порту ПК, чтобы проверить его. Помните, что рекомендуемое значение RPI составляет около 700 мА, но некоторые слабые зарядные устройства могут не поддерживать это на стабильном уровне.

У меня был роутер, который несколько дней начинал работать сумасшедшим, потом все прошло нормально, потом опять сошло с ума, а потом снова нормально ... я обнаружил, что блок питания выдает изменяющееся напряжение (от 3 В до 5,5 В) во время работы маршрутизатора. псих. Заменили, что поставка на новую все нормально. Поэтому попробуйте заменить источник питания и измерить выходное напряжение.

Наконец, отключите RPI, выключив ОС, и отключайте RPI только тогда, когда у вас есть только один красный светодиод. RPI на самом деле не отключается, если у вас есть только один красный светодиод. Также постарайтесь не отключать RPI, отсоединив блок питания от вилки, лучше отключить питание от RPI и только после того, как вы отключите блок питания от вилки.


Нет, у меня стабильное 5,1 В при 2100 А, и я всегда правильно
выключаюсь

0

У меня похожие проблемы на пи от RS Components. Это один из пис, сделанных на Китае. Еще один, сделанный в Великобритании из Элемента 14, никогда не имел коррупции с тем же SDCard и PowerSupply. Может быть какая-то аппаратная ошибка с компонентами ra. Не уверен в этом, конечно, но все, кажется, указывает в этом направлении.


0

Я также испытывал сбои SD с моим PI, иногда 5 дней подряд, иногда это работает в течение месяца.

Единственный способ заставить его работать надежно более года - это загрузиться с USB-накопителя. Таким образом, вы не используете свою SD-карту (только при загрузке) и просто нуждаетесь в SD-карте на 500 Мб (дешево) и USB-флешке.


0

Я следовал подсказке, которую вы можете сделать syncперед выключением, и до сих пор у меня был некоторый успех с этой командой:

sync; sudo shutdown -t 9 -r now

У вас все еще есть проблемы с Raspberry, используя вышеуказанное решение?
CuriousMind

У меня больше не было никаких проблем - но я признаю, что я предпочитаю включать пи вместо того, чтобы выключать его. Но я предполагаю, что я перебил это более пятидесяти раз вышеупомянутой линией, и с тех пор это ни разу не подвело. Так что из этой статистики - это работает.
dirkk0

Я не думаю, что это решит проблему. Когда вы запускаете контролируемое отключение, не должно быть никакого повреждения вашей SD-карты. Похоже, что повреждение происходит в основном в тех случаях, когда устройство просто отключается (или происходит отключение питания), что не связано с вашими командами syncили shutdownкомандами, если вы не запускаете syncнепосредственно перед (неожиданным!) Отключением, которое кажется невозможным.
Нее
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.