Удаление всех разделов из командной строки

40

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

Cerin
источник

Ответы:

44

Будет ли этого достаточно?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
рк.
источник
4
Это не удалит разделы. Удаляя разделы, он хотел сохранить MBR и просто очистить таблицу разделов.
Мирча Вутцовичи
2
Нет, похоже, это именно то, что мне нужно. Мне все равно, если данные все еще там. GParted показывает, что разделы исчезли после запуска этого, и это то, что я хотел.
Cerin
Мирча Вутковичи говорил не о ваших данных, а о загрузочном коде в вашей MBR. Теперь этого нет, потому что вы удалили его вместе с 4 первичными записями из таблицы разделов в стиле MBR.
JdeBP
1
Не забудьте отключить драйвер, иначе он не будет работать.
OrangeTux
Это также прекрасно работает, если вы использовали ZFS на диске и перенастроили его для чего-то другого. Ни стандартные разделы и форматы Windows или Linux не избавят от ярлыков ZFS, которые могут вызвать серьезные проблемы.
Тони Маро
33

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

wipefs -a /dev/sda

От man wipefs

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

wipefs не удаляет ни файловую систему, ни другие данные с устройства. При использовании без каких-либо параметров, wipefs перечисляет все видимые файловые системы и смещения их основных сигнатур.

wipefs вызывает BLKRRPART ioctl, когда стирает подпись таблицы разделов, чтобы сообщить ядру об изменении.

user144437
источник
12

Быстро и грязно: используйте gpartedдля удаления разделов, или если вы спешите:

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

Это уничтожит MBR диска (данные все еще не повреждены).

В качестве альтернативы:

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

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

voretaq7
источник
7

Смотрите man sfdisk, это не интерактивный вариант fdisk. Кроме этого, вы можете удалить всю таблицу разделов с помощью dd, как написал pk.

Свен
источник
6

Вы должны быть в состоянии использовать parted для этого, но это может потребовать некоторых сценариев для циклического прохождения разделов.

Decado
источник
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
Suncatcher
источник