Usuwanie wszystkich partycji z wiersza poleceń

40

Jak usunąć wszystkie partycje na urządzeniu z wiersza poleceń w systemie Linux (szczególnie Ubuntu)? Próbowałem spojrzeć na fdisk, ale wyświetla on interaktywny monit. Szukam pojedynczego polecenia, które mogę podać ścieżkę urządzenia (np. / Dev / sda), a to usunie ext4, linux-swap i inne znalezione partycje. Zasadniczo byłoby to to samo, co gdybym miał otworzyć GParted i ręcznie wybrać i usunąć wszystkie partycje. Wydaje się to dość proste, ale niestety nic nie znalazłem za pośrednictwem Google.

Cerin
źródło

Odpowiedzi:

44

Czy to wystarczy?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pk.
źródło
4
To nie usunie partycji. Usuwając partycje, chciał zachować MBR i po prostu opróżnić tablicę partycji.
Mircea Vutcovici
2
Nie, wydaje się, że robi dokładnie to, czego potrzebuję. Nie dbam o to, czy dane nadal tam są. GParted pokazuje, że partycje zniknęły po uruchomieniu tego i właśnie tego chciałem.
Cerin
Mircea Vutcovici nie mówiła o twoich danych, ale o kodzie bootstrap w twoim MBR. Teraz go nie ma, ponieważ wymazałeś go wraz z 4 głównymi wpisami z tablicy partycji w stylu MBR.
JdeBP
1
Nie zapomnij odmontować sterownika, w przeciwnym razie nie zadziała.
OrangeTux,
Działa to również świetnie, jeśli używałeś ZFS na dysku i przeznaczasz go na coś innego. Ani standardowe partycjonowanie i format systemu Windows, ani Linux nie pozbędzie się na nim etykiet ZFS, co może powodować poważne problemy.
Tony Maro,
32

wipefsProgram pozwala łatwo usunąć podpis partycja tabeli:

wipefs -a /dev/sda

Z man wipefs

wipefs może kasować sygnatury systemu plików, nalotów lub tablic partycji (magiczne łańcuchy) z określonego urządzenia, aby podpisy były niewidoczne dla libblkid.

wipefs nie usuwa samego systemu plików ani żadnych innych danych z urządzenia. Gdy używany bez żadnych opcji, wipefs wyświetla listę wszystkich widocznych systemów plików i przesunięcia ich podstawowych podpisów.

wipefs wywołuje ioctl BLKRRPART po usunięciu podpisu tablicy partycji w celu poinformowania jądra o zmianie.

użytkownik144437
źródło
12

Szybki i brudny: użyj, gpartedaby usunąć partycje lub jeśli się spieszysz:

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

Spowoduje to zapełnienie MBR dysku (dane są nadal nienaruszone).

Alternatywnie:

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

aby wyczyścić cały dysk (napisz po jednym przejściu zer. Nie jest to „bezpieczne”, ale zwykle wystarczająco dobre), lub użyj narzędzia do niszczenia dysków w celu bezpiecznego czyszczenia.

voretaq7
źródło
7

Zobacz man sfdisk, który jest nieinteraktywnym wariantem fdisk. Poza tym możesz usunąć całą tablicę partycji za pomocą dd, jak napisał pk.

Sven
źródło
6

Powinieneś być w stanie użyć parted również do tego, chociaż może to wymagać skryptu do przechodzenia między partycjami.

Decado
źródło
3

Jeśli mówimy o partycjach w stylu MBR ...

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

Wyjaśnienie:

dd

To standardowe polecenie kopiuje bajty ze źródła i zapisuje je w miejscu docelowym. To najprostsze elastyczne narzędzie do tego zadania.

if=/dev/zero

W tym miejscu określamy, że /dev/zerodokonujemy odczytu , czyli specjalnego urządzenia, które emituje NULbajty - zera.

of=/dev/[disk device]

Tutaj określamy, do którego urządzenia piszemy.

bs=1

ddmyśli w kategoriach bloków . Domyślny rozmiar bloku może wynosić 512 bajtów, 1024 bajty lub 4096 bajtów, w zależności od systemu. Musimy jednak zająć się bardziej precyzyjnie, dlatego mówimy ddo użyciu bloku o wielkości 1 bajtu.

liczba = 64

Mówimy tutaj, ddaby napisać 64 bloki (lub bajty, z powodu naszego bs=1parametru), ponieważ podstawowa tablica partycji składa się z 4 16-bajtowych pozycji partycji, w sumie 64 bajty.

seek = 446

Podstawowa tablica partycji w MBR (więc nie mówiąc tu o GPT) mieści się w 446 bajtach, więc instruujemy, ddaby szukać 446 bajtów przed zapisem.

Partycje rozszerzone są zwykle tworzone przy użyciu gniazda partycji podstawowej, aby wskazywać na tabelę partycji rozszerzonej, więc jeśli usuniemy 4 partycje podstawowe, skutecznie wyczyścimy również tabelę partycji rozszerzonej; system operacyjny nie będzie w stanie go znaleźć, więc nie będzie w stanie go odczytać ani zinterpretować. (Jeśli chcesz wyczyścić rozszerzoną tablicę partycji, musisz dowiedzieć się więcej o systemie operacyjnym; różne systemy operacyjne wykonują rozszerzone partycje na różne sposoby.)

Michael Mol
źródło
2

Chciałem zrobić to samo (oprócz Slackware 14.2), ale stwierdziłem, że nie mogę wpłynąć na większość zaproponowanych tutaj rozwiązań, a najbardziej skomplikowane i dobrze udokumentowane rozwiązanie stwarza nowe problemy przy tworzeniu partycji zastępczych. To usunęło partycję, ale niektóre oprogramowanie do partycjonowania najwyraźniej znalazło kopie zapasowe partycji automatycznie.

Odkryłem, że f3probe ( http://oss.digirati.com.br/f3 ) rozwiązał problem usuwania wszystkich partycji, szybko i łatwo, pracując z dyskami o dużej pojemności, i utworzyłem dokładnie 1 partycję obejmującą cały dysk, co było łatwe usunąć.

Stąd też łatwe było tworzenie nowych partycji w prosty sposób.

to znaczy

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....
Jan
źródło
0

Użyj ulepszonej nieinteraktywnej wersji programu fdisk, którym jest sfdisk

Aby usunąć tablicę partycji, użyj tego polecenia:

sfdisk --delete /dev/sda
Suncatcher
źródło