Как я могу преднамеренно сломать / повредить сектор на SD-карте?

142

Мне нужно проверить устойчивость некоторого кода чтения / записи для некоторого встроенного оборудования. Как я могу пожертвовать несколькими SD-картами и сломать несколько известных секторов для контролируемого исследования?

Единственное, о чем я могу думать, это перезаписать один сектор несколько миллионов раз. Интересно, можно ли создать скрипт Linux badblocks для повторного выполнения своего разрушительного теста в одном секторе в течение нескольких часов.

Гейб Краузе
источник
20
Можете ли вы изменить низкоуровневый драйвер SD, чтобы притвориться, что там плохой блок, или это не может быть и речи?
3
@MarkYisri, я не думаю, что водитель очень доступен. Какой бы драйвер мы ни использовали, он ультрарудиален для максимизации выделения памяти остальной части прошивки. Кроме того, если бы это было возможно, это, вероятно, было бы за пределами моих возможностей.
Гейб Краузе
3
Можете ли вы построить эмулятор SD-карты? Заметьте, не самый простой проект.
user20574
11
Учитывая цель, вы можете купить несколько бывших в употреблении SD-карт за небольшие деньги, и вы можете легко получить неисправную или разместить объявление «ищу ...», чтобы специально искать неисправные карты. Или поиските на eBay дефектные карты. Затем вы проверяете карту и узнаете положение дефектных зон.
FarO
28
Спросите любого профессионального фотографа. У них наверняка будет куча отрывочных SD-карт.
J ...

Ответы:

168

Альтернативный подход, который может быть полезен.

Если ваш код работает под Linux, то, возможно, вы можете протестировать его с «неисправным» логическим устройством. dmsetupможет создавать устройства, которые возвращают ошибки ввода-вывода. Просто создайте свое устройство, используя errorи / или flakeyцель. От man 8 dmsetup:

error
Ошибки любого ввода / вывода, который идет в эту область. Полезно для тестирования или для создания устройств с отверстиями в них.

flakey
Создает сопоставление с linearцелью, но периодически проявляет ненадежное поведение. Полезно для моделирования неисправных устройств при тестировании.

Примечание: flakeyцелевое использование задокументировано здесь . Основной пример здесь .

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

Камиль Мачоровски
источник
34
Я ценю это нестандартное мышление! На уровне блоков мы взаимодействуем с SD через 80-МГц чип Atmel и никакой реальной ОС.
Гейб Краузе
1
@GabeKrause В этом случае полезность этого ответа зависит от того, насколько API API блочного устройства Linux может быть похож на API вашего встроенного драйвера устройства.
Qsigma
1
dmsetupкоманда для настройки errorустройства, которое всегда возвращает ошибки чтения: stackoverflow.com/questions/1870696/…
Питер Кордес
1
Я согласен, что это звучит как лучшее решение. Сначала вы можете копировать на любом оборудовании. А также вы можете моделировать различные режимы ошибок. Например, у меня есть флэш-накопитель USB на 16 ГБ, который работает нормально Через некоторое время определенная область на нем начинает возвращать неверные данные. Там нет ошибки FS любого рода. Вы читаете файл, но содержание отличается. Некоторые сектора явно нестабильны. Но как поведет себя какое-то конкретное устройство, заранее неизвестно.
Акостадинов
75

Этот парень взломал микроконтроллер на SD-картах, используемых для маркировки плохих блоков: https://www.bunniestudios.com/blog/?p=3554

Вы можете сделать то же самое и произвольно пометить блоки как неисправные.

Сегодня на компьютерном конгрессе Chaos (30C3) мы с Хобсом обнаружили, что некоторые SD-карты содержат уязвимости, которые допускают выполнение произвольного кода - на самой карте памяти. С другой стороны, выполнение кода на карте памяти обеспечивает класс атак MITM (человек посередине), когда карта ведет себя односторонним образом, но на самом деле она делает что-то другое. С другой стороны, это также позволяет энтузиастам оборудования получить доступ к очень дешевому и вездесущему источнику микроконтроллеров.

,

