-
Notifications
You must be signed in to change notification settings - Fork 6
/
readme.rus.html
590 lines (553 loc) · 33.9 KB
/
readme.rus.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
<html>
<head>
<style type=text/css>
body{padding:1em}
h1,h2,h3,h4{font-family:Tahoma}
h1{color:orange}
h2{color:green}
table{
margin:1em;
border:solid 2px #99E;
}
td{
padding:1ex;
border:solid 1px #99E;
}
.header{
background:#99E;
color:white;
font-weight:800;
text-align:center;
}
.ac{
color:#99E;
font-weight:800;
}
.screen{
font-family:monospace;
color:silver;
background:black;
width:80ex;
padding:1ex;
}
.note{
border: 1ex red solid;
padding: 1ex;
background:yellow;
}
.big_star{
float:left;
font-size:500%;
font-weight:800;
padding:0.5ex;
color:yellow;
background:red;
margin:0.5ex;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>
Flashnul - руководство пользователя
</title>
<meta name="Description" content="Руководство пользователя утилиты Flashnul">
<meta name="Author" content="George Shuklin">
<meta name="license" content="GNU FDL">
<meta name="keywords" content="flashnul, MMC, USB, Flash, XD, MS, SD, CF, Compact Flash, Memory Stick, Secure Digital, MultiMedia Card, проверка, диагностика, тестирование">
</head>
<body>
<h1>Flashnul</h1>
<h2>утилита для очистки и диагностики сменных носителей.</h2>
<p>version 1.0 rc1 (0.994)
<hr>
<div class=note>
<p class=big_star>!</p>
<p>ПРОГРАММА СОДЕРЖИТ В СЕБЕ ФУНКЦИИ, НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ КОТОРЫХ ПРИВОДИТ К
НАРУШЕНИЮ РАБОТОСПОСОБНОСТИ ОПЕРАЦИОННОЙ СИСТЕМЫ, НЕОБРАТИМОМУ УНИЧТОЖЕНИЮ ДАННЫХ.
<p>АВТОР НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВОЗМОЖНЫЕ СБОИ В РАБОТЕ ПРОГРАММЫ,
ПОТЕРЮ ДАННЫХ И ПОРЧУ ОБОРУДОВАНИЯ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ ИЗ-ЗА ОШИБОК
В ПРОГРАММЕ ИЛИ НЕКВАЛИФИЦИРОВАННЫХ ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЯ. ПОЛЬЗОВАТЕЛЬ ВОЛЕН ИСПОЛЬЗОВАТЬ
ПРОГРАММУ НА СВОЙ СТРАХ И РИСК ИЛИ НЕ ИСПОЛЬЗОВАТЬ ВООБЩЕ.
</div>
<h2>КРАТКОЕ ОПИСАНИЕ</h2>
<p><b>Flashnul</b> - утилита по проверки работоспособности и обслуживанию Flash-памяти
(USB-Flash, IDE-Flash, SecureDigital, MMC,MemoryStick, SmartMedia, XD, CompactFlash
и т.д.).
Список выполняемых операций:
<ul>
<li><strong>Тест чтения</strong> - проверка доступности каждого сектора носителя (дублирует
функциональность обычных HDD-тестов)
<li><strong>Тест записи</strong> - проверка возможности записи каждого сектора носителя
(дублирует функциональность большинства HDD-тестов)
<li><strong>Тест сохранности записанной информации</strong> - проверка соответствия
записанной и прочитанной информации (аналогично функциональности memtest, но в отношении
flash-накопителей).
<li><strong>Недеструктивная проверка чтения/записи</strong> позволяет проверить доступность на
запись каждого сектора устройства, не теряя записанные данные (после проверки блока данные,
содержащиеся в этом блоке, записываются обратно)
<li><strong>Сохранение образа содержимого устройства</strong> - посекторное сохранение всего (или части)
содержимого в файл. (аналогично функциональности <code>dd</code> из UNIX).
<li><strong>Загрузка образа в устройство</strong> - посекторная запись образа в устройство
(аналогично функциональности <code>dd</code> из UNIX).
</ul>
<p>Все тесты выполняются на уровне абстракции блочных устройств и могут применяться по отношению
и к другим типам носителей (floppy, HDD, CD, etc).
<h2>Немного лирики</h2>
<p>Сменные носители на базе flash-памяти (такие как usb-flash drives, SD, MMC,
MS,XD, MD, CompactFlash, IDE-flash etc) в силу ряда особенностей (hot-plug
подключение, воздействие статики, влаги, температуры, механических
воздействий при траспортировке, естественный износ из-за ограниченного числа
циклов чтения/записи) относительно часто выходят из строя (хотя и реже жёстких дисков)
<p>Простые дефекты вроде "не определяется", "ошибки записи" обнаруживаются
относительно легко без использования специализированного ПО, но
диагностика более сложных дефектов представляет из себя весьма нетривиальную
задачу.
<p>Обычные HDD-тесты в проверке устройств целиком полагаются на контроллер
устройства в определении правильности считывания. Либо сектор не читается,
либо он читается правильно. К сожалению, для Flash-носителей это не так, и относительно
часты случаи, когда прочитанное не совпадает с записанным, или запись в один
сектор повреждает другие сектора. Такие дефекты можно определить "полевыми
испытаниями" - записью архивированных данных с последующей проверкой, некоторым
периодом интенсивного чтения-записи файлов. Однако, такие "доморощенные" тесты
не дают твёрдой уверенности в полной работоспособности устройства. Flashnul
сначала создавался для служебных нужд (удобной и быстрой проверки работы USB-flash
устройств), но потом вырос до универсального теста.
<p>Ближайшим аналогом flashnul является memtest, проверяющий работу оперативной
памяти. В какой-то степени flash-память больше похожа (по дефектам) на обычную
оперативную память, чем на жёсткий диск.
<p>Кроме того, есть ряд программных "дефектов" (если быть точным, некорректных
действий пользователей), приводящих к зависанию при обращении к логическому диску,
соответствующему устройству. Чаще всего это некорректная таблица разделов или
ошибки файловой системы. Самый простой способ "вылечить" их - это уничтожить
всю информацию на флешке (занулить - собственно, от этого процесса и идёт название
утилиты).
<p><strong>Flashnul - это средство диагностики, а не лечения устройств, если тест
говорит, что устройство работает некорректно, значит, оно работает некорректно.</strong>
<p>Простить сделать так, чтобы flashnul "вылечил" флешку всё равно, что просить,
чтобы memtest "вылечил" битую память.
<p>В ряде случев можно воспользоваться утилитами производителя (они доступны не
всегда) и исправить ошибки путём низкоуровнего форматирования. В большинстве
же случаев не остаётся ничего другого, кроме как обратиться в гарантию
(или к мусорной корзинке — в зависимости от сроков). <strong>Просьба не обращаться
ко мне за подобными программами, я их не предоставляю</strong>
<h2>ФОРМАЛЬНОЕ ОПИСАНИЕ</h2>
<p><strong style="color:red;">ВНИМАНИЕ!</strong>
<p>Большая часть тестов <u>деструктивные</u> - они уничтожают информацию с
flash-устройства, перед использованием рекомендуется сделать резеврную копию
данных. КАТЕГОРИЧЕСКИ запрещено отключение устройства во время выполнения теста, это может
привести к физическому повреждению устройства.
<h3>СИСТЕМНЫЕ ТРЕБОВАНИЯ</h3>
<p>NT-based операционная система (windows 2000, XP, 2003, возможно NT4, Vista - не проверял).
Процессор - от 686 (P2 и выше), 4Мб свободной оперативной памяти. (поддержку более старых
процессоров можно включить, поменяв опцию -march в src\Makefile на нужную, например, на i486 и
перекомпилировав исходные тексты) Для полноценной работы программы <u>требуются права локального
администратора</u>. Информация о поддержке горячей замены у устройств выводится только в
Windows XP и выше.
<h3>Принцип работы</h3>
<p>Утилита вызывается в одном из трёх режимов:
<ul>
<li>показ справки (при запуске с ключом -h или без параметров)
<li>показ доступных устройств (ключ -p)
<li>выполнение операций над указанным устройством
</ul>
<h3 id=listing>Показ доступных устройств</h3>
<em>Замечание: для старых не Plug-n-play устройств результаты могут быть неполны или неточны.</em><br>
<p>Команда вывода списка доступных устройств:</br>
<code>flashnul -p</code> или <code>flashnul -p=<em>число</em></code><br>
Команда выводит список логических и физических дисков в системе (если программа запускается
не от имени администратора список физических дисков будет пуст).
Список выглядит примерно так:
<pre class=screen>
Avaible physical drives:
0 size = 10005037056 (9 Gb)
1 size = 1040187392 (992 Mb)
2 size = -1 ( -not avaible- )
3 size = -1 ( -not avaible- )
4 size = 513802240 (490 Mb)
5 size = -1 ( -not avaible- )
Avaible logical disks:
C:\ type=3 (Fixed)
D:\ type=5 (CD/DVD)
E:\ type=3 (Fixed)
F:\ type=2 (Removable)
G:\ type=2 (Removable)
H:\ type=2 (Removable)
I:\ type=2 (Removable)
Z:\ type=2 (Removable)
</pre>
Строчка <tt>-not avaible-</tt> означает, что устройство в системе есть, но получить к нему доступ невозможно. Чаще всего
это картридер без вставленной карты памяти. Если подобная строчка выводится для подключенного flash-устройства, это признак неисправности устройства.
<p>В случае необходимости часть вывода можно отключить. Для этого используется числовой параметр у опции <tt>-p</tt>. Значения:
<ul>
<li><tt>-p=1</tt> — показ только физических дисков
<li><tt>-p=2</tt> — показ только логических дисков
</ul>
<p>Для более тонкой настройки вывода можно использовать дополнительные флаги, отключающие вывод части информации (флаги объединяются при помощи двоичного "или"):
<ul>
<li>256 - выключение показа типа дисков (<tt>-p=258</tt> просто покажет список дисков без показа их типа)
</ul>
<h3>Выполнение операций</h3>
<p>Для выполнения операций в командной строке следует указать диск, для которого должна выполняться операция и название
самой операции. Если операция не будет указана (будет указан только диск), то будет после выведения
информации о диске программа завершит свою работу.
<h4>Указание диска</h4>
<p>Существует два основных метода указания диска:
<ol>
<li><strong>По номеру</strong> физического диска (соответствует номеру в <a href="#listing">списке физических устройств</a>)</br>
например, <code>flashnul 2</code>, <code>flashnul 3</code>, <code>flashnul 0</code>.
<li><strong>По букве логического диска</strong> (список доступных букв выводится в <a href="#listing">списке логических дисков</a>, регистр буквы роли не играет.)</br>
например, <code>flashnul a:</code>, <code>flashnul d:</code>, <code>flashnul E:</code>
</ol>
<p>Помимо основных методов есть возможность указать путь к устройству в UNC форме или в форме hadware enumerator. (Эти методы не нужны при обычном использовании программы).</br>
примеры:
<ol>
<li>\\.\PhysicalDrive0
<li><small>\\?\ide#diskst310211a_______________________________6.55____#4436314248563752202020202020202020202020#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}</small>
</ol>
<h4>Информация о диске</h4>
<p>запуск c именем (номером диска) без параметров показывает информацию об устройстве в стиле:
<pre class=screen>
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
</pre>
<P><tt>[Drive geometry]</tt> — информация о размере диска в факторизации
по количеству цилиндров, треков, секторов, количеству байт в секторе
(CHS-адресация). Для современных устройств это скорее условность, чем настоящий
размер. Выводимая информация:<ul>
<li><em>Cylinders</em> — количество цилиндров
<li><em>Heads</em> — количество головок (треков на цилиндре)
<li><em>Sectors</em> — количество секторов на треке
<li><em>Bytes per sector</em> — количество байтов в секторе
<li><em>CHS size</em> — результат перемножения первых четырёх величин, т.н. размер
диска в CHS-адресации (обычно чуть меньше настоящего размера устройства).
</ul>
<P><tt>[Free Space]</tt> — свободное/занятое пространство на диске (разделе).
Информация имеет смысл только для форматированного раздела. В силу особенностей
программы эта информация доступна только при открытии диска с общим доступом
на запись (по-умолчанию отключен, включается опцией
<a href="#write-share"><tt>--write-share</tt></a>). Выводимая информация:
<ul>
<li><em>Total space</em> — общий доступный объём раздела (эта величина меньше
размера устройства, так как объём диска, занятый служебной информацией о файловой
системе в эту величину не включается).
<li><em>Free space</em> — объём свободного места на разделе (всего).
<li><em>Avaible space</em> — объём доступного места на разделе (в большинстве
случаев совпадает с Free space и не выводится, может отличаться, если включены дисковые
квоты).
</ul>
<p><tt>[Device size]</tt> — размер устройства. В случае работы с физическими
дисками эти величины показывают данные относительно размера устройства,
в случае с (несколькими) логическими дисками на устройстве эти величины показывают
данные относительно диска, на котором раздел находится. Выводимая информация:
<ul>
<li><em>Device size</em> — размер устройства
<li><em>delta to near power or 2</em> — «расстояние» до ближайшей степени двойки. Значение
порядка 1-2% от объёма диска нормально, величины больше 10% (т.е. 12Мб для 128,
100Мб для 1Гб) свидетельствуют об уменьшении ёмкости накопителя (обычно происходит
при отключении контроллером повреждённых областей). <u>Для жёстких дисков эта строка
не имеет смысла</u>.
<li><em>Surplus size</em> — разница между фактическим размером устройства и размером
в CHS-адресации.
</ul>
<p><tt>[Adapter & Device properties]</tt> — данные об устройстве и шине подключения.
(та информация, которая недоступна просто не выводится, например, для многих устройств
отсутствуют данные о ревизии). Выводимая информация:
<ul>
<li><em>Bus type</em> — интерфейс подключения (SCSI, ATAPI, ATA, IEEE1394, SSA,
FIBRE, USB, RAID, ISCSI, SAS, SATA) и его числовой код.
<li><em>Removable device</em> — сменное или несменное устройство (физически)
<li><em>Command Queue</em> — поддержка очереди команд (NCQ, TCQ, и т.д.)
<li><em>Device Vendor</em> — производитель устройства (строка, которая отдаётся
самим устройством, может быть произвольной или отсутствовать вообще)
<li><em>Device Name</em> — название устройства (аналогично — произвольная строка)
<li><em>Revision</em> — ревизия устройства
<li><em>Device serial</em> — декодированный серийный номер устройства, может
отсутствовать во многих устройствах
</ul>
<p><tt>[Hotplug info]</tt> — информация о «горячем» подключении. Доступна
только при работе в Windows XP или старше (не поддерживается в Windows 2000/NT). Выводимая информация:
<ul>
<li><em>Device hotplug</em> — является ли устройство заменяемым «на ходу». Для большинства
USB-устройств это так, однако если в настройках устройства включено кеширование записи,
устройство считается НЕ поддерживающим отключение на ходу.
<li><em>Media hotplug</em> — поддерживает ли носитель в устройстве (в основном касается картридеров)
горячее отключение (для USB-Flash тут обычно пишется No, потому что отключается не носитель информации,
а всё устройство; для CD/DVD дисков это тоже обычно «No» по непонятным мне причинам).
</ul>
<h4>Указание операции</h4>
<p>За один вызов можно выполнить не более одной операции. Имя операции указывается
или в полном, или в сокращённом виде. Полное имя начинается с <tt>--</tt>, сокращённое
с <tt>-</tt>.
<table>
<tr class=header><td>Короткое имя<td>Длинное имя<td>Описание<td>Пример вызова
<tr><td>-R<td>--read<td>Тест чтения. <td><code>flashnul 0 -R</code>
<tr><td>-T<td>--test<td>Стандартный тест записи/чтения (уничтожает информацию на устройстве)<td><code>flashnul 2 -T</code>
<tr><td>-Q<td>--quick<td>Быстрый тест чтения/записи (относительно безопасен)<td><code>flashnul f: -Q</code>
<tr><td>-F<td>--fill<td>Заполняет все сектора указанным байтом (затирает). По-умолчанию затирает нулём<td> <code>flashnul z: -F</code><br><code>flashnul z: -F=5</code>
<tr><td>-I<td>--incremental<td>Запуск специфичного инкрементального теста (для проверки на ошибки контроллера). Уничтожает информацию на устройстве. <td><code>flashnul x: -I -V=2</code>
<tr><td>-B<td>--blank<td>Стирает первый сектор на устройстве<td><code>flashnul y: -B</code>
<tr><td>-S<td>--save<td>Сохраняет образ устройства в файл (имя файла указывается после опции)<td><code>flashnul D: -S c:\image</code>
<tr><td>-L<td>--load<td>Загружает файл (образ) в устройство<td><code>flashnul D: -L c:\image</code>
</table>
<h4>Модификаторы</h4>
<p>Поведение многих опций может быть изменено с помощью опций-модификаторов. Они могут указываться
как отдельно, так и рядом с опцией выбора операции (<code>-T -P</code> эквивалентно <code>-TP</code>).
<table>
<tr class=header><td>Короткое имя<td>Длинное имя<td>Описание<td>Пример вызова
<tr><td>-V<td>--verify<td>Режим проверки записи (0,1,2,3)<td><code>flashnul 2 -F -V=3</code>
<tr><td>-P<td>--no-prompt<td>Отключить запрос на деструктивные операции (осторожно!)<td><code>flashnul 2 -TP</code>
<tr><td>-i<td>--ignore-errors<td>Не останавливаться после первой ошибки<td><code>flashnul -S c:\image -i</code>
<tr><td>-c<td>--cycle<td>Количество циклов тестирования<td><code>flashnul 2 -T -c=3</code>
<tr><td>-b<td>--block-size<td>Размер блока в операциях чтения/записи<td><code>flashnul G: -F -b=512</code>
<tr><td>-r<td>--range<td>диапазон, в котором проводятся операции. Принимает 1 или 2 числа, если числа нет, предполагается "от начала" (или "до конца").<td><code>flashnul -F -r=512;1024</code>
<tr><td>-m<td>--mode<td>для -I опции указывает режим тестирования (0 - инкрементальная запись, 1 - шахматная)<td><code>flashnul 4 -I -m=1 -c=10</code>
<tr><td>-k<td>--disable-key<td>выключает запрос [Enter] в конце теста<td><code>flashnul K: -FTk</code>
<tr><td>-d<td>--delay<td>Интервал времени (в сек.) перед началом второго теста чтения в режимах тестирования -T и -I.<td><code>flashnul J: -T -d=3600</code>
<tr><td><td>--write-share<td>Открывать устройство в режиме "общего доступа на запись". Тестирование в этом режиме может быть ошибочным, но он полезен для выполнения операций за заблокированными устройствами<td><code>flashnul C: --write-share -F</code>
<tr><td><td>--ignore-block<td>Игнорировать блокировки из конфигурационного файла.
</table>
<h2>Результаты тестирования</h2>
<p>По завершении работы выводится результат:
<pre class=screen>
----------------------------------------------------------[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)
</pre>
<ul>
<li><em>passes</em> — количество проходов (если 0 — тестирование не завершено)
<li><em>errors</em> — количеcтво найденых ошибок, если число отлично от нуля - <u>дефект устройства</u> (или устройство отключили во время теста).
<li><em>read bytes</em> — количество прочитанных байтов, если циклов больше 1 или включен режим -V=3, то это число будет больше размеров устройства.
<li><em>avg. read speed</em> — средняя скорость чтения (прочитанных байт/время чтения)
<li><em>max/min read speed</em> — максимальная/минимальная скорость чтения (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)
<li><em>write bytes</em> - количество записанных байтов, если циклов больше 1, то это число будет больше размеров устройства.
<li><em>avg. write speed</em> - средняя скорость записи (записанных байт/время записи)
<li><em>max/min write speed</em> - максимальная/минимальная скорость записи (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)
</ul>
<h2>Подробное описание режимов работы</h2>
<h3>Режим -B (--blank)</h3>
<p>В данном режиме затирается нулевой сектор устройства или диска, проверяется его
читаемость, проверяется правильность записанного. Данный тест предназначен для:
<ul>
<li>быстрого удаления таблицы разделов
<li>быстрой проверки на доступность устройства
</ul>
<p>После выполнения утилиты данные на разделе не уничтожаются, но доступ к ним средствами
операционной системы будет невозможен, для восстановления в случае ошибочного выполнения
следует использовать утилиты восстановления информации с повреждённых носителей.
<h4>Примеры вызова</h4>
<p><code>flashnul 1 -B</code><br>
Стирает загрузочный сектор на <em>втором</em> физическом диске.
<p><code>flashnul f: -B -P</code> или <code>flashnul f: -BP</code><br>
Стирает загрузочный сектор на диске <code>F:</code> <em>без подтверждения операции</em> (осторожно!)
<p><code>flashnul g: -B -P -k</code> или <code>flashnul g: -BPk</code><br>
Стирает загрузочный сектор на диске <code>G:</code> без подтверждения, с автозавершением приложения.
<h3>Режим -F (--fill)</h3>
<p>В данном режиме осуществляется заполнение устройства указанным байтом (по-умолчанию нулём). Опция, указывающая
этот режим может принимать числовой параметр от 0 до 255 — байт заполнения. Опция --range может изменять область
заполнения (по-умолчанию всё устройство).
<P>Данный тест предназначен для:
<ul>
<li>Уничтожения информации на носителе (необратимо!)
<li>Проверки на запись, правильность записи (не очень надёжно, есть режим -I)
<li>Запись определённого сектора определённым значением
<li>Измерения линейной скорости записи на устройство
</ul>
<h4>Примера вызова</h4>
<p><code>flashnul 3 -F</code><br>
Заполнить нулями четвёртое физическое устройство. (осторожно! Информацию восстановить будет невозможно!)
<p><code>flashnul 5 -F=200</code><br>
Заполнить шестое физическое устройство байтом 200 (0xC8)
<P><code>flashnul e: -F --range=0;2048 -P</code><br>
Заполнить на диске <code>E:</code> нулём байты с нулевого по 2048ой.
<P><code>flashnul h: -F=255 -V=3 -P -k</code><br>
Записать числом 255 (0xFF) устройство <code>H:</code>, произвести двойную проверку записи (см описание --verify), без подтверждения, по завершению операции закрыть приложение.
<h3>-I --incremental</h3>
<p>Данный тест предназначен для полного тестирования устройства (это основной режим тестирования).
В сектора устройста записывается последовательность байтов, зависящая от номера устройства. Этот режим позволяет
контролировать правильность записи, отсутствие влияния записи в один сектор на содержимое другого сектора. Существуют два режима для данного теста, режим -m=0 (по-умолчанию) и -m=1.
<h4>Тест -m=0</h4>
<p>тест -I -m=0 (или просто -I) осуществляет запись возрастающей последовательности. Это позволяет обнаружить ошибки "промаха" в записи, появляющийся у некоторых контроллеров.
<p>тест -I -m=1 осуществляет запись "шахматки" (комбинацию 0xFF, 0x0). Это, фактически, самый простой тест для выявления ошибок записи. Он задан в виде готовой опции -T (которая равна -I -m=1 -V=3)
<h4>Примеры вызова</h4>
<p><code>flashnul -I D: -V=3</code><br>
Выполнить инкрементальную проверку для диска D:, осуществить двойную проверку на чтение (см. --verify)
<p><code>flashnul 1 -I -m=1 -V=3 -c=10 -d=10 -P -k -i</code><br>
Выполнить десять циклов (-c=10) проверки второго физического устройства в режиме 1, игнорируя ошибки (-i), без подтверждения выполнения операции, с завершением программы по окончании теста.
<P><code>flashnul -I 3 -r=512;1024</code><br>
Записать 512 байт со смещения 512 последовательностью на физическом устройстве 3
<h3>-R, --read</h3>
<P>Данный тест осуществляет проверку читаемости устройства (эта операция безопасна), используется для простейшей проверки работоспособности устройства, измерения скорости записи.
<h4>Примеры вызова</h4>
<p><code>flashnul C: -R</code><br>
Проверка чтения для диска <code>C:</code>
<p><code>flashnul D: -R -r=1024;2048</code></br>
Проверка читаемости секторов со смещения 1024 до смещения 2048 на диске <code>D:</code>
<h3>-S, --save</h3>
<p>Сохараняет образ устройства в файл, имя файла должно быть указано после параметра (например, -S c:\image). Содержимое устройства не меняется, операция безопасна.
Можно использовать символ '-' (дефис) для указания stdout. Существует ряд ограничений на работу с файлами образов:
<ul>
<li>Файл образа никогда не может быть перезаписан, если файл образа существует (даже нулевого размера), выполнение функции будет прервано.
<li>При первой же ошибке ввода/вывода с файлом (не с образом устройства), вне зависимости от опции -i (--ignore), выполнение функции будет прервано.
</ul>
<p>Другими словами, образ всегда должен находиться на рабочем устройстве.
<h4>Примеры</h4>
<p><code>flashnul f: -S e:\backup.img</code><br>
Сохранить образ диска <code>F:</code> в файл e:\backup.img
<p><code>flashnul D: -S - -r=0;2048</code><br>
Скопировать первые 2048 байт диска <code>D:</code> и вывести их в stdout (2048 байт - размер сектора на CD).
<p><code>flashnul 2 -S saveimage -i</code><br>
Скопировать с третьего устройства содержимое в файл saveimage игнорируя ошибки чтения с устройства (ошибка записи в файл завершит работу программы).
<p><code>flashnul 2 -S - |gzip -c -9>c:\image.gz</code><br>
Сохранить образ третьего устройства в архивном файле image.gz (используется утилита gzip).
<h3>-L, --load</h3>
<p>Загружает содержимое файла в устройство, затирая старое его содержимое. (Обратная к -L). Эта операция необратимо уничтожает содержимое устройства. Обязательный параметр - имя существующего файла или '-' для указания stdin. Опция -i (игнорировать ошибки) относится только к файловым операциям с диском, но не с файлом (при первой же ошибке работа программы будет остановлена).
<h4>примеры использования</h4>
<P><code>flashnul A -L c:\floppy.img</code><br>
Загрузить образ на диск А (дискету).
<p><code>cat c:\image.gz | gzip -d |flashnul 2 -L -</code><br>
Загрузить в третье устройство образ (разархивировав).
<p><code>flashnul 5 -L c:\myfile -r=2048</code><br>
Загрузить содержимое файла в шестое устройство со смещения 2048.
<h3>-T --test</h3>
<p>Фактически, режим тестирования -T, это объединение стандартных настроек для -I (-T == -I -V=3 -c=2 -d=10 -m=1).
Этот режим - наиболее часто вызываемый режим тестирования.
<h4>Пример вызова</h4>
<p><code>flashnul Z: -T</code><br>
Запуск тестирования устройства Z:
<h3>-Q --quick</h3>
<p>Режим быстрого тестирования устройства. Суть теста: проверяются на чтение и запись первые 512 байт из каждых 64к устройства.
Так как флеш-память выходит из строя обычно крупными блоками, такая проверка находит большинство сбоев. (Однако, прохождение быстрого теста не говорит о работоспособности, для уверенности в работоспособности нужно выполнить несколько проходов полного теста).
<P>Данный тест не должен повреждать данные (т.к. исходные данные пишутся обратно), но в определённых случаях на сбойных устройствах запись на диск может быть прервана, и данные будут повреждены. Режим -V (проверки) для данного теста не учитывается.
<h4>Пример вызова</h4>
<p><code>flashnul F: -Q</code>
<h3>-U --update</h3>
<p>Это недеструктивный тест записи. Его алгоритм - блок данных читается с устройства в память и пишется
обратно. Данный тест не позволяет выявить сложные ошибки (вроде порчи данных), но позволяет проверить
каждый сектор на доступность чтения/записи. Т.к. во время теста осуществляется запись на устройство,
отключать его категорически нельзя - данные могут быть повреждены. Так же, в случае если флешка
"умирает", может произойти ошибка записи и данные так же будут повржедены. Так же, если диск открыт
в режиме "общего доступа на запись" (WRITE_SHARE), возможны ошибки из-за одновременной записи
в одинаковые блоки.
<h4>Пример вызова</h4>
<p><code>flashnul Z: -U</code>
<H2>Модификаторы</H2>
<h3>-V, --verify</h3>
<p>Устанавливает режим проверки записи на устройство. В настоящий момент существуют 4 режима:
<Ul>
<li>-V=0 (по-умолчанию) - не проводить проверку записи</li>
<li>-V=1 - читать и сравнивать прочитанное и записанное для каждого блока данных. В этом режиме
поочерёдно блок сначала пишется, потом читается</li>
<li>-V=2 - читать и проверять записанное после завершения записи устройства. Сначала полностью
выполняется вся запись, после чего осуществляется чтение и проверка совпадения прочитанного
и записанного.
<li>-V=3 - комбинация режимов 1 и 2. В этом режиме после записи каждого блока осуществляется чтение
и проверка, и после завершения записи осуществляется ещё один проход чтения и проверки.
</ul>
<p>Для опции -S существует только один режим проверки (вне зависимости от режима, либо
проверка выключена (-V=0), либо включена, любое другое число). При этом после записи каждого
блока осуществляется его чтение и проверка.
<p>Режим -V=3 является необходимым для выявления большинства ошибок с порчей данных на устройстве.
<h3>-i, --ignore-errors</h3>
<p>Опция предназачена для пропуска ошибок при выполнении операций с устройством (по-умолчанию
при возникновении ошибки работа программы завершается). (Замечание: игнорируются ТОЛЬКО ошибки
работы с устройством, файловые ошибки работы с образами по-прежнему завершают программу).
<h3 id=write-share>--write-share</h3>
<p>Опция для разрешения совместного доступа к устройству. По-умолчанию диск открывается без
общего доступа на запись, и в ряде случаев Windows может запретить такой режим. Write-share
позволит осуществить операцию и с заблокированными устройствами, однако, в этом режиме
возможна ситуация одновременной записи на диск flashnul'ом и сторонней утилитой, что
приведёт либо к ложному срабатыванию теста, либо к повреждению записанных данных.
<h3>-P, --no-prompt</h3>
<p>Отключает запрос о выполнении записи на устройство. (Осторожно - в этом случае ошибка в букве
или цифре уничтожит, возможно, важные данные без дополнительного предупреждения).
<h3>-c, --cycle</h3>
<p>Количество циклов операции. Имеет смысл только для -T, -F, -I режимов. Количество
циклов указывается через пробел или знак "=". (Например, <code>flashnul 3 -T -c 5</code>)
<h3>-r, --range</h3>
<p>Диапазон, в котором выполнять операцию. Может принимать одно или два значения, разделённые
точкой с запятой (начало-конец). Величины - байты от начала устройства. Значения должны быть
кратными размеру сектора.
<h3>-b, --block-size</h3>
<p>Размер блока данных при операциях чтения/записи. По-умолчанию 64кб при работе с блочными
устройствами, 4кб при работе с stdin/stdout (чтение/записи образ). Размер должен быть кратен
размеру сектора, для ряда устройств есть ограничение на максимальный размер блока данных.
<h3>-d, --delay</h3>
<p>Задержка перед чтением записанного для режимов -V=2 и -V=3 в секундах.
<h2>Файл конфигурации</h2>
<p>По-умолчанию flashnul читает файл конфигурации <tt>flashnul.conf</tt>, лежащий "рядом"
с исполняемым файлом (в той же директории).
<h3>Структура файла</h3>
<p>Каждая строка в файле — отдельная директива. Символ '#' (октоторп) указывает на комментарий
(весь текст за символом до конца строки считается комментарием).
<p>Директивы, подразумевающие несколько значений могут указываться несколько раз, в этом
случае их параметры объединяются.
<p>Файл конфигурации имеет больший приоритет, чем командная строка (если парметр
указан в командной строке и в файле используется значение из файла, кроме случаев, когда
значения объединяются).
<h3>Список директив</h3>
<p><ul>
<li><em>verify</em> - установить режим verify (см описание --verify), параметр указывается через '='.
<li><em>no-prompt</em> - не выдавать запроса на деструктивные операции (ОСТОРОЖНО!), указывается без параметров.
<li><em>ignore-errors</em> - игнориорвать ошибки ввода/вывода с устройства (указывается без параметров).
<li><em>cycle</em> - количество циклов теста по-умолчанию (параметр - число)
<li><em>block-size</em> - размер блока ввода/вывода (число)
<li><em>range</em> - диапазон операций (число)
<li><em>mode</em> - режим для -I теста (число)
<li><em>delay</em> - задержка между записью и чтением (число, секунды)
<li><em>disable-key</em> - отключение нажатия [enter] в конце работы программы
<li><em>write-share</em> - включение общего доступа на запись (см описание --write-share), указывается без параметров.
<li><em>block-vendor</em> - блокировать запись по полю vendor (производитель), строки, разделённые точкой с запятой (;)
<li><em>block-name</em> - блокировать запись по полю device name (имя устройства), строки, разделённые точкой с запятой (;)
<li><em>block-serial</em> - блокировать запись по полю serial number (серийный номер), строки, разделённые точкой с запятой (;)
<li><em>block-bus</em> - блокировать запись по имени шины (UNKNOWN, SCSI, ATAPI, ATA, IEEE1394, SSA, FIBRE, USB, RAID, ISCSI, SAS, SATA), строки, разделённые точкой с запятой (;)
<li><em>block-non-removable</em> - блокировать запись на несменные устройства (указывается без параметров)
<li><em>block-device</em> - блокировать запись по любому полю (из вышеперечисленных), строки, разделённые точкой с запятой (;)
<li><em>block-letter</em> - блокировать запись на диск с указанной буквой (латинские буквы, разделённе точкой с запятой)
<li><em>block-number</em> - блокировать запись на физический диск с указанным номером. (числа, разделённе точкой с запятой)
</ul>
Все опции block-* могут быть "подавлены" опцией командной строки <code>--ignore-block</code>
<h2>Тонкая настройка программы</h2>
<p>Отдельные параметры работы программы могут быть изменены только при перекомпиляции,
изменением значений переменных в файле finetune.h:
<ol>
<li><em>REFRESH_DELAY</em> — частота обновления экрана во время выполнения операций
(задаётся в милисекундах, интервал времени между обновлениями), значение по-умолчанию
100 (10 раз в секунду).
<li><em>LINE_LENGHT</em> — размер строки при обновлении строки выполнения операций
и заголовков секций (значение по-умолчанию 78).
<li><em>HOME_DIR_CONFIG</em> — файл конфигурации следует искать в каталоге приложения,
а не в текущем каталоге.
<li><em>CONFIG_FILE</em> — имя конфигурационного файла. (по-умолчанию: flashnul.conf)
</ol>
<hr>
<p>Исходный текст программы приведён в каталоге src. Для компиляции использовался
gcc version 3.4.2 (mingw-special).
<p>(с) George Shuklin, [email protected], 2005-2008<br>
<a href="http://shounen.ru/soft/flashnul/">http://shounen.ru/soft/flashnul/</a>
<p>Данная программа распространяется под лицензией GNU PUBLIC LICENCE, текст
которой (на английском языке) приведён в файле copying.
<p>АВТОР ГАРАНТИРУЕТ ОТСУТСТВИЕ ПРЕДУМЫШЛЕННО ДОБАВЛЕННЫХ ВРЕДОНОСНЫХ И ШПИОНСКИХ
ФУНКЦИЙ В ПРОГРАММЕ.
</body></html>