dd를 사용하여 디스크에서 GPT 테이블을 지워야 합니다.

dd를 사용하여 디스크에서 GPT 테이블을 지워야 합니다.

fdisk영역에서 MBR을 지우려면 446바이트를 써야 하며, 파티션 정보 지우기를 포함하려면 처음 512바이트를 0으로 만드는 것으로 충분합니다.

dd if=/dev/zero of=/dev/sdb bs=512 count=1

parted일부 이전 파티션 테이블 정보가 더 이상 인식되지 않을 정도로 512바이트를 지우면 충분합니까 ?

답변1

512바이트를 쓰는 것만으로는 충분하지 않으며 정리가 필요합니다.최소 2개의 512바이트 블록.
원본 디스크에서 시작하는 경우:

# dd if=/dev/sdb bs=512 count=80000 | od -c
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
234200000
80000+0 records in
80000+0 records out
40960000 bytes (41 MB) copied, 0.99129 s, 41.3 MB/s

그런 다음 부팅 parted하고 파티션을 만듭니다.

# parted
(parted) unit GB
(parted) mklabel gpt                                                      
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 2.15GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 0 2
(parted) print                                                            
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 2.15GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  2.15GB  2.15GB               primary

(parted) quit                                                             
Information: You may need to update /etc/fstab.

디스크를 다시 살펴보면 512바이트가 넘는 데이터가 기록되었음을 알 수 있습니다.

# dd if=/dev/sdb bs=512 count=80000 | od -c
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000700 001  \0 356 376 377 377 001  \0  \0  \0 037   -   @  \0  \0  \0
0000720  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000760  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   U 252
0001000   E   F   I       P   A   R   T  \0  \0 001  \0   \  \0  \0  \0
0001020 351 356   t 217  \0  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0
0001040 037   -   @  \0  \0  \0  \0  \0   "  \0  \0  \0  \0  \0  \0  \0
0001060 376   ,   @  \0  \0  \0  \0  \0   n   T   l 342 306 351   ^   E
0001100 237   ~   i 270   t 034 227 004 002  \0  \0  \0  \0  \0  \0  \0
0001120 200  \0  \0  \0 200  \0  \0  \0   /  \n   Z 202  \0  \0  \0  \0
0001140  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0002000 257   = 306 017 203 204   r   G 216   y   =   i 330   G   } 344
0002020   _   _ 344   4 257   / 276   G 226 375   n 244 332   P 230 224
0002040  \0  \b  \0  \0  \0  \0  \0  \0 377   '   @  \0  \0  \0  \0  \0
0002060  \0  \0  \0  \0  \0  \0  \0  \0   p  \0   r  \0   i  \0   m  \0
0002100   a  \0   r  \0   y  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0002120  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
234200000
80000+0 records in
80000+0 records out
40960000 bytes (41 MB) copied, 0.988582 s, 41.4 MB/s

그런 다음 처음 512바이트만 정리하면 parted다음과 같은 정보를 찾을 수 있습니다.

# dd if=/dev/zero of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0030505 s, 168 kB/s
lm17base avanderneut # parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Warning: /dev/sdb contains GPT signatures, indicating that it has a GPT table.
However, it does not have a valid fake msdos partition table, as it should.
Perhaps it was corrupted -- possibly by a program that doesn't understand GPT
partition tables.  Or perhaps you deleted the GPT table, and are now using an
msdos partition table.  Is this a GPT partition table?
Yes/No? No                                                                
(parted) quit 

이 메시지를 없애려면 두 블록을 정리해야 합니다.

# dd if=/dev/zero of=/dev/sdb bs=512 count=2
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.00469557 s, 218 kB/s
# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Error: /dev/sdb: unrecognised disk label                                  
(parted) quit  

디스크 시작 부분에 기록된 모든 정보를 지우려면 최소한 제로화 작업이 필요합니다.(1개의 파티션) 512바이트 블록. 10개 파티션의 경우 이는 다음과 같이 증가합니다.다섯조각.


파티션 테이블의 복사본이 디스크 끝에 기록됩니다. 을 sgdisk사용하여 파티션 테이블을 백업한 다음 첫 번째 블록에 0을 쓴 다음 을 사용하여 복원을 시도하면 sgdisk유틸리티는 백업 파티션 테이블과 기본 파티션 테이블 간의 불일치에 대해 메시지를 표시합니다.

이미 설치했다면 먼저 GPT 데이터를 정리하는 것이 sgdisk가장 좋습니다 . sgdisk --clear이렇게 하면 테이블이 0으로 초기화되지 않지만 디스크 끝 백업 복사본에도 영향을 줍니다.

관련 정보