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