3

Итак, скажем, вы завершили полный проход:

dd if=/dev/zero of=/dev/sdX bs=1M

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

dd if=/dev/sdX bs=1M | grep -P '[^\x00]'

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

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

Идеи?

2 ответа2

8

В системе Linux есть устройство /dev/zero которое при чтении всегда выдает ноль.

Итак, как насчет сравнения вашего жесткого диска с этим устройством:

cmp /dev/sdX /dev/zero

Если все хорошо с обнулением вашего жесткого диска, он будет завершен с:

cmp: EOF on /dev/sdb

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

Если у вас установлен пакет pv , то

pv /dev/sdX | cmp /dev/zero

будет делать то же самое с индикатором выполнения, чтобы вы были в восторге, пока он провернул ваш диск (EOF теперь будет включен - но не sdX хотя).

1

С https://superuser.com/a/559855/236344:

od заменит запуск одной и той же вещи на * , так что вы можете легко использовать ее для поиска ненулевых байтов:

$ sudo od /dev/disk2 | head
0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .