Ответы:
Будет ли
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
) по-прежнему необходима для повторной загрузки системы.
ls
двоичный файл, а не результат его запуска. Кажется, что наименьший возможный двоичный файл ELF «Hello World» составляет 98 байт (так меньше, чем MBR), но я думаю, что можно с уверенностью предположить, что любой двоичный файл с реальными функциями должен быть больше MBR (общеизвестно, что реализация FreeBSD ls
имеет 32784 длина байта, даже достаточно большая, чтобы перезаписать начальную часть GPT). ;)
ls
тоже. Список /usr/bin
, вероятно, будет достаточно длинным. Я собирался использовать только echo
в качестве примера, но IIRC вам нужно почти 500 байтов, чтобы перезаписать таблицу разделов MBR, поэтому набирать ее немного утомительно. (каким бы ни было точное число)
Таблица разделов хранится в начале 1 (логического 2 ) дискового устройства.
Перезаписывая эту область чем-либо (нули от /dev/zero
или любые другие данные) заменит таблицу разделов бредом, поэтому больше не будет очевидно, где начинаются разделы на устройстве.
Тем не менее, можно сканировать весь диск и попытаться определить «волшебные байты», которые отмечают начало файловых систем.
И наоборот, если вы используете fdisk
(или любой другой инструмент разделения) для создания новой таблицы разделов, инструмент перезапишет первые несколько байтов диска для сохранения этой новой таблицы.
На диске есть только одно начало, поэтому все, что вы делаете последним, будет «прилипать» к нему.
Однако обратите внимание, что некоторые форматы таблиц разделов (например, GPT) сохраняют резервные копии в разных местах (например, в конце диска для GPT), из которых можно восстановить некоторую информацию о разделах.
1: например, в первых 512 байтах для MBR или в первом и последнем 17408 байтах для GPT
2: диск может внутренне переназначить логические блоки на разные части физической среды, но это отображение невидимо (и не важно для) операционная система.
/dev/zero
уничтожение чего-то, аdd
стирание путем копирования. Факты, что байты оказываются нулевыми и что нулевые байты происходят из/dev/zero
какого-либо другого источника нулей, являются второстепенными деталями.