Excluindo todas as partições da linha de comando

40

Como você exclui todas as partições em um dispositivo da linha de comando no Linux (especificamente Ubuntu)? Eu tentei olhar para o fdisk, mas ele apresenta um prompt interativo. Estou procurando por um único comando, que possa fornecer um caminho para o dispositivo (por exemplo, / dev / sda) e ele excluirá o ext4, linux-swap e quaisquer outras partições que encontrar. Essencialmente, isso seria o mesmo que abrir o GParted e selecionar e excluir manualmente todas as partições. Parece bastante simples, mas infelizmente não consegui encontrar nada através do Google.

Cerin
fonte

Respostas:

44

Isso seria suficiente?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pk.
fonte
4
Isso não excluirá as partições. Ao excluir as partições, ele pretendia preservar o MBR e apenas esvaziar a tabela de partições.
Mircea Vutcovici 23/03
2
Não, isso parece fazer exatamente o que eu preciso. Eu realmente não me importo se os dados ainda estão lá. GParted mostra que as partições desapareceram depois de executar isso, e era isso que eu queria.
Cerin 24/03
Mircea Vutcovici não estava falando sobre seus dados, mas sobre o código de inicialização no seu MBR. Isso acabou, porque você o apagou junto com as 4 entradas principais da tabela de partições no estilo MBR.
JdeBP
11
Não se esqueça de desmontar o driver, caso contrário ele não funcionará.
precisa
Isso também funciona muito bem se você usou o ZFS em uma unidade e o está redirecionando para outra coisa. Nenhum particionamento e formato padrão do Windows ou Linux se livrará dos rótulos do ZFS, o que pode causar grandes problemas.
Tony Maro
32

O wipefsprograma permite excluir facilmente a assinatura da tabela de partições:

wipefs -a /dev/sda

A partir de man wipefs

Os wipefs podem apagar assinaturas do sistema de arquivos, raid ou tabela de partição (strings mágicas) do dispositivo especificado para tornar as assinaturas invisíveis para libblkid.

O wipefs não apaga o próprio sistema de arquivos nem outros dados do dispositivo. Quando usado sem nenhuma opção, o wipefs lista todos os sistemas de arquivos visíveis e os deslocamentos de suas assinaturas básicas.

O wipefs chama o BLKRRPART ioctl quando ele apaga uma assinatura da tabela de partições para informar o kernel sobre a alteração.

user144437
fonte
12

Rápido e sujo: use gpartedpara excluir as partições ou se estiver com pressa:

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

Isso zapará o MBR da unidade (os dados ainda estão intactos).

Alternativamente:

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

para limpar toda a unidade (escreva uma única passagem de zeros sobre tudo. Não é "seguro", mas geralmente é bom o suficiente) ou use uma ferramenta de "fragmentação de disco" para uma limpeza segura.

voretaq7
fonte
7

Veja man sfdisk, que é uma variante não interativa do fdisk. Fora isso, você pode excluir toda a tabela de partições com dd, como pk escreveu.

Sven
fonte
6

Você deve poder usar parted para isso também, embora isso possa envolver algum script para percorrer as partições.

Decado
fonte
3

Se estamos falando de partições no estilo MBR ...

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

Explicação:

dd

Este comando padrão copia bytes de uma fonte e os grava em um destino. É a ferramenta flexível mais simples para este trabalho.

if=/dev/zero

Aqui, especificamos que estamos lendo /dev/zero, que é um dispositivo especial que emite NULbytes - zeros.

of=/dev/[disk device]

Aqui, especificamos em qual dispositivo estamos escrevendo.

bs=1

ddpensa em termos de blocos . O tamanho padrão do bloco pode ser 512 bytes, 1024 bytes ou 4096 bytes, dependendo do seu sistema. No entanto, precisamos abordar as coisas com mais precisão do que isso, por isso dizemos ddpara usar um tamanho de bloco de 1 byte.

count = 64

Aqui, dizemos ddpara escrever 64 blocos (ou bytes, devido ao nosso bs=1parâmetro), uma vez que a tabela de partição primária consiste em 4 entradas de partição de 16 bytes, para um total de 64 bytes.

seek = 446

A tabela de partição primária dentro do MBR (portanto, sem falar aqui da GPT) está localizada em 446 bytes, portanto, instruímos dda procurar 446 bytes antes de escrever.

Partições estendidas são geralmente criadas usando um slot de partição primário para apontar para a tabela de partições estendidas; portanto, se apagarmos as 4 partições primárias, também limparemos efetivamente a tabela de partições estendidas; o sistema operacional não poderá encontrá-lo, portanto, não poderá lê-lo e interpretá-lo. (Se você deseja limpar a tabela de partições estendidas, precisará saber mais sobre o sistema operacional; diferentes sistemas operacionais realizam partições estendidas de maneiras diferentes.)

Michael Mol
fonte
2

Eu queria fazer a mesma coisa (exceto no Slackware 14.2), mas achei que não conseguia efetuar a maioria das soluções propostas aqui, com a solução mais elaborada e bem documentada criando novos problemas para a criação de partições de substituição. Isso excluiu a partição, mas algum software de particionamento aparentemente encontrou os backups da partição automaticamente.

Descobri que o f3probe ( http://oss.digirati.com.br/f3 ) resolveu o problema de excluir todas as partições, de forma rápida e fácil, trabalhando com unidades de grande capacidade, e criei exatamente 1 partição abrangendo toda a unidade, o que foi fácil deletar.

Também foi fácil, a partir daí, criar novas partições, de maneira direta.

ie

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....
John
fonte
0

Use a versão não interativa aprimorada do fdisk, que é sfdisk

Para apagar a tabela de partição, use este comando:

sfdisk --delete /dev/sda
Suncatcher
fonte