Liệu dd if = / dev / zero of = / dev / sda sẽ xóa sạch bảng phân vùng có sẵn?


13

Sẽ # dd if=/dev/zero of=/dev/sdaxóa sạch một bảng phân vùng có sẵn?

Hoặc là nó theo cách khác, tức là, không

# fdisk /dev/sda g (đối với GPT)

xóa sạch các số không được viết bởi /dev/zero?


6
Đó không phải là /dev/zeroxóa sạch thứ gì đó, nó sẽ ddxóa sạch nó bằng cách sao chép nó. Sự thật là các byte xảy ra bằng 0 và các byte bằng 0 xảy ra /dev/zerothay vì một số nguồn khác là các chi tiết nhỏ.
chrylis -on đình công-

2
Nếu bạn chỉ muốn xóa bảng phân vùng, wipefs có thể đáng tin cậy hơn.
ống

Câu trả lời:


23

Sẽ dd if=/dev/zero of=/dev/sdaxóa sạch một bảng phân vùng có sẵn?

Có, bảng phân vùng nằm trong phần đầu tiên của ổ đĩa, vì vậy viết lên nó sẽ phá hủy nó. Điều đó ddsẽ ghi trên toàn bộ ổ đĩa nếu bạn để nó chạy (vì vậy sẽ mất khá nhiều thời gian).

Một cái gì đó tương tự dd bs=512 count=50 if=/dev/zero of=/dev/sdasẽ đủ để ghi đè lên 50 lĩnh vực đầu tiên, bao gồm bảng phân vùng MBR và GPT chính. Mặc dù ít nhất là theo Wikipedia, GPT có một bản sao thứ cấp của bảng phân vùng ở cuối ổ đĩa, do đó, việc ghi đè chỉ phần trong đầu ổ đĩa có thể không đủ.

(Tuy nhiên, bạn không phải sử dụng dd. head -c10000 /dev/zero > /dev/sdaHoặc cat /bin/ls > /dev/sdasẽ có tác dụng tương tự.)

thực hiện fdisk /dev/sda g(đối với GPT) quét sạch các số không được viết bởi / dev / zero?

Cũng có (với điều kiện bạn lưu các thay đổi).

(Tuy nhiên, cụm từ trong tiêu đề chỉ gây nhầm lẫn, /dev/zerobản thân nó không làm gì hơn bất kỳ bộ lưu trữ thông thường nào.)


Lưu ý bên lề: nếu đầu ra của /bin/lsđủ ngắn, thì thao tác ghi có thể chỉ ghi đè lên một vài byte của MBR và phần quan trọng nhất (bắt đầu và kết thúc các phân vùng) có thể vẫn còn nguyên. Mặc dù cài đặt lại MBR (phổ biến nhất grub --install /dev/sda) , vẫn được yêu cầu để làm cho hệ thống có thể khởi động lại.
peterh - Phục hồi Monica

8
@peterh Lưu ý rằng họ đang chuyển hướng lsnhị phân thực tế chứ không phải đầu ra từ việc chạy nó. Nhị phân ELF "Hello World" nhỏ nhất có thể là 98 byte (ít hơn MBR), nhưng tôi nghĩ rằng sẽ an toàn khi giả định rằng bất kỳ nhị phân nào có tính năng thực tế phải lớn hơn MBR (triển khai FreeBSD nhỏ nổi tiếng lslà 32784 byte dài, thậm chí đủ lớn để ghi đè lên phần bắt đầu của đĩa GPT). ;)
17:51

Ồ vâng, bạn có thể sử dụng đầu ra của lsquá. Một danh sách /usr/bincó lẽ sẽ đủ dài. Tôi sẽ sử dụng echonhư một ví dụ, nhưng IIRC bạn cần gần 500 byte để ghi đè lên bảng phân vùng MBR, vì vậy sẽ hơi mệt khi gõ. (bất kể con số chính xác là gì)
ilkkachu

1
Bạn có lẽ nên sử dụng bs và đếm với dd cho việc này, nếu không nó sẽ diễn ra trong một thời gian, Bạn chỉ cần zero khu vực. 512 byte cho các đĩa kế thừa. (xem @ n.st bên dưới) Trên thực tế, bảng phân vùng nằm ở cuối phần này và đủ nhỏ để bạn tạo một bản sao và số 0 với trình soạn thảo hex trước khi sao chép lại để giữ lại nội dung khởi động. Cũng có các công cụ cho việc này, thông thường việc khởi tạo đĩa NAS để thực hiện điều này.
mckenzm

1
Chỉ muốn thêm rằng trong trường hợp ổ đĩa GPT, bạn cũng phải xóa hết đĩa. Việc triển khai GPT tuân thủ sẽ kiểm tra bảng phụ ở cuối đĩa và viết lại phần đầu tiên (bỏ qua mọi thứ bạn đã có). Xem: news.ycombinator.com/item?id=18541493
wbkang

10

Bảng phân vùng được lưu trữ gần đầu 1 của thiết bị đĩa (logic 2 ).

Ghi đè khu vực đó bằng bất cứ thứ gì (số không từ /dev/zerohoặc bất kỳ dữ liệu nào khác) sẽ thay thế bảng phân vùng bằng chữ vô nghĩa, do đó sẽ không còn rõ ràng khi các phân vùng trên thiết bị bắt đầu.
Tuy nhiên, người ta vẫn có thể quét toàn bộ đĩa và cố gắng xác định "byte ma thuật" đánh dấu sự khởi đầu của các hệ thống tệp.

Ngược lại, nếu bạn sử dụng fdisk(hoặc bất kỳ công cụ phân vùng nào khác) để tạo bảng phân vùng mới, công cụ sẽ ghi đè lên một vài byte đầu tiên của đĩa để lưu trữ bảng mới đó.

Chỉ có một khởi đầu cho đĩa, vì vậy bất cứ điều gì bạn làm cuối cùng sẽ "dính" vào đó.

Tuy nhiên, lưu ý rằng một số định dạng bảng phân vùng (như GPT) sẽ giữ các bản sao lưu ở các vị trí khác nhau (ví dụ: ở cuối đĩa cho GPT), từ đó một số thông tin phân vùng có thể được phục hồi.

1: ví dụ như trong 512 byte đầu tiên cho một MBR hoặc đầu tiên và cuối cùng 17.408 byte cho một GPT
2: ổ đĩa nội bộ có thể remap các khối logic đến các bộ phận khác nhau của môi trường vật lý, nhưng bản đồ đó là vô hình (và không quan trọng cho) hệ điều hành.


1
Hầu như đúng - bảng phân vùng (loại cũ, MBR) nằm trong byte 1BE - 1FD của MBR. Một vài byte đầu tiên chứa IBL (bộ tải khởi động ban đầu).
RudiC

@RudiC Điểm hay, tôi đã nói chính xác hơn bây giờ.
n.st
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.