Назад | Перейти на главную страницу

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

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

Этого было бы достаточно?

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

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

wipefs -a /dev/sda

Из man wipefs

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

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

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

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

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

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

Альтернативно:

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

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

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

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

Если мы говорим о разделах в стиле 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 байт.

count = 64

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

seek = 446

Основная таблица разделов в MBR (не говоря уже о GPT) расположена в 446 байтах, поэтому мы указываем dd искать 446 байт перед записью.

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

Я хотел сделать то же самое (кроме 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....

Используйте улучшенную неинтерактивную версию fdisk, которая sfdisk

Чтобы стереть таблицу разделов, используйте эту команду:

sfdisk --delete /dev/sda