Відповіді:
Чи
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 / zero?
Також так (за умови збереження змін).
(Однак, фразування в заголовку просто заплутане, /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
замість якогось іншого джерела нулів, є другорядними деталями.