dd จะ = = / dev / ศูนย์ของ = / dev / sda ล้างตารางพาร์ติชันที่มีอยู่แล้วหรือไม่


13

จะ# dd if=/dev/zero of=/dev/sdaล้างตารางพาร์ติชันที่มีอยู่แล้วหรือไม่

หรือเป็นวิธีอื่น ๆ เช่นทำ

# fdisk /dev/sda g (สำหรับ GPT)

ล้างเลขศูนย์ที่เขียนโดย/dev/zero?


6
นั่นไม่ได้/dev/zeroเช็ดอะไรออกไป แต่ก็ddเช็ดออกโดยคัดลอกมัน ข้อเท็จจริงที่ว่าไบต์เกิดขึ้นเป็นศูนย์และว่าศูนย์ไบต์เกิดขึ้น/dev/zeroแทนที่จะเป็นศูนย์อื่นแหล่งรายละเอียดเล็ก ๆ น้อย ๆ
chrylis -on strike-

2
หากคุณเพียงต้องการเช็ดตารางพาร์ทิชันwipefsอาจเชื่อถือได้มากขึ้น
ท่อ

คำตอบ:


23

จะdd if=/dev/zero of=/dev/sdaล้างตารางพาร์ติชันที่มีอยู่แล้วหรือไม่

ใช่ตารางพาร์ทิชันอยู่ในส่วนแรกของไดรฟ์ดังนั้นการเขียนทับมันจะทำลายมัน ที่ddจะเขียนทับไดรฟ์ทั้งหมดหากคุณปล่อยให้มันรัน (ดังนั้นจะใช้เวลาค่อนข้างนาน)

สิ่งที่ต้องการdd bs=512 count=50 if=/dev/zero of=/dev/sdaจะเพียงพอที่จะเขียนทับ 50 ภาคแรกรวมถึงตารางพาร์ติชัน MBR และ GPT หลัก แม้ว่าอย่างน้อยจะเป็นไปตาม Wikipedia แต่GPT มีสำเนาสำรองของตารางพาร์ติชั่นในตอนท้ายของไดรฟ์ดังนั้นการเขียนทับเฉพาะส่วนที่อยู่ในส่วนหัวของไดรฟ์อาจไม่เพียงพอ

(คุณไม่จำเป็นต้องใช้ddแต่. head -c10000 /dev/zero > /dev/sdaหรือcat /bin/ls > /dev/sdaจะมีผลเช่นเดียวกัน.)

เหตุใดfdisk /dev/sda g(สำหรับ GPT) ลบเลขศูนย์ที่เขียนโดย / dev / ศูนย์

ใช่ด้วย (หากคุณบันทึกการเปลี่ยนแปลง)

(อย่างไรก็ตามการใช้ถ้อยคำในชื่อเป็นเพียงความสับสน/dev/zeroในตัวเองไม่ได้ทำอะไรมากไปกว่าการจัดเก็บปกติใด ๆ )


หมายเหตุด้านข้าง: ถ้าผลลัพธ์ของตัวอักษร/bin/lsสั้นเพียงพอการดำเนินการเขียนอาจเขียนทับ MBR บางส่วนเพียงไม่กี่ไบต์และส่วนที่สำคัญที่สุด (ส่วนเริ่มต้นและส่วนท้ายของพาร์ติชั่น) ยังคงเหมือนเดิม แม้ว่าจะต้องติดตั้ง MBR ใหม่ (โดยทั่วไปแล้วgrub --install /dev/sda) เพื่อให้ระบบสามารถบูตได้อีกครั้ง
peterh - Reinstate Monica

8
@ peterh โปรดทราบว่าพวกเขากำลังเปลี่ยนเส้นทางlsไบนารีจริงไม่ใช่เอาท์พุทจากการทำงาน เอลฟ์ไบนารี "Hello World" ที่เล็กที่สุดที่เป็นไปได้ดูเหมือนจะเป็น98 ไบต์ (น้อยกว่า MBR) แต่ฉันคิดว่ามันปลอดภัยที่จะสมมติว่าไบนารี่ที่มีคุณสมบัติจริงควรใหญ่กว่า MBR (การใช้ FreeBSD ที่มีชื่อเสียงน้อยlsคือ 32784 ไบต์ยาวหรือใหญ่พอที่จะเขียนทับส่วนเริ่มต้นของดิสก์ของ GPT) ;)
n.st

โอ้ใช่คุณสามารถใช้ผลลัพธ์ของlsเกินไป รายชื่อ/usr/binอาจจะยาวพอ ฉันจะใช้echoเป็นตัวอย่าง แต่ IIRC คุณต้องการเกือบ 500 ไบต์เพื่อเขียนทับตารางพาร์ติชัน MBR ดังนั้นมันจึงค่อนข้างเหนื่อยที่จะพิมพ์ (จำนวนที่แน่นอนคืออะไร)
ilkkachu

1
คุณควรใช้ bs และนับด้วย dd สำหรับสิ่งนี้มิฉะนั้นจะเกิดขึ้นในบางครั้งคุณจะต้องเซกเตอร์เป็นศูนย์ 512 ไบต์สำหรับดิสก์แบบดั้งเดิม (ดู @ n.st ด้านล่าง) ในความเป็นจริงตารางพาร์ทิชันอยู่ท้ายสุดและมีขนาดเล็กพอสำหรับคุณที่จะทำสำเนาและศูนย์ด้วยตัวแก้ไขฐานสิบหกก่อนที่จะคัดลอกกลับเพื่อรักษาเนื้อหาการบูต มีเครื่องมือสำหรับสิ่งนี้เช่นกันมันเป็นเรื่องธรรมดาสำหรับการเริ่มต้นดิสก์ NAS เพื่อทำสิ่งนี้
mckenzm

1
ต้องการเพิ่มในกรณีของไดรฟ์ GPT คุณต้องล้างส่วนท้ายของดิสก์ด้วย การใช้งาน GPT ที่สอดคล้องจะตรวจสอบตารางที่สองที่ท้ายดิสก์และเขียนส่วนแรกอีกครั้งด้วย (ไม่สนใจสิ่งที่คุณมีอยู่แล้ว) ดู: news.ycombinator.com/item?id=18541493
wbkang

10

ตารางพาร์ติชันจะถูกเก็บไว้ใกล้กับจุดเริ่มต้นที่1ของอุปกรณ์ดิสก์(ลอจิคัล2 )

เขียนทับพื้นที่นั้นด้วยสิ่งใด (ศูนย์จาก/dev/zeroหรือข้อมูลอื่น ๆ ) จะแทนที่ตารางพาร์ทิชันด้วยซึ่งพูดพล่อยๆดังนั้นจะไม่ชัดเจนที่เริ่มพาร์ทิชันในอุปกรณ์
หนึ่งยังคงสามารถสแกนดิสก์ทั้งหมดและพยายามระบุ "วิเศษไบต์" ที่ทำเครื่องหมายจุดเริ่มต้นของระบบไฟล์แม้ว่า

ในทางกลับกันถ้าคุณใช้fdisk(หรือเครื่องมือการแบ่งพาร์ติชันอื่น ๆ ) เพื่อสร้างตารางพาร์ติชันใหม่เครื่องมือจะเขียนทับสองสามไบต์แรกของดิสก์เพื่อเก็บตารางใหม่นั้น

มีเพียงหนึ่งจุดเริ่มต้นที่ดิสก์ดังนั้นสิ่งที่คุณทำล่าสุดจะ "ติด" ที่นั่น

อย่างไรก็ตามโปรดทราบว่าบางรูปแบบตารางพาร์ติชัน (เช่น GPT) จะเก็บสำเนาสำรองไว้ในที่ต่าง ๆ (เช่นที่ส่วนท้ายของดิสก์สำหรับ GPT) ซึ่งข้อมูลพาร์ติชันบางส่วนสามารถกู้คืนได้

1: เช่นใน512 ไบต์แรกสำหรับ MBRหรือ17408 ไบต์แรกและสุดท้ายสำหรับ GPT
2: ไดรฟ์สามารถทำการแมปบล็อกตรรกะภายในส่วนต่าง ๆ ของสื่อทางกายภาพ แต่การทำแผนที่นั้นจะมองไม่เห็น (และไม่สำคัญ) ระบบปฏิบัติการ


1
เกือบถูกต้อง - ตารางพาร์ติชัน (ชนิด MBR เก่า) อยู่ในหน่วยไบต์ 1BE - 1FD ของ MBR ไบต์สองสามตัวแรกมี IBL (ตัวบูตเริ่มต้น)
RudiC

@RudiC จุดที่ดีฉันได้ระบุไว้อย่างแม่นยำมากขึ้นในขณะนี้
n.st
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.