Xóa tất cả các phân vùng khỏi dòng lệnh


40

Làm cách nào để xóa tất cả các phân vùng trên thiết bị khỏi dòng lệnh trên Linux (cụ thể là Ubuntu)? Tôi đã thử nhìn vào fdisk, nhưng nó đưa ra một dấu nhắc tương tác. Tôi đang tìm kiếm một lệnh duy nhất mà tôi có thể đưa ra một đường dẫn thiết bị (ví dụ / dev / sda) và nó sẽ xóa ext4, linux-exchange và bất kỳ phân vùng nào khác mà nó tìm thấy. Về cơ bản, điều này sẽ giống như khi tôi mở GParted, và tự chọn và xóa tất cả các phân vùng. Điều này có vẻ khá đơn giản, nhưng thật không may, tôi không thể tìm thấy bất cứ điều gì thông qua Google.

Câu trả lời:


44

Điều này sẽ đủ?

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

4
Điều này sẽ không xóa các phân vùng. Bằng cách xóa các phân vùng, ông có nghĩa là bảo toàn MBR và làm trống bảng phân vùng.
Mircea Vutcovici

2
Không, điều này dường như làm chính xác những gì tôi cần. Tôi không thực sự quan tâm nếu dữ liệu vẫn còn đó. GParted cho thấy các phân vùng đã biến mất sau khi chạy cái này, và đó là điều tôi muốn.
Cerin

Mircea Vutcovici đã không nói về dữ liệu của bạn, nhưng về mã bootstrap trong MBR của bạn. Điều đó đã biến mất, bởi vì bạn đã xóa nó cùng với 4 mục chính từ bảng phân vùng kiểu MBR.
JdeBP

1
Đừng quên ngắt kết nối với trình điều khiển, nếu không nó sẽ không hoạt động.
OrangeTux

Điều này cũng hoạt động rất tốt nếu bạn đã sử dụng ZFS trên một ổ đĩa và đang tái sử dụng nó cho mục đích khác. Cả định dạng và phân vùng Windows hoặc Linux tiêu chuẩn sẽ không loại bỏ các nhãn ZFS trên đó có thể gây ra sự cố lớn cho bạn.
Tony Maro

32

Các wipefschương trình cho phép bạn dễ dàng xóa chữ ký phân vùng-bảng:

wipefs -a /dev/sda

Từ man wipefs

wipefs có thể xóa các chữ ký hệ thống tập tin, đột kích hoặc bảng phân vùng (chuỗi ma thuật) khỏi thiết bị được chỉ định để làm cho các chữ ký trở nên vô hình đối với libblkid.

wipefs không tự xóa hệ thống tập tin cũng như bất kỳ dữ liệu nào khác khỏi thiết bị. Khi được sử dụng mà không có bất kỳ tùy chọn nào, wipefs liệt kê tất cả các hệ thống tệp hiển thị và phần bù của chữ ký cơ bản của chúng.

wipefs gọi BLKRRPART ioctl khi nó đã xóa một chữ ký bảng phân vùng để thông báo cho kernel về sự thay đổi.


12

Nhanh và bẩn: sử dụng gpartedđể xóa các phân vùng hoặc nếu bạn đang vội:

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

Điều này sẽ hạ gục MBR của ổ đĩa (Dữ liệu vẫn còn nguyên).

Cách khác:

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

để xóa toàn bộ ổ đĩa (ghi một số không vào tất cả mọi thứ. Không "an toàn" nhưng thường đủ tốt) hoặc sử dụng công cụ "hủy đĩa" để xóa an toàn.


7

Xem man sfdisk, đó là một biến thể không tương tác của fdisk. Ngoài ra, bạn có thể xóa toàn bộ bảng phân vùng bằng dd, như pk đã viết.


6

Bạn sẽ có thể sử dụng parted cho aswell này, mặc dù điều đó có thể liên quan đến một số kịch bản để lặp qua các phân vùng.


3

Nếu chúng ta đang nói về phân vùng kiểu MBR ...

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

Giải trình:

dd

Lệnh chuẩn này sao chép byte từ một nguồn và ghi chúng vào đích. Đây là công cụ linh hoạt đơn giản nhất cho công việc này.

if=/dev/zero

Ở đây, chúng tôi xác định rằng chúng tôi đang đọc từ /dev/zerođó, một thiết bị đặc biệt phát ra NULbyte - số không.

of=/dev/[disk device]

Ở đây, chúng tôi chỉ định thiết bị nào chúng tôi đang viết.

bs=1

ddnghĩ về các khối . Kích thước khối mặc định có thể là 512 byte, 1024 byte hoặc 4096 byte, tùy thuộc vào hệ thống của bạn. Tuy nhiên, chúng tôi cần giải quyết mọi thứ chính xác hơn thế, vì vậy chúng tôi khuyên bạn ddnên sử dụng kích thước khối 1 byte.

đếm = 64

Ở đây, chúng tôi yêu ddcầu viết 64 khối (hoặc byte, vì bs=1tham số của chúng tôi ), vì bảng phân vùng chính bao gồm 4 mục phân vùng 16 byte, với tổng số 64 byte.

tìm kiếm = 446

Bảng phân vùng chính trong MBR (vì vậy, không nói về GPT ở đây) nằm ở vị trí 446 byte, vì vậy chúng tôi hướng dẫn ddtìm kiếm 446 byte trước khi viết.

Các phân vùng mở rộng thường được tạo bằng cách sử dụng một khe phân vùng chính để trỏ vào bảng phân vùng mở rộng, vì vậy nếu chúng ta xóa 4 phân vùng chính, chúng ta cũng xóa sạch bảng phân vùng mở rộng; HĐH sẽ không thể tìm thấy nó, vì vậy nó sẽ không thể đọc và giải thích nó. (Nếu bạn muốn xóa bảng phân vùng mở rộng, bạn sẽ cần biết thêm về hệ điều hành; các hệ điều hành khác nhau thực hiện phân vùng mở rộng theo các cách khác nhau.)


2

Tôi muốn làm điều tương tự (ngoại trừ trong Slackware 14.2) nhưng thấy rằng tôi không thể thực hiện được hầu hết các giải pháp được đề xuất ở đây, với giải pháp được làm tài liệu kỹ lưỡng và tốt nhất tạo ra các vấn đề mới để tạo phân vùng thay thế. Điều đó đã xóa phân vùng nhưng một số phần mềm phân vùng dường như tự động tìm thấy các bản sao lưu phân vùng.

Tôi thấy f3probe ( http://oss.digirati.com.br/f3 ) đã giải quyết vấn đề xóa tất cả các phân vùng, nhanh chóng và dễ dàng, làm việc với các ổ đĩa dung lượng lớn và tạo chính xác 1 phân vùng trên toàn bộ ổ đĩa, rất dễ dàng xóa.

Cũng dễ dàng, từ đó để tạo các phân vùng mới, theo cách đơn giản.

I E

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

Sử dụng phiên bản fdisk không tương tác được cải tiến, đó là sfdisk

Để xóa bảng phân vùng, sử dụng lệnh này:

sfdisk --delete /dev/sda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.