Эти алгоритмы слишком сложны и слишком специфичны для устройства, чтобы запускаться на уровне приложения или ОС, и поэтому оказывается, что каждый диск флэш-памяти поставляется с достаточно мощным микроконтроллером для запуска специального набора алгоритмов абстрагирования диска. Даже миниатюрная карта microSD содержит не одну, а, по крайней мере, две микросхемы - контроллер и, по крайней мере, одну флеш-микросхему (карты высокой плотности будут составлять несколько флеш-карт).

,

Встроенный микроконтроллер обычно представляет собой сильно модифицированный процессор 8051 или ARM. В современных реализациях микроконтроллер будет приближаться к уровням производительности 100 МГц, а также имеет несколько аппаратных ускорителей на кристалле. Удивительно, но стоимость добавления этих контроллеров к устройству, вероятно, составляет порядка 0,15-0,30 долл. США, особенно для компаний, которые могут использовать как флэш-память, так и контроллеры в пределах одного подразделения. Вероятно, дешевле добавить эти микроконтроллеры, чем тщательно тестировать и характеризовать каждый чип флэш-памяти, что объясняет, почему управляемые флэш-устройства могут быть дешевле на бит, чем необработанные чипы флэш-памяти, несмотря на включение микроконтроллера.

,

Суть в том, что механизм загрузки и обновления прошивки практически обязателен, особенно для сторонних контроллеров. Конечные пользователи редко подвергаются этому процессу, поскольку все это происходит на заводе, но это не делает механизм менее реальным. В своих исследованиях рынков электроники в Китае я видел, как владельцы магазинов записывают прошивки на карты, которые «расширяют» емкость карты - другими словами, они загружают прошивку, которая сообщает, что емкость карты намного больше, чем фактическое доступное хранилище. Тот факт, что это возможно в точке продажи, означает, что, скорее всего, механизм обновления не обеспечен.

В нашем выступлении на 30C3 мы сообщаем о наших выводах, посвященных исследованию конкретной марки микроконтроллеров, а именно Appotech и его предложений AX211 и AX215. Мы обнаруживаем простую последовательность «детонации», передаваемую по зарезервированным производителем командам (а именно, CMD63, за которыми следуют «A», «P», «P», «O»), которые переводят контроллер в режим загрузки прошивки. В этот момент карта примет следующие 512 байт и запустит ее как код.

FARO
источник
10
Из всех ответов этот, вероятно, наиболее близок к тому, о чем фактически спрашивал ОП.
Cort Ammon
11
Это было фантастическое чтение!
Гейб Краузе
@Twisty скопировал некоторые соответствующие части.
FarO
2
Я иду по кроличьей норе в мир архитектуры SD-карт.
Tejas Kale
38

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

Единственное, что вы можете сделать, это попытаться связаться с вашими поставщиками и попросить их таблицу данных; могут быть некоторые (специфичные для поставщика) способы получения состояния их алгоритма выравнивания износа. Это потенциально позволит вам запрашивать состояние / использование базовой флэш-памяти. Или вам может не повезти, а этого может и не быть.

Если ваша цель на самом деле уничтожить флэш-память, все, что вы можете сделать, это запустить массивные циклы чтения и записи и постоянно проверять, чтобы данные, которые вы читаете, все еще были согласованными. Например, создайте два больших файла, сохраните их контрольные суммы и прочитайте / запишите их, чтобы проверить их контрольную сумму. Чем больше вспышка, тем дольше будет длиться этот процесс.

