Это не /dev/zeroуничтожение чего-то, а ddстирание путем копирования. Факты, что байты оказываются нулевыми и что нулевые байты происходят из /dev/zeroкакого-либо другого источника нулей, являются второстепенными деталями.
Хрилис - на забастовку -
2
Если вы просто хотите стереть таблицу разделов, wipefs может быть более надежным.
труба
Ответы:
23
Будет ли dd if=/dev/zero of=/dev/sdaуничтожить существующую таблицу разделов?
Да, таблица разделов находится в первой части диска, поэтому при перезаписи она будет уничтожена. Это ddзапишет весь диск, если вы позволите ему работать (так что это займет довольно много времени).
Нечто подобное dd bs=512 count=50 if=/dev/zero of=/dev/sdaбыло бы достаточно, чтобы перезаписать первые 50 секторов, включая таблицу разделов MBR и основной GPT. Хотя, по крайней мере, согласно Википедии, GPT имеет вторичную копию таблицы разделов в конце диска, поэтому перезаписи только части в головке диска может быть недостаточно.
(Вы не должны использовать dd, хотя. head -c10000 /dev/zero > /dev/sdaИли cat /bin/ls > /dev/sdaбудет иметь тот же эффект.)
делает fdisk /dev/sda g(для GPT) уничтожить нули , написанные / Dev / нуль?
Также да (при условии сохранения изменений).
(Тем не менее, формулировка в заголовке просто сбивает с толку, /dev/zeroсама по себе ничего не делает больше, чем обычное хранилище.)
Примечание: если выходные данные /bin/lsдостаточно короткие, то операция записи может перезаписать только несколько байтов MBR, и наиболее важная часть (начальный и конечный секторы разделов) может остаться нетронутой. Хотя переустановка MBR (чаще всего grub --install /dev/sda) по-прежнему необходима для повторной загрузки системы.
Петер - Восстановить Монику
8
@peterh Обратите внимание, что они перенаправляют реальный lsдвоичный файл, а не результат его запуска. Кажется, что наименьший возможный двоичный файл ELF «Hello World» составляет 98 байт (так меньше, чем MBR), но я думаю, что можно с уверенностью предположить, что любой двоичный файл с реальными функциями должен быть больше MBR (общеизвестно, что реализация FreeBSD lsимеет 32784 длина байта, даже достаточно большая, чтобы перезаписать начальную часть GPT). ;)
n.st
Ах да, вы могли бы использовать вывод lsтоже. Список /usr/bin, вероятно, будет достаточно длинным. Я собирался использовать только echoв качестве примера, но IIRC вам нужно почти 500 байтов, чтобы перезаписать таблицу разделов MBR, поэтому набирать ее немного утомительно. (каким бы ни было точное число)
ilkkachu
1
Вы, вероятно, должны использовать bs и считать с dd для этого, иначе это будет продолжаться в течение некоторого времени, вам нужно только обнулить сектор. 512 байт для устаревших дисков. (см. @ n.st ниже). На самом деле таблица разделов находится в конце этого раздела и достаточно мала, чтобы вы могли сделать копию и обнулить ее с помощью шестнадцатеричного редактора, прежде чем копировать обратно, чтобы сохранить загрузочный контент. Для этого также есть инструменты, для инициализации диска NAS это обычно.
Маккензм
1
Просто хочу добавить, что в случае дисков GPT вы ДОЛЖНЫ также стереть конец диска. Совместимая реализация GPT проверит вторичную таблицу в конце диска и перепишет также первую часть (игнорируя все, что у вас там уже есть). См .: news.ycombinator.com/item?id=18541493
wbkang
10
Таблица разделов хранится в начале 1 (логического 2 ) дискового устройства.
Перезаписывая эту область чем-либо (нули от /dev/zero или любые другие данные) заменит таблицу разделов бредом, поэтому больше не будет очевидно, где начинаются разделы на устройстве.
Тем не менее, можно сканировать весь диск и попытаться определить «волшебные байты», которые отмечают начало файловых систем.
И наоборот, если вы используете fdisk (или любой другой инструмент разделения) для создания новой таблицы разделов, инструмент перезапишет первые несколько байтов диска для сохранения этой новой таблицы.
На диске есть только одно начало, поэтому все, что вы делаете последним, будет «прилипать» к нему.
Однако обратите внимание, что некоторые форматы таблиц разделов (например, GPT) сохраняют резервные копии в разных местах (например, в конце диска для GPT), из которых можно восстановить некоторую информацию о разделах.
/dev/zero
уничтожение чего-то, аdd
стирание путем копирования. Факты, что байты оказываются нулевыми и что нулевые байты происходят из/dev/zero
какого-либо другого источника нулей, являются второстепенными деталями.Ответы:
Да, таблица разделов находится в первой части диска, поэтому при перезаписи она будет уничтожена. Это
dd
запишет весь диск, если вы позволите ему работать (так что это займет довольно много времени).Нечто подобное
dd bs=512 count=50 if=/dev/zero of=/dev/sda
было бы достаточно, чтобы перезаписать первые 50 секторов, включая таблицу разделов MBR и основной GPT. Хотя, по крайней мере, согласно Википедии, GPT имеет вторичную копию таблицы разделов в конце диска, поэтому перезаписи только части в головке диска может быть недостаточно.(Вы не должны использовать
dd
, хотя.head -c10000 /dev/zero > /dev/sda
Илиcat /bin/ls > /dev/sda
будет иметь тот же эффект.)Также да (при условии сохранения изменений).
(Тем не менее, формулировка в заголовке просто сбивает с толку,
/dev/zero
сама по себе ничего не делает больше, чем обычное хранилище.)источник
/bin/ls
достаточно короткие, то операция записи может перезаписать только несколько байтов MBR, и наиболее важная часть (начальный и конечный секторы разделов) может остаться нетронутой. Хотя переустановка MBR (чаще всегоgrub --install /dev/sda
) по-прежнему необходима для повторной загрузки системы.ls
двоичный файл, а не результат его запуска. Кажется, что наименьший возможный двоичный файл ELF «Hello World» составляет 98 байт (так меньше, чем MBR), но я думаю, что можно с уверенностью предположить, что любой двоичный файл с реальными функциями должен быть больше MBR (общеизвестно, что реализация FreeBSDls
имеет 32784 длина байта, даже достаточно большая, чтобы перезаписать начальную часть GPT). ;)ls
тоже. Список/usr/bin
, вероятно, будет достаточно длинным. Я собирался использовать толькоecho
в качестве примера, но IIRC вам нужно почти 500 байтов, чтобы перезаписать таблицу разделов MBR, поэтому набирать ее немного утомительно. (каким бы ни было точное число)Таблица разделов хранится в начале 1 (логического 2 ) дискового устройства.
Перезаписывая эту область чем-либо (нули от
/dev/zero
или любые другие данные) заменит таблицу разделов бредом, поэтому больше не будет очевидно, где начинаются разделы на устройстве.Тем не менее, можно сканировать весь диск и попытаться определить «волшебные байты», которые отмечают начало файловых систем.
И наоборот, если вы используете
fdisk
(или любой другой инструмент разделения) для создания новой таблицы разделов, инструмент перезапишет первые несколько байтов диска для сохранения этой новой таблицы.На диске есть только одно начало, поэтому все, что вы делаете последним, будет «прилипать» к нему.
Однако обратите внимание, что некоторые форматы таблиц разделов (например, GPT) сохраняют резервные копии в разных местах (например, в конце диска для GPT), из которых можно восстановить некоторую информацию о разделах.
1: например, в первых 512 байтах для MBR или в первом и последнем 17408 байтах для GPT
2: диск может внутренне переназначить логические блоки на разные части физической среды, но это отображение невидимо (и не важно для) операционная система.
источник