Было бы
dd if=/dev/zero of=somepartition bs=512
также стереть разделы после somepartition
или остановить в конце somepartition
?
Было бы
dd if=/dev/zero of=somepartition bs=512
также стереть разделы после somepartition
или остановить в конце somepartition
?
Ответы:
dd
dd
это очень мощный, но и опасный инструмент. Он делает то, что вы говорите, чтобы сделать это без вопросов. Так что, если вы скажете, чтобы вытерли семейные фотографии, ... и это небольшая ошибка при печати.
Но если вы проверите и перепроверьте, вы можете использовать его.
dd if=/dev/zero of=somepartition bs=512
или я бы предложил
dd if=/dev/zero of=/dev/sdxn bs=4096
где x
- буква диска, n
номер раздела и размер блока 4096 байт, что ускоряет процесс записи.
В этом случае важно написать в раздел . Если вы запишете весь диск (конец головки диска), /dev/sdx
весь диск будет перезаписан. Но запись в раздел будет прервана в конце раздела и разделы за ним будут сохранены. (Я тестировал сейчас на USB Pendrive в Lubuntu 16.04 LTS, так что я знаю, что это работает так.)
Существует исключение для расширенного раздела (который является контейнером для логических разделов, чтобы иметь более четырех разделов в таблице разделов MSDOS). Это описано в следующей ссылке,
Могу ли я сделать образ «расширенного» раздела, используя dd?
Но есть и другая проблема. Я протестировал вашу команду в тестовой среде, и dd прочитал только один кибибайт (1024 байта), когда я хотел, чтобы он создал образ расширенного раздела.
Я также проверил это сейчас на USB-pendrive в Lubuntu 16.04 LTS, и это относится и к записи (и к чтению). Только первый кибибайт перезаписывается.
Таким образом, чтобы подвести итог, перезапись основных разделов и логических разделов работают в соответствии с основным описанием в этом ответе. Но не используйте этот метод для перезаписи расширенного раздела, потому что будет перезаписан только первый кибибайт. Логические разделы расширенного раздела больше не будут найдены через таблицу разделов, но данные, хранящиеся в них, все еще там.
dd
и что это рискованно, чтобы вы были очень осторожны при его использовании. Удачи :-) В общем, вы всегда должны иметь резервную копию всех файлов, которые вы не можете позволить себе потерять.
Записывает на устройство раздела, не записывает вне этого раздела, с помощью dd или чего-либо еще. Вам потребуется использовать устройство wholedisk, чтобы иметь какой-либо эффект вне одного раздела.
(Предостережение: если на вашем диске нет таблицы разделов с перекрывающимися разделами, что никогда не должно происходить.)
Я думаю, что ваш вопрос основан на фундаментальном недоразумении о том, как dd
(и на самом деле Unix-подобные операционные системы в целом) работают:
dd
не может перезаписать соседние разделы, просто потому что dd
не может перезаписать разделы, точка .
dd
просто пишет в файлы . Вот и все.
Теперь, если вы передадите dd
файл, представляющий несколько разделов, то этот файлdd
будет перезаписан . Но в этом случае он не пишет после конца раздела. все равно будет писать до конца файла и только до конца файла.dd
dd
Но если вы передадите dd
файл, который представляет только один раздел, то dd
запись не будет завершена после его окончания. Опять же, это не имеет ничего общего с dd
. dd
просто пишет в файл, который вы говорите, чтобы написать. Тот факт, что этот файл представляет один раздел, (в данном случае) обеспечивается драйвером блочного устройства в ядре. dd
не имеет к этому никакого отношения.
Итак, вкратце: dd
пишет в файлы. То, что представляют эти файлы, не имеет dd
значения. dd
ничего не знает о разделах.
dd
для записи в сырые разделы. Вы можете писать только в файлы. Конечно, вы можете записать в файл блочного устройства, который представляет раздел (например /dev/sda1
), но вы не можете записать в необработанный раздел. А поскольку вы можете записывать только в файл, представляющий раздел, вы не можете записывать после конца раздела, потому что файл представляет только раздел, а не раздел и чуть позже конца.
/dev/sda
в своем текстовом редакторе и изменить данные, dd
не отличающиеся от любой другой программы в плане возможности доступа к разделам. Очень хороший ответ!
Существует опасный, но редкий специальный сценарий, в котором это может произойти даже с драйверами блочных устройств без ошибок:
Вы должны быть осторожны с дд, так как если вы допустили ошибку, вы можете перезаписать больше, чем вы рассчитывали, и это зависит от того, для чего вы используете дд (ОП был расплывчат в его или ее использовании дд и точного синтаксиса дд команда).
Если вы укажете раздел он будет записывать в этот раздел, пока раздел не будет заполнен.
Если вы допустили ошибку и поместили весь диск, например = / dev / sda, dd запишет весь диск, чтобы начать игнорировать (и перезаписывать) вашу таблицу разделов.
Вы также можете использовать dd в разделе для перезаписи удаленных файлов (удаленные файлы могут оставаться в разделе и обнаруживаться различными инструментами восстановления с различной степенью успеха, пока они не будут перезаписаны. В этом случае вы можете использовать dd для заполнения свободного пространства запись в файл.
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
Однако, в зависимости от того, что вы делаете, вы можете использовать альтернативный инструмент для безопасного удаления файлов. Смотрите Как удалить файл (ы) безопасным способом? для вариантов.
dd
не такой низкий уровень. Фактически, большинство вещей, которые используют люди, dd
могли бы быть сделаны точно так же cat
. На самом деле cat
это немного быстрее, потому что он использует блоки большего размера, чем dd
по умолчанию. Весь код низкого уровня находится в ядре. И водителю не все равно, используете ли вы dd
или cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
или dd if=/dev/zero of=/dev/sda bs=512
примеры. Со второй командой он продолжит запись и заполнит весь диск, «игнорируя» таблицу разделов. Если вы укажете раздел, dd if=/dev/zero of=/dev/sda1
он не выйдет за пределы раздела. В зависимости от того, что вы хотите сделать с дд.
of=somepartition
, что случай, когда вы пишете на целое дисковое устройство, неприменим. dd
не может обойти ограничения драйвера устройства.
/dev/sda1
, создаются ядром таким образом, что через них невозможно получить доступ к соседнему хранилищу (при условии, что таблица разделов не была изменена после того, как ядро прочитало ее в последний раз). Если бы вы могли получить доступ к соседнему хранилищу таким образом, это было бы большой ошибкой.