Как удалить все разделы на устройстве из командной строки в 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