Flashnul — утилита для проверки flash-дисков

1. Предисловие

Flashnul — утилита по проверки работоспособности и обслуживанию Flash-памяти (USB-Flash, IDE-Flash, SecureDigital, MMC,MemoryStik, SmartMedia, XD, CompactFlash и т.д.). Список выполняемых операций:

  • Тест чтения — проверка доступности каждого сектора носителя (дублирует функциональность обычных HDD-тестов)
  • Тест записи — проверка возможности записи каждого сектора носителя (дублирует функциональность большинства HDD-тестов)
  • Тест сохранности записанной информации — проверка соответствия записанной и прочитанной информации (аналогично функциональности memtest, но в отношении flash-накопителей).
  • Недеструктивная проверка чтения/записи позволяет проверить доступность на запись каждого сектора устройства, не теряя записанные данные (после проверки блока данные, содержащиеся в этом блоке, записываются обратно)
  • Сохранение образа содержимого устройства — посекторное сохранение всего (или части) содержимого в файл. (аналогично функциональности dd из UNIX).
  • Загрузка образа в устройство — посекторная запись образа в устройство (аналогично функциональности dd из UNIX).

Все тесты выполняются на уровне абстракции блочных устройств и могут применяться по отношению и к другим типам носителей (floppy, HDD, CD, etc).

Пример найденой ошибки (png, 9 kb)

2. СИСТЕМНЫЕ ТРЕБОВАНИЯ

  • NT-based операционная система (windows 2000, XP, 2003, возможно NT4, наверное, Vista).
  • любой процессор на котором работает windows
  • 1Мб свободной оперативной памяти.
  • для полноценной работы программы требуются права локального администратора (внимание пользователям Vista!).

ОПИСАНИЕ РАБОТЫ

Flashnul

утилита для очистки и диагностики сменных носителей.

version 1.0 rc2 (0.995)


!

ПРОГРАММА СОДЕРЖИТ В СЕБЕ ФУНКЦИИ, НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ КОТОРЫХ ПРИВОДИТ К НАРУШЕНИЮ РАБОТОСПОСОБНОСТИ ОПЕРАЦИОННОЙ СИСТЕМЫ, НЕОБРАТИМОМУ УНИЧТОЖЕНИЮ ДАННЫХ.

АВТОР НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВОЗМОЖНЫЕ СБОИ В РАБОТЕ ПРОГРАММЫ, ПОТЕРЮ ДАННЫХ И ПОРЧУ ОБОРУДОВАНИЯ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ ИЗ-ЗА ОШИБОК В ПРОГРАММЕ ИЛИ НЕКВАЛИФИЦИРОВАННЫХ ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЯ. ПОЛЬЗОВАТЕЛЬ ВОЛЕН ИСПОЛЬЗОВАТЬ ПРОГРАММУ НА СВОЙ СТРАХ И РИСК ИЛИ НЕ ИСПОЛЬЗОВАТЬ ВООБЩЕ.

КРАТКОЕ ОПИСАНИЕ

Flashnul — утилита по проверки работоспособности и обслуживанию Flash-памяти (USB-Flash, IDE-Flash, SecureDigital, MMC,MemoryStick, SmartMedia, XD, CompactFlash и т.д.). Список выполняемых операций:

  • Тест чтения — проверка доступности каждого сектора носителя (дублирует функциональность обычных HDD-тестов)
  • Тест записи — проверка возможности записи каждого сектора носителя (дублирует функциональность большинства HDD-тестов)
  • Тест сохранности записанной информации — проверка соответствия записанной и прочитанной информации (аналогично функциональности memtest, но в отношении flash-накопителей).
  • Недеструктивная проверка чтения/записи позволяет проверить доступность на запись каждого сектора устройства, не теряя записанные данные (после проверки блока данные, содержащиеся в этом блоке, записываются обратно)
  • Сохранение образа содержимого устройства — посекторное сохранение всего (или части) содержимого в файл. (аналогично функциональности dd из UNIX).
  • Загрузка образа в устройство — посекторная запись образа в устройство (аналогично функциональности dd из UNIX).

Все тесты выполняются на уровне абстракции блочных устройств и могут применяться по отношению и к другим типам носителей (floppy, HDD, CD, etc).

Немного лирики

Сменные носители на базе flash-памяти (такие как usb-flash drives, SD, MMC, MS,XD, MD, CompactFlash, IDE-flash etc) в силу ряда особенностей (hot-plug подключение, воздействие статики, влаги, температуры, механических воздействий при траспортировке, естественный износ из-за ограниченного числа циклов чтения/записи) относительно часто выходят из строя (хотя и реже жёстких дисков)

Простые дефекты вроде «не определяется», «ошибки записи» обнаруживаются относительно легко без использования специализированного ПО, но диагностика более сложных дефектов представляет из себя весьма нетривиальную задачу.

Обычные HDD-тесты в проверке устройств целиком полагаются на контроллер устройства в определении правильности считывания. Либо сектор не читается, либо он читается правильно. К сожалению, для Flash-носителей это не так, и относительно часты случаи, когда прочитанное не совпадает с записанным, или запись в один сектор повреждает другие сектора. Такие дефекты можно определить «полевыми испытаниями» — записью архивированных данных с последующей проверкой, некоторым периодом интенсивного чтения-записи файлов. Однако, такие «доморощенные» тесты не дают твёрдой уверенности в полной работоспособности устройства. Flashnul сначала создавался для служебных нужд (удобной и быстрой проверки работы USB-flash устройств), но потом вырос до универсального теста.

Ближайшим аналогом flashnul является memtest, проверяющий работу оперативной памяти. В какой-то степени flash-память больше похожа (по дефектам) на обычную оперативную память, чем на жёсткий диск.

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

Flashnul — это средство диагностики, а не лечения устройств, если тест говорит, что устройство работает некорректно, значит, оно работает некорректно.

Простить сделать так, чтобы flashnul «вылечил» флешку всё равно, что просить, чтобы memtest «вылечил» битую память.

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

Выполнение операций

Для выполнения операций в командной строке следует указать диск, для которого должна выполняться операция и название самой операции. Если операция не будет указана (будет указан только диск), то будет после выведения информации о диске программа завершит свою работу.

Указание диска

Существует два основных метода указания диска:

  1. По номеру физического диска (соответствует номеру в списке физических устройств)
    например, flashnul 2, flashnul 3, flashnul 0.
  2. По букве логического диска (список доступных букв выводится в списке логических дисков, регистр буквы роли не играет.)
    например, flashnul a:, flashnul d:, flashnul E:

Помимо основных методов есть возможность указать путь к устройству в UNC форме или в форме hadware enumerator. (Эти методы не нужны при обычном использовании программы).
примеры:

  1. \\.\PhysicalDrive0
  2. \\?\ide#diskst310211a_______________________________6.55____#4436314248563752202020202020202020202020#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Информация о диске

запуск c именем (номером диска) без параметров показывает информацию об устройстве в стиле:

Disk PhysicalDrive2 (UNC name: \\.\PhysicalDrive2)
------------------------------------------------------------[Drive geometry]--
Cylinders/heads/sectors  = 63/255/63
Bytes per sector         = 512
CHS size                 = 518192640 (494 Mb)
---------------------------------------------------------------[Device size]--
Device size              = 524288000 (500 Mb)
delta to near power of 2 = 12582912 (12 Mb), 2%
Surplus size             = 6095360 (5952 kb)
-----------------------------------------------[Adapter & Device properties]--
Bus type                 = (7) USB
Removable device         = Yes
Command Queue            = Unsupported
Device vendor            = Pretec
Device name              = i-Disk
Revision                 = 2.00
--------------------------------------------------------------[Hotplug info]--
Device hotplug           = Yes
Media hotplug            = No

[Drive geometry] — информация о размере диска в факторизации по количеству цилиндров, треков, секторов, количеству байт в секторе (CHS-адресация). Для современных устройств это скорее условность, чем настоящий размер. Выводимая информация:

  • Cylinders — количество цилиндров
  • Heads — количество головок (треков на цилиндре)
  • Sectors — количество секторов на треке
  • Bytes per sector — количество байтов в секторе
  • CHS size — результат перемножения первых четырёх величин, т.н. размер диска в CHS-адресации (обычно чуть меньше настоящего размера устройства).

[Free Space] — свободное/занятое пространство на диске (разделе). Информация имеет смысл только для форматированного раздела. В силу особенностей программы эта информация доступна только при открытии диска с общим доступом на запись (по-умолчанию отключен, включается опцией --write-share). Выводимая информация:

  • Total space — общий доступный объём раздела (эта величина меньше размера устройства, так как объём диска, занятый служебной информацией о файловой системе в эту величину не включается).
  • Free space — объём свободного места на разделе (всего).
  • Avaible space — объём доступного места на разделе (в большинстве случаев совпадает с Free space и не выводится, может отличаться, если включены дисковые квоты).

[Device size] — размер устройства. В случае работы с физическими дисками эти величины показывают данные относительно размера устройства, в случае с (несколькими) логическими дисками на устройстве эти величины показывают данные относительно диска, на котором раздел находится. Выводимая информация:

  • Device size — размер устройства
  • delta to near power or 2 — «расстояние» до ближайшей степени двойки. Значение порядка 1-2% от объёма диска нормально, величины больше 10% (т.е. 12Мб для 128, 100Мб для 1Гб) свидетельствуют об уменьшении ёмкости накопителя (обычно происходит при отключении контроллером повреждённых областей). Для жёстких дисков эта строка не имеет смысла.
  • Surplus size — разница между фактическим размером устройства и размером в CHS-адресации.

[Adapter & Device properties] — данные об устройстве и шине подключения. (та информация, которая недоступна просто не выводится, например, для многих устройств отсутствуют данные о ревизии). Выводимая информация:

  • Bus type — интерфейс подключения (SCSI, ATAPI, ATA, IEEE1394, SSA, FIBRE, USB, RAID, ISCSI, SAS, SATA) и его числовой код.
  • Removable device — сменное или несменное устройство (физически)
  • Command Queue — поддержка очереди команд (NCQ, TCQ, и т.д.)
  • Device Vendor — производитель устройства (строка, которая отдаётся самим устройством, может быть произвольной или отсутствовать вообще)
  • Device Name — название устройства (аналогично — произвольная строка)
  • Revision — ревизия устройства
  • Device serial — декодированный серийный номер устройства, может отсутствовать во многих устройствах

[Hotplug info] — информация о «горячем» подключении. Доступна только при работе в Windows XP или старше (не поддерживается в Windows 2000/NT). Выводимая информация:

  • Device hotplug — является ли устройство заменяемым «на ходу». Для большинства USB-устройств это так, однако если в настройках устройства включено кеширование записи, устройство считается НЕ поддерживающим отключение на ходу.
  • Media hotplug — поддерживает ли носитель в устройстве (в основном касается картридеров) горячее отключение (для USB-Flash тут обычно пишется No, потому что отключается не носитель информации, а всё устройство; для CD/DVD дисков это тоже обычно «No» по непонятным мне причинам).
Указание операции

За один вызов можно выполнить не более одной операции. Имя операции указывается или в полном, или в сокращённом виде. Полное имя начинается с --, сокращённое с -.

Короткое имя

Длинное имя

Описание

Пример вызова

-R

—read

Тест чтения.

flashnul 0 -R

-T

—test

Стандартный тест записи/чтения (уничтожает информацию на устройстве)

flashnul 2 -T

-Q

—quick

Быстрый тест чтения/записи (относительно безопасен)

flashnul f: -Q

-F

—fill

Заполняет все сектора указанным байтом (затирает). По-умолчанию затирает нулём

flashnul z: -F

flashnul z: -F=5

-I

—incremental

Запуск специфичного инкрементального теста (для проверки на ошибки контроллера). Уничтожает информацию на устройстве.

flashnul x: -I -V=2

-B

—blank

Стирает первый сектор на устройстве

flashnul y: -B

-S

—save

Сохраняет образ устройства в файл (имя файла указывается после опции)

flashnul D: -S c:\image

-L

—load

Загружает файл (образ) в устройство

flashnul D: -L c:\image

Модификаторы

Поведение многих опций может быть изменено с помощью опций-модификаторов. Они могут указываться как отдельно, так и рядом с опцией выбора операции (-T -P эквивалентно -TP).

Короткое имя

Длинное имя

Описание

Пример вызова

-V

—verify

Режим проверки записи (0,1,2,3)

flashnul 2 -F -V=3

-P

—no-prompt

Отключить запрос на деструктивные операции (осторожно!)

flashnul 2 -TP

-i

—ignore-errors

Не останавливаться после первой ошибки

flashnul -S c:\image -i

-c

—cycle

Количество циклов тестирования

flashnul 2 -T -c=3

-b

—block-size

Размер блока в операциях чтения/записи

flashnul G: -F -b=512

-r

—range

диапазон, в котором проводятся операции. Принимает 1 или 2 числа, если числа нет, предполагается «от начала» (или «до конца»).

flashnul -F -r=512;1024

-m

—mode

для -I опции указывает режим тестирования (0 — инкрементальная запись, 1 — шахматная)

flashnul 4 -I -m=1 -c=10

-k

—disable-key

выключает запрос [Enter] в конце теста

flashnul K: -FTk

-d

—delay

Интервал времени (в сек.) перед началом второго теста чтения в режимах тестирования -T и -I.

flashnul J: -T -d=3600

—write-share

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

flashnul C: --write-share -F

—ignore-block

Игнорировать блокировки из конфигурационного файла.

Результаты тестирования

По завершении работы выводится результат:

----------------------------------------------------------[Operation result]--
passes:                 1
errors:                 0
read bytes:             1048576000 (1000 Mb)
avg. read speed:        5361130 (5235 kb/s)
max/min read speed:     7744769 (7563 kb/s) / 626065 (611 kb/s)
write bytes:            524288000 (500 Mb)
avg. write speed:       4652118 (4543 kb/s)
max/min write speed:    7845525 (7661 kb/s) / 679353 (663 kb/s)
  • passes — количество проходов (если 0 — тестирование не завершено)
  • errors — количеcтво найденых ошибок, если число отлично от нуля — дефект устройства (или устройство отключили во время теста).
  • read bytes — количество прочитанных байтов, если циклов больше 1 или включен режим -V=3, то это число будет больше размеров устройства.
  • avg. read speed — средняя скорость чтения (прочитанных байт/время чтения)
  • max/min read speed — максимальная/минимальная скорость чтения (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)
  • write bytes — количество записанных байтов, если циклов больше 1, то это число будет больше размеров устройства.
  • avg. write speed — средняя скорость записи (записанных байт/время записи)
  • max/min write speed — максимальная/минимальная скорость записи (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)

Подробное описание режимов работы

Режим -B (—blank)

В данном режиме затирается нулевой сектор устройства или диска, проверяется его читаемость, проверяется правильность записанного. Данный тест предназначен для:

  • быстрого удаления таблицы разделов
  • быстрой проверки на доступность устройства

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

Примеры вызова

flashnul 1 -B

Стирает загрузочный сектор на втором физическом диске.

flashnul f: -B -P или flashnul f: -BP

Стирает загрузочный сектор на диске F: без подтверждения операции (осторожно!)

flashnul g: -B -P -k или flashnul g: -BPk

Стирает загрузочный сектор на диске G: без подтверждения, с автозавершением приложения.

Режим -F (—fill)

В данном режиме осуществляется заполнение устройства указанным байтом (по-умолчанию нулём). Опция, указывающая этот режим может принимать числовой параметр от 0 до 255 — байт заполнения. Опция —range может изменять область заполнения (по-умолчанию всё устройство).

Данный тест предназначен для:

  • Уничтожения информации на носителе (необратимо!)
  • Проверки на запись, правильность записи (не очень надёжно, есть режим -I)
  • Запись определённого сектора определённым значением
  • Измерения линейной скорости записи на устройство
Примера вызова

flashnul 3 -F

Заполнить нулями четвёртое физическое устройство. (осторожно! Информацию восстановить будет невозможно!)

flashnul 5 -F=200

Заполнить шестое физическое устройство байтом 200 (0xC8)

flashnul e: -F --range=0;2048 -P

Заполнить на диске E: нулём байты с нулевого по 2048ой.

flashnul h: -F=255 -V=3 -P -k

Записать числом 255 (0xFF) устройство H:, произвести двойную проверку записи (см описание —verify), без подтверждения, по завершению операции закрыть приложение.

-I —incremental

Данный тест предназначен для полного тестирования устройства (это основной режим тестирования). В сектора устройста записывается последовательность байтов, зависящая от номера устройства. Этот режим позволяет контролировать правильность записи, отсутствие влияния записи в один сектор на содержимое другого сектора. Существуют два режима для данного теста, режим -m=0 (по-умолчанию) и -m=1.

Тест -m=0

тест -I -m=0 (или просто -I) осуществляет запись возрастающей последовательности. Это позволяет обнаружить ошибки «промаха» в записи, появляющийся у некоторых контроллеров.

тест -I -m=1 осуществляет запись «шахматки» (комбинацию 0xFF, 0x0). Это, фактически, самый простой тест для выявления ошибок записи. Он задан в виде готовой опции -T (которая равна -I -m=1 -V=3)

Примеры вызова

flashnul -I D: -V=3

Выполнить инкрементальную проверку для диска D:, осуществить двойную проверку на чтение (см. —verify)

flashnul 1 -I -m=1 -V=3 -c=10 -d=10 -P -k -i

Выполнить десять циклов (-c=10) проверки второго физического устройства в режиме 1, игнорируя ошибки (-i), без подтверждения выполнения операции, с завершением программы по окончании теста.

flashnul -I 3 -r=512;1024

Записать 512 байт со смещения 512 последовательностью на физическом устройстве 3

-R, —read

Данный тест осуществляет проверку читаемости устройства (эта операция безопасна), используется для простейшей проверки работоспособности устройства, измерения скорости записи.

Примеры вызова

flashnul C: -R

Проверка чтения для диска C:

flashnul D: -R -r=1024;2048

Проверка читаемости секторов со смещения 1024 до смещения 2048 на диске D:

-S, —save

Сохараняет образ устройства в файл, имя файла должно быть указано после параметра (например, -S c:\image). Содержимое устройства не меняется, операция безопасна. Можно использовать символ ‘-‘ (дефис) для указания stdout. Существует ряд ограничений на работу с файлами образов:

  • Файл образа никогда не может быть перезаписан, если файл образа существует (даже нулевого размера), выполнение функции будет прервано.
  • При первой же ошибке ввода/вывода с файлом (не с образом устройства), вне зависимости от опции -i (—ignore), выполнение функции будет прервано.

Другими словами, образ всегда должен находиться на рабочем устройстве.

Примеры

flashnul f: -S e:\backup.img

Сохранить образ диска F: в файл e:\backup.img

flashnul D: -S - -r=0;2048

Скопировать первые 2048 байт диска D: и вывести их в stdout (2048 байт — размер сектора на CD).

flashnul 2 -S saveimage -i

Скопировать с третьего устройства содержимое в файл saveimage игнорируя ошибки чтения с устройства (ошибка записи в файл завершит работу программы).

flashnul 2 -S - |gzip -c -9>c:\image.gz

Сохранить образ третьего устройства в архивном файле image.gz (используется утилита gzip).

-L, —load

Загружает содержимое файла в устройство, затирая старое его содержимое. (Обратная к -L). Эта операция необратимо уничтожает содержимое устройства. Обязательный параметр — имя существующего файла или ‘-‘ для указания stdin. Опция -i (игнорировать ошибки) относится только к файловым операциям с диском, но не с файлом (при первой же ошибке работа программы будет остановлена).

примеры использования

flashnul A -L c:\floppy.img

Загрузить образ на диск А (дискету).

cat c:\image.gz | gzip -d |flashnul 2 -L -

Загрузить в третье устройство образ (разархивировав).

flashnul 5 -L c:\myfile -r=2048

Загрузить содержимое файла в шестое устройство со смещения 2048.

-T —test

Фактически, режим тестирования -T, это объединение стандартных настроек для -I (-T == -I -V=3 -c=2 -d=10 -m=1). Этот режим — наиболее часто вызываемый режим тестирования.

Пример вызова

flashnul Z: -T

Запуск тестирования устройства Z:

-Q —quick

Режим быстрого тестирования устройства. Суть теста: проверяются на чтение и запись первые 512 байт из каждых 64к устройства. Так как флеш-память выходит из строя обычно крупными блоками, такая проверка находит большинство сбоев. (Однако, прохождение быстрого теста не говорит о работоспособности, для уверенности в работоспособности нужно выполнить несколько проходов полного теста).

Данный тест не должен повреждать данные (т.к. исходные данные пишутся обратно), но в определённых случаях на сбойных устройствах запись на диск может быть прервана, и данные будут повреждены. Режим -V (проверки) для данного теста не учитывается.

Пример вызова

flashnul F: -Q

-U —update

Это недеструктивный тест записи. Его алгоритм — блок данных читается с устройства в память и пишется обратно. Данный тест не позволяет выявить сложные ошибки (вроде порчи данных), но позволяет проверить каждый сектор на доступность чтения/записи. Т.к. во время теста осуществляется запись на устройство, отключать его категорически нельзя — данные могут быть повреждены. Так же, в случае если флешка «умирает», может произойти ошибка записи и данные так же будут повржедены. Так же, если диск открыт в режиме «общего доступа на запись» (WRITE_SHARE), возможны ошибки из-за одновременной записи в одинаковые блоки.

Пример вызова

flashnul Z: -U

Модификаторы

-V, —verify

Устанавливает режим проверки записи на устройство. В настоящий момент существуют 4 режима:

  • -V=0 (по-умолчанию) — не проводить проверку записи
  • -V=1 — читать и сравнивать прочитанное и записанное для каждого блока данных. В этом режиме поочерёдно блок сначала пишется, потом читается
  • -V=2 — читать и проверять записанное после завершения записи устройства. Сначала полностью выполняется вся запись, после чего осуществляется чтение и проверка совпадения прочитанного и записанного.
  • -V=3 — комбинация режимов 1 и 2. В этом режиме после записи каждого блока осуществляется чтение и проверка, и после завершения записи осуществляется ещё один проход чтения и проверки.

Для опции -S существует только один режим проверки (вне зависимости от режима, либо проверка выключена (-V=0), либо включена, любое другое число). При этом после записи каждого блока осуществляется его чтение и проверка.

Режим -V=3 является необходимым для выявления большинства ошибок с порчей данных на устройстве.

-i, —ignore-errors

Опция предназачена для пропуска ошибок при выполнении операций с устройством (по-умолчанию при возникновении ошибки работа программы завершается). (Замечание: игнорируются ТОЛЬКО ошибки работы с устройством, файловые ошибки работы с образами по-прежнему завершают программу).

—write-share

Опция для разрешения совместного доступа к устройству. По-умолчанию диск открывается без общего доступа на запись, и в ряде случаев Windows может запретить такой режим. Write-share позволит осуществить операцию и с заблокированными устройствами, однако, в этом режиме возможна ситуация одновременной записи на диск flashnul’ом и сторонней утилитой, что приведёт либо к ложному срабатыванию теста, либо к повреждению записанных данных.

-P, —no-prompt

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

-c, —cycle

Количество циклов операции. Имеет смысл только для -T, -F, -I режимов. Количество циклов указывается через пробел или знак «=». (Например, flashnul 3 -T -c 5)

-r, —range

Диапазон, в котором выполнять операцию. Может принимать одно или два значения, разделённые точкой с запятой (начало-конец). Величины — байты от начала устройства. Значения должны быть кратными размеру сектора.

-b, —block-size

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

-d, —delay

Задержка перед чтением записанного для режимов -V=2 и -V=3 в секундах.

Файл конфигурации

По-умолчанию flashnul читает файл конфигурации flashnul.conf, лежащий «рядом» с исполняемым файлом (в той же директории).

Структура файла

Каждая строка в файле — отдельная директива. Символ ‘#’ (октоторп) указывает на комментарий (весь текст за символом до конца строки считается комментарием).

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

Файл конфигурации имеет больший приоритет, чем командная строка (если парметр указан в командной строке и в файле используется значение из файла, кроме случаев, когда значения объединяются).

Список директив
  • verify — установить режим verify (см описание —verify), параметр указывается через ‘=’.
  • no-prompt — не выдавать запроса на деструктивные операции (ОСТОРОЖНО!), указывается без параметров.
  • ignore-errors — игнориорвать ошибки ввода/вывода с устройства (указывается без параметров).
  • cycle — количество циклов теста по-умолчанию (параметр — число)
  • block-size — размер блока ввода/вывода (число)
  • range — диапазон операций (число)
  • mode — режим для -I теста (число)
  • delay — задержка между записью и чтением (число, секунды)
  • disable-key — отключение нажатия [enter] в конце работы программы
  • write-share — включение общего доступа на запись (см описание —write-share), указывается без параметров.
  • block-vendor — блокировать запись по полю vendor (производитель), строки, разделённые точкой с запятой (;)
  • block-name — блокировать запись по полю device name (имя устройства), строки, разделённые точкой с запятой (;)
  • block-serial — блокировать запись по полю serial number (серийный номер), строки, разделённые точкой с запятой (;)
  • block-bus — блокировать запись по имени шины (UNKNOWN, SCSI, ATAPI, ATA, IEEE1394, SSA, FIBRE, USB, RAID, ISCSI, SAS, SATA), строки, разделённые точкой с запятой (;)
  • block-non-removable — блокировать запись на несменные устройства (указывается без параметров)
  • block-device — блокировать запись по любому полю (из вышеперечисленных), строки, разделённые точкой с запятой (;)
  • block-letter — блокировать запись на диск с указанной буквой (латинские буквы, разделённе точкой с запятой)
  • block-number — блокировать запись на физический диск с указанным номером. (числа, разделённе точкой с запятой)

Все опции block-* могут быть «подавлены» опцией командной строки --ignore-block

Тонкая настройка программы

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

  1. REFRESH_DELAY — частота обновления экрана во время выполнения операций (задаётся в милисекундах, интервал времени между обновлениями), значение по-умолчанию 100 (10 раз в секунду).
  2. LINE_LENGHT — размер строки при обновлении строки выполнения операций и заголовков секций (значение по-умолчанию 78).
  3. HOME_DIR_CONFIG — файл конфигурации следует искать в каталоге приложения, а не в текущем каталоге.
  4. CONFIG_FILE — имя конфигурационного файла. (по-умолчанию: flashnul.conf)

Исходный текст программы приведён в каталоге src. Для компиляции использовался gcc version 3.4.2 (mingw-special).

(с) George Shuklin, gs@shounen.ru, 2005-2008

http://shounen.ru/soft/flashnul/

Данная программа распространяется под лицензией GNU PUBLIC LICENCE, текст которой (на английском языке) приведён в файле copying.

Материалы по теме