АМО-ej1
источник
2
Разве это не будет работать, если SD-карта полностью заполнена данными, так что она не может переназначить много? Я не думаю, что у них есть много свободных скрытых секторов.
Руслан
2
@Ruslan Устройство не должно знать, заполнен ли сектор чем-либо. Нужно только знать содержимое каких секторов для доставки по запросу и каких секторов для записи по запросу. И затем может появиться некоторый уровень абстракции, который заставит его использовать другую физическую память для представления этих секторов в соответствии с каким-то нераскрытым алгоритмом ... - И, конечно, «полный» означает только «пороговое значение для достижимых блоков, которые можно заполнить»
Александр Косубек
6
@Ruslan: Даже если на устройстве есть данные, выравнивание износа все еще может быть эффективным: например, если сектор A был записан один раз, а сектор B был записан 1000 раз, то когда приходит еще одна запись для В секторе B карта может поменять местами данные для двух секторов, так что сектор A содержит данные сектора B (и, вероятно, будет перезаписываться много раз - но это нормально, потому что он свежий), а сектор B будет содержать данные сектора A (который будет надеюсь не сильно изменится). Очевидно, что устройство также должно хранить отображение того, какой сектор хранится где.
psmears
2
@GabeKrause да, это природа зверя. На самом низком уровне у вас есть либо nand, либо ни flash-чипы (сейчас все используют nand), а перед nand-чипом установлен интеллектуальный контроллер, который завершает шину (например, usb для флешки или mmc для sd-карты ), и этот чип отвечает за отображение / выравнивание износа и т. д., он отвлекает вспышку от вас. Если вы будете использовать nand во встроенном Linux, это то, что, например, ubifs сделает для вас.
amo-ej1
2
Карты SD имеют микроконтроллер, который реализует «слой трансляции Flash» - запросы блоков преобразуются этим микроконтроллером в необработанные команды NAND. Некоторые SD-карты имеют скрытые команды для изменения / обновления микропрограммного обеспечения MCU, и на нем даже предпринимаются некоторые попытки обратного инжиниринга. Большинство флэш-устройств хранения данных, кроме необработанного NAND (которое может появляться в некоторых случаях, например, на многих домашних маршрутизаторах), вероятно, имеют «избыточное выделение» - это означает, что ваша SD-карта объемом 1 ГБ, вероятно, имеет что-то вроде 1024 МБ + 128 МБ свободного пространства NAND, чтобы покрыть выравнивание износа при заполнении а также щадящий сектор для плохих флеш-страниц.
LawrenceC
31

Вы можете увеличить износ транзистора, увеличив рабочую температуру. Используйте циклы записи-стирания на нагретом чипе (70-120 ° C); это будет носить быстрее.

Павлуш
источник
18
Чрезмерная температура хранения также наносит ущерб, поэтому может быть более практичным «готовить» чип при температуре 120 ° C (или даже больше) в течение некоторого времени, а затем проверять наличие дефектов.
Дмитрий Григорьев
2
Небольшое перенапряжение на питании карты также может быть возможным, и аналогичным образом потребуются эксперименты.
Крис Х
Недостаточное напряжение также может вызвать различные виды неисправностей, например, блокировки контроллера.
user20574
17

Предисловие: этот параметр требует дополнительных программных и аппаратных модификаций, но он позволяет осуществлять контролируемое чтение, наиболее вероятно, прозрачное для хоста.

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

Эрик Джонсон
источник
3
Большинство высокоскоростных устройств (включая устройства чтения карт ПК) просто откажутся работать с картой, которая не поддерживает четырехбитную SD-карту.
Дмитрий Григорьев
1
ОП сказал, что это была встроенная система, которая будет использовать карту, что
Эрик Джонсон,
3
Вариант на эту, но более сложную работу, будет найти SD-карту, для которой вы можете перепрошить прошивку .
Питер Тейлор
2
Это супер интересно! Наша встроенная система выполняет ввод-вывод через SPI. Я не уверен, есть ли у меня пропускная способность для модификации нашего оборудования, чтобы выполнить такое добавление, но я думаю, что это блестящее мышление.
Гейб Краузе
2
Получение информации о динамическом выравнивании износа заставляет меня верить, что стратегически создать «плохую» SD-карту с известными плохими секторами гораздо сложнее (или невозможно), чем я надеялся, задавая вопрос. Хотя в настоящее время это выходит за рамки моих возможностей, это наиболее контролируемый и технически многообещающий подход, за которым, возможно, следует @Olafm. Настройка промежуточного оборудования для перехвата и «повреждения» данных в любом заранее определенном месте сектора во время передачи данных кажется хорошим подходом.
Гейб Краузе
15

Я пошел бы на ebay / aliexpress и купил бы самую дешевую SD-карту, которую я могу найти из Китая, ту, которая "слишком хороша, чтобы быть правдой". Они часто поставляются с неисправными секторами или имеют в программном обеспечении гораздо больше, чем есть на самом деле. В любом случае, вы должны получить неисправную SD-карту для тестирования.

GuzZzt
источник
Интересный подход, но как бы вы записали в плохие области, чтобы проверить влияние плохих блоков на хранимый код?
fixer1234
@ fixer1234, у меня была одна из этих SD-карт, которая сказала, что это было 32 ГБ, но на самом деле это было только 128 МБ. Я поместил его в свою камеру и мог делать фотографии, превышающие 128 МБ, но только первые фотографии можно было прочитать обратно. Остальные были перечислены, но были прочитаны как сломанные. Думаю, именно так они хотят, чтобы вы сначала заметили проблемы с картой, когда уже слишком поздно жаловаться ...
GuzZzt
11

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

В итоге я приобрел SD-карту идентичного бренда и размера и написал свою собственную утилиту для восстановления и восстановления необработанных данных, чтобы скопировать данные с плохой карты на хорошую. Каждый раз, когда утилита попадает в неисправный сектор, она несколько раз повторяет попытку, прежде чем записать все нули для этого сектора, и вместо того, чтобы сдаваться и останавливаться, игнорирует сбой и переходит к следующему сектору. Попытки повторных попыток были предприняты, так как я также заметил, что в некоторых секторах показатель успешности чтения все еще составляет около 40%. Как только данные были на новой SD-карте, инструменты восстановления, которые ранее не работали, работали безупречно с минимальной потерей / повреждением данных. В целом, около 98% всех файлов были восстановлены. Ряд ранее удаленных элементов также был восстановлен, потому что на самом деле ничего не удалялось - просто помечалось как таковое и медленно перезаписывалось. То, что начиналось как немного скучное занятие по восстановлению данных, стало одним из моих самых запоминающихся и интересных личных проектов по разработке программного обеспечения. Если вам было интересно, мать была в восторге.

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

Вы также можете спросить в некоторых местах восстановления данных в вашем районе. Поскольку они специализируются на восстановлении данных с различных отказавших или вышедших из строя устройств, они должны иметь некоторые полезные входные данные / подсказки и могут даже иметь в руках несколько предварительно отобранных SD-карт (например, в учебных целях), которые вы могли бы получить от них.

CubicleSoft
источник
2
Вы выпустили эту утилиту онлайн? Это было бы здорово добавить в мой арсенал.
Ploni
1
На данный момент он, вероятно, даже не будет работать должным образом, учитывая прогресс технологии (может даже не компилироваться) и системные вызовы низкого уровня, которые я использовал. Существует также пара современных инструментов клонирования криминалистических устройств и накопителей с открытым исходным кодом, которые я бы предпочел использовать в первую очередь, чем пытаться вытащить свое старое программное обеспечение из нафталиновых шариков.
CubicleSoft
Я ожидаю, что вы, вероятно, можете просто дать некоторые параметры, чтобы ddзаставить его вести себя аналогично этому, в настоящее время. Я не уверен, хотя.
wizzwizz4
@ wizzwizz4, посмотрите на ddrescue.
hildred
«Кроме того, инструменты судебной экспертизы тогда стоили целое состояние». Я уверен, что они все еще делают.
jpmc26
5

Этот ответ является дополнением к комментарию @Ruslan

  1. Заполните SD-карту примерно до 99,9%
  2. Постоянно переписывать содержимое оставшихся 0,1% (Записать A-удалить-записать B-delete - Записать A ...)
  3. Проверьте (периодически), если вы уже сломали карту

Возможная альтернатива:

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

Деннис Джаэруддин
источник
6
Заполнение карты до 99% не поможет, так как основная цель выравнивания износа состоит в том, чтобы предотвратить именно этот вид преждевременного повреждения. Физическое повреждение карты почти наверняка приведет к тому, что карта больше не будет инициализироваться.
Дмитрий Григорьев
2
@DmitryGrigoryev Как может помочь выравнивание при ношении одежды (в данном случае, помеха), если у карты гораздо больше памяти, чем у ее официальной емкости?
Испиро
12
@ispiro Например, в следующий раз, когда сектор с большим количеством записей будет перезаписан, его содержимое может поменяться с сектором с низким количеством записей.
Дмитрий Григорьев
1
@DmitryGrigoryev Если я правильно интерпретирую этот ответ, должны быть SD-карты, которые не носят lvling: electronics.stackexchange.com/a/27626/16104
Деннис Джаэруддин
1
@DennisJaheruddin Да, старшая карта не делает этого. с этими картами достаточно многократно создавать / удалять пустой файл, пока не изнашивается сектор в таблице размещения.
Дмитрий Григорьев
3

Вы можете попробовать ввести нестабильный источник питания или сигнализацию более высокого напряжения.

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

PCARR
источник
3

Некоторые старые SD-карты малой емкости (16 МБ) используют флэш-чипы в пакетах в стиле TSOP / TSSOP. Мастерская, способная к доработке SMT (если вы выполняете встроенную работу, возможно, у вас есть этот навык, в противном случае проверьте, есть ли небольшие компании, занимающиеся ремонтом телефона / ноутбука на уровне платы), можно было бы отделить и заново прикрепить этот чип, чтобы его можно было читать и записывать raw (включая коды ECC) с программатором устройства.

Тем не менее, имейте в виду, что вы будете в основном тестировать:

  • Как ваше устройство будет обрабатывать возможные временные аберрации / икоты, вызванные внутренним исправлением ошибок

и в худшем случае

  • как ваше устройство обрабатывает окончательно сбойную SD-карту.

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

rackandboneman
источник
SD-карты с окончательным выходом из строя не создают «электрических помех», они просто возвращают коды ошибок для операций записи.
Дмитрий Григорьев
2

Относительно ответа OlafM, но другого: вы можете запрограммировать собственный микроконтроллер так, чтобы он говорил по протоколу SD-карты, а затем эмулировать любое поведение, которое вам нужно.

Р..
источник
1

Область основной загрузочной записи FAT32, вероятно, наиболее подвержена злоупотреблениям, поскольку на логическом уровне она всегда должна находиться в одном и том же месте. (Возможно, это происходит с помощью мягкого переназначения плохих секторов, но я несколько скептически отношусь к тому, что это реализовано на всех аппаратных средствах.) Таким образом, вы можете запустить sfdiskцикл и посмотреть, сможете ли вы разрушить его таким образом.

Но я попрошу вас сделать все возможное для повышения надежности оборудования, вместо того, чтобы пытаться работать с плохим оборудованием в программном обеспечении. Проблема в том, что SD-карты выходят из строя разными способами. Они становятся нечитаемыми, они перезаписываются, дают неверные данные, они истекают во время операций и т. Д. Попытка предсказать все возможные ошибки карты очень трудна.

Вот одна из моих любимых ошибок, «режим больших данных»:

Bad SD поддельные большие данные

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

Ваша первая линия защиты - использовать съемную деталь eMMC с реальной таблицей данных от известного производителя вместо съемной SD-карты. Да, они стоят больше за ГБ, но часть будет в производстве в течение более длительного периода времени, и, по крайней мере, вы знаете, что вы получаете. Припайка детали также позволяет избежать целого ряда потенциальных проблем (срыв карт во время записи, плохой электрический контакт и т. Д.) Со съемной картой.

Если вашему продукту требуется съемное хранилище или уже слишком поздно что-либо менять, подумайте о том, чтобы потратить дополнительные деньги на карты «промышленного» класса или относиться к ним как к одноразовым предметам. Что мы делаем (под linux) - fsckэто карта при загрузке и переформатируем ее, если сообщается о каких-либо ошибках, так как переформатирование приемлемо в этом случае использования. Тогда мы fsckэто снова. Если после переформатирования он все еще сообщает об ошибках, мы отправляем его в RMA и заменяем аппаратное обеспечение более новым вариантом, использующим eMMC.

Удачи!

Роберт Калхун
источник
Я дал вам большие пальцы. Я пользуюсь SD-картами много раз, и у меня одна выходит из строя пару раз в год. Я никогда не задумывался об этом, но на собственном опыте у моих провалившихся карт были признаки провала FAT до того, как они в конце концов стали бесполезными. Я думаю, что вы кое-что здесь :) Так что простое создание и удаление файлов должно работать с FAT.
jwzumwalt
1

Возможно, это не то направление, которое вы хотели, но я обнаружил, что удаление моей SD-карты во время чтения с нее радио или ноутбука гарантирует сбой SD-карты примерно в 1/5 или 1/10 раз. Кажется, что карты плохо справляются с отключением питания во время чтения и предположительно записи. После прочтения комментариев Роберта Кэлхуна ниже, это заставляет меня думать, что это может повредить FAT. Хотя я не знаю, почему простое чтение приводит к сбою - не должно быть никаких записей?

jwzumwalt
источник
это может повредить ФС, но не уверен, что на самом деле это создаст плохие сектора
akostadinov
Я могу с уверенностью сказать, что это приводит к поломке карты и требует повторного форматирования. Я делал это много раз с SD-картами, малиновым пирогом, ноутбуком и несколькими домашними устройствами.
jwzumwalt
2
Требуется переформатировать! = Наносит ущерб секторам . Файловая система, да. Секторы, может быть.
wizzwizz4
1

Если ваша SD-карта отформатирована в FAT32, вы можете отредактировать 2 жира в шестнадцатеричном формате и пометить сектор как плохой с правильным шестнадцатеричным кодом. Это всего лишь хитрость, если вы хотите провести логическое тестирование программного обеспечения, которое должно найти плохой сектор в этом конкретном месте; это также не повредит вашей SD-карте, переформатирование вернет ее в нормальное состояние.

Эмиль Де Фавас
источник
1
Добро пожаловать в Супер пользователя! Это кажется интересным подходом - не могли бы вы объяснить, как конкретно выполнять шестнадцатеричное редактирование? Благодарю.
Бен N
Я думаю, что команда Linux hdparm добьется цели: она позволит вам сохранить какой-то сектор, который вы сможете позже отредактировать, а затем записать обратно на свою карту. вам нужно найти документацию по vfat и man hdparm. Извините, я не близко к компьютеру с Windows.
Эмиль Де Фавас
--make-bad-sectorФлаг выглядит многообещающим! Тем не менее, я не могу сказать, будет ли это работать только в системе Linux, которая изначально запускает эту команду. Я надеюсь, что команда hdparm --make-bad-sector 20000 /dev/sd#каким-то образом сделает сектор 20000 плохим и будет обнаружен как плохой на моем встроенном аппаратном устройстве, на котором не работает Linux. есть идеи?
Гейб Краузе
0

Интересно, можно ли создать скрипт Linux badblocks для повторного выполнения своего разрушительного теста в одном секторе в течение нескольких часов.

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

Но вы можете легко работать badblocks -wв цикле, пока не появятся некоторые плохие блоки. Примерно так должно работать:

while badblocks -w /dev/xx; do :; done

при условии, что badblocks возвращает 0, если не было обнаружено плохих блоков, и ≠ 0 в противном случае (на странице руководства ничего не сказано, а я не проверял исходный код).

Тобия
источник
-1

Обычно с SD / USB-картами они осуществляют выравнивание износа, так что это может быть довольно сложно. В зависимости от типа (однослойная ячейка, многослойность, TLC, 3D-NAND и т. Д.) Цикл записи, необходимый для его прерывания настолько, чтобы исчерпать пул секторов, может составлять несколько ТБ.

Я действительно тестировал это с 4 ГБ, 64 ГБ и 256 ГБ Pro Duo, SSD и флэш-накопителем, 64 ГБ K --- s --- с использованием 4-микронных микросхем 16 ГБ работало около 3,84 ТБ, прежде чем он потерпел неудачу с единственной мягкой ошибкой в ​​области FAT , Использование 256 ГБ длилось немного меньше, но, по оценкам, без прямого доступа к микросхеме оно, вероятно, записало около 5 ТБ, прежде чем оно окончательно выдало с повреждением MBR, но неясно, вызвал ли контроллер его исправную работу в режиме USB3, но у USB2 было больше глюков во время чтения и это также побежал очень жарко. При копировании данных в считывателе произошел сбой 4 ГБ Duo, опять же, я не уверен, что соответствует 6 годам использования, и камера также показала сообщения «Восстановление». Случайно изменяющееся напряжение питания во время записи заставит его работать намного быстрее. Мой microSD объемом 128 ГБ вышел из строя примерно через 2 года использования с похожими симптомами,

Убраны неактуальные заметки о рентгеновских экспериментах.

головоломка
источник
1
Уже есть несколько ответов, помогающих уничтожить конкретных ректоров. Ваше предложение об уничтожении случайных не дает ничего лишнего.
Матэ Юхас