Назад | Перейти на главную страницу

DCFLDD и шестнадцатеричный редактор

Иногда я использую dcfldd, потому что он имеет больше возможностей и его проще использовать, чем обычный dd. Он дает постоянный статус и быстро обновляет его, а также имеет ввод шаблона, который намного быстрее, чем чтение из / dev / zero или любого другого устройства.

В качестве примера предположим, что я хотел стереть диск с помощью dcfldd, я бы сделал что-то вроде этого

dcfldd pattern="00" of=/dev/hda bs=4096

Где он будет записывать «00000000» в диск побайтно, а затем вы можете использовать функцию vf = для проверки шаблона.

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

dcfldd pattern="FF" of=/dev/hda bs=4096; sync
or
dcfldd pattern="11111111" of=/dev/hda bs=4096; sync

Я могу заполнить диск единицами, и это происходит очень быстро. Я могу заполнить диск на 74 ГБ, скажем, на 5 ГБ из единиц после его обнуления. Если я использую шестнадцатеричный редактор, например xxd или hd в Linux, я могу видеть все единицы.

Хотя, если я запущу эту команду,

dcfldd pattern="00" of=/dev/hda bs=4096; sync

Скажем, если нулей стоит всего 1 ГБ, то единиц должно быть 4 ГБ. Увидев, что я написал 5 ГБ из единиц и только 1 ГБ из нуля.

Хотя, если я затем посмотрю в шестнадцатеричный редактор, на диске все 0, даже если программное обеспечение заявит, что он записал только 1 ГБ из 0. Я попытался запустить программу как можно короче, отправив SIGINT почти сразу после запуска.

Есть идеи, почему это происходит, и можете ли вы это воспроизвести?

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

time dcfldd pattern="FF" of=/dev/hda bs=4096 count=102400; sync

тогда делай

time dcfldd pattern="00" of=/dev/hda bs=4096 count=51200; sync

и сравните полученное время. Затем посмотрите на данные на диске, чтобы убедиться, что граница, где единицы меняются на нули, находится там, где она должна быть (около 200 мегабайт * для этого примера).

* Это настоящий МБ (1024 * 1024), а не «возможно» байты.

Чтобы получить какие-либо значимые результаты, если вы не хотите перезаписать весь раздел или диск, вам необходимо указать аргумент count. В приведенных вами примерах вы не указали количество. Я не понимаю, как вы вообще ожидали получить 5 ГБ единиц или 1 ГБ нулей.