Видалення всіх розділів з командного рядка


40

Як видалити всі розділи на пристрої з командного рядка в Linux (зокрема Ubuntu)? Я спробував подивитися на fdisk, але він відображає інтерактивну підказку. Я шукаю одну команду, якій я можу дати шлях до пристрою (наприклад, / dev / sda), і він видалить ext4, linux-swap та всі інші розділи, які він знайде. По суті, це було б те саме, що якби я відкрив GParted і вручну вибирав і видаляв усі розділи. Це здається досить простим, але, на жаль, я не зміг нічого знайти через Google.

Відповіді:


44

Цього вистачить?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc

4
Це не видалить розділи. Видаляючи розділи, він мав намір зберегти MBR та просто виповнити таблицю розділів.
Mircea Vutcovici

2
Ні, це, здається, робить саме те, що мені потрібно. Мені дуже не байдуже, чи є дані ще. GParted показує, що після запуску цього розділу немає, і саме цього я хотів.
Серін

Мірча Вутковичі говорила не про ваші дані, а про код завантаження у вашому MBR. Це тепер пішло, оскільки ви видалили його разом з 4-ма основними записами з таблиці розділів у стилі MBR.
JdeBP

1
Не забудьте відключити драйвер, інакше він не працюватиме.
OrangeTux

Це також чудово спрацьовує, якщо ви використовували ZFS на диску та переставляєте його на щось інше. Ні стандартний розділ Windows, ні формат, не позбудуться міток ZFS на ньому, що може призвести до великих проблем.
Тоні Маро

32

wipefsПрограма дозволяє легко видалити розділ столу підпис:

wipefs -a /dev/sda

З man wipefs

wipefs можуть видалити з вказаного пристрою файлову систему, рейд або таблицю розділів (магічні рядки), щоб зробити підписи невидимими для libblkid.

wipefs не видаляє саму файлову систему, ані інші дані з пристрою. При використанні без будь-яких опцій wipefs перераховує всі видимі файлові системи та зсуви їх основних підписів.

wipefs викликає ioctl BLKRRPART, коли він видалив підпис таблиці розділів, щоб повідомити ядро ​​про зміну.


12

Швидке та брудне: використовуйте gpartedдля видалення розділів або якщо ви поспішаєте:

dd if=/dev/zero of=/dev/[disk device] bs=512 count=1

Це збереже MBR накопичувача (Дані все ще недоторкані).

Як варіант:

dd if=/dev/zero of=/dev/[disk device]

щоб витерти весь диск (записати один пропуск нулів над усім. Не "захищено", але зазвичай досить добре), або використовувати інструмент "шредер диска" для безпечного очищення.


7

Дивіться man sfdisk, що є неінтерактивним варіантом fdisk. Крім цього, ви можете видалити всю таблицю розділів з dd, як писав pk.


6

Ви повинні мати змогу використовувати проділений для цього також, хоча це може включати певні сценарії, щоб пройти через розділи.


3

Якщо ми говоримо про розділи в стилі MBR ...

dd if=/dev/zero of=/dev/[disk device] bs=1 count=64 seek=446 conv=notrunc

Пояснення:

dd

Ця стандартна команда копіює байти з джерела і записує їх у пункт призначення. Це найпростіший гнучкий інструмент для цієї роботи.

if=/dev/zero

Тут ми вказуємо, що ми читаємо з /dev/zero, що є спеціальним пристроєм, який випромінює NULбайти - нулі.

of=/dev/[disk device]

Тут ми вказуємо, до якого пристрою ми пишемо.

bs=1

ddмислить з точки зору блоків . За замовчуванням розмір блоку може становити 512 байт, 1024 байти або 4096 байт, залежно від вашої системи. Однак нам потрібно розібратися з речами більш точно, тому ми говоримо ddвикористовувати розмір блоку в 1 байт.

кол = 64

Тут ми ddхочемо записати 64 блоки (або байти через наш bs=1параметр), оскільки первинна таблиця розділів складається з 4-х 16-байтних розділів розділів, загалом 64 байти.

шукати = 446

Таблиця первинних розділів в MBR (отже, тут не йдеться про GPT) знаходиться на 446 байтах, тому ми доручаємо ddшукати 446 байтів перед тим, як писати.

Розширені розділи, як правило, створюються за допомогою основного слота розділу для вказівки на розширену таблицю розділів, тому, якщо ми стираємо 4 первинні розділи, ми також ефективно витираємо розширену таблицю розділів; ОС не зможе її знайти, тому не зможе її читати та інтерпретувати. (Якщо ви хочете стерти розширену таблицю розділів, вам потрібно знати більше про операційну систему; різні операційні системи роблять розширені розділи різними способами.)


2

Я хотів зробити те ж саме (за винятком Slackware 14.2), але виявив, що не міг здійснити більшість запропонованих тут рішень. Найбільш продумане та добре задокументоване рішення створило нові проблеми для створення замінних розділів. Це видалило розділ, але деяке програмне забезпечення для розділення, очевидно, автоматично знайшло резервне копіювання розділу.

Я виявив, що f3probe ( http://oss.digirati.com.br/f3 ) вирішив проблему видалення всіх розділів, швидко та легко, працюючи з накопичувачами великої ємності, і створив рівно 1 розділ, що охоплює весь диск, що було легко видалити.

Звідти було також легко створювати нові перегородки прямим способом.

тобто

f3probe --destructive --time-ops /dev/sdb
# Now we know only 1 partition exists on /dev/sdb
#    which is /dev/sdb1
#
# Unmount that partition
umount /dev/sdb1

#
# Delete that single partition
parted /dev/sdb rm 1

#
# Now you can create new partitions
# i.e. parted /dev/sdb mkpart primary fat32 1049K 15.8G
# 
# Update /etc/fstab before rebooting....

0

Використовуйте вдосконалену неінтерактивну версію fdisk, що є sfdisk

Для видалення таблиці розділів використовуйте цю команду:

sfdisk --delete /dev/sda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.