GPT หรือ MBR: ฉันจะรู้ได้อย่างไร


คำตอบ:


87

คุณสามารถใช้parted -lเพื่อกำหนดประเภทของตารางพาร์ติชัน เช่น:

$ sudo parted -l
Model: ATA TOSHIBA THNSNS25 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  32.2GB  32.2GB  primary  ext4         boot
 2      32.2GB  256GB   224GB   primary  ext4


Model: ATA Hitachi HDT72101 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4            boot
 2      32.2GB  996GB   964GB   primary  ext4
 3      996GB   1000GB  4295MB  primary  linux-swap(v1)

Partition Tableข้อมูลแสดงให้เห็นว่าผมใช้msdosตารางพาร์ทิชัน MBR (หนึ่งยังคงใช้กันทั่วไปสำหรับ Linux และ Windows) บนดิสก์ทั้ง จากmanหน้าpartedสามารถสร้าง (และหวังว่าจะระบุ) ประเภทพาร์ติชันตารางต่อไปนี้ (หรือมากกว่านั้นอย่างกว้างขวาง `ฉลากดิสก์ '):

bsd
dvh
gpt    - this is a GPT partition table
loop   - this is raw disk access without a partition table
mac
msdos  - this is a standard MBR partition table
pc98
sun

ปรับปรุง

เป็นมูลค่าเพิ่มคำสั่งสำหรับรายการพาร์ติชันเดียวเนื่องจากไม่ชัดเจนโดยไม่มีความรู้partedและอาจเป็นความเจ็บปวดในการค้นหาข้อมูลที่คุณต้องการหากมีหลายไดรฟ์ สำหรับ/dev/sdaคุณจะทำ:

parted /dev/sda print

นั่นคือคำสั่งที่ดีแกรม แม้ว่าฉันจะใช้ Linux มาหลายปีแล้ว แต่ฉันก็ไม่เคยสังเกตเลย ขอบคุณ!
ทิม

3
parted /dev/sda pจะทำเช่นกัน
sjas

ฉันต้องทำ "sudo parted -l"
Santropedro

33

บน linux คุณสามารถตรวจสอบสิ่งนี้ผ่านgdiskเครื่องมือที่ควรมีไว้สำหรับ distro ใด ๆ

gdisk -l /dev/sda

นี่/dev/sdaเป็นโหนดอุปกรณ์ของไดรฟ์ทางกายภาพไม่พาร์ทิชัน ( /dev/sda1, /dev/sda2ฯลฯ เป็นพาร์ทิชัน)

หากคุณเห็นสิ่งที่รวมถึง:

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

คุณมีดิสก์สไตล์ MBR ไม่ต้องกังวลนี่ไม่ได้ทำอันตรายใด ๆ

หากคุณไม่เห็นคำเตือนนี้คุณมีดิสก์ GPT หรือGPT ไฮบริด / MBRดิสก์ ส่วนใหญ่จะใช้ในภายหลังบนเครื่อง Apple ที่มีวัตถุประสงค์เพื่อใช้ MS Windows รุ่นดูอัลบูตซึ่งไม่รองรับ GPT gdiskจะระบุสิ่งนี้ด้วย:

Found valid GPT with hybrid MBR; using GPT

อาจใช้ในสถานการณ์อื่นที่ต้องการการสนับสนุนสำหรับทั้งสองสไตล์


หรือการย้อนกลับ - การพยายามใช้งานcfdiskในพาร์ติชัน GPT ก็จะส่งผลให้เกิดคำเตือน
orion

หากไม่ได้ติดตั้งและไม่อยู่ในgdiskแพ็คเกจสามารถพบได้ในgptfdiskแพ็คเกจ ... อย่างน้อยใน Gentoo

2
@orion ฉันจะไม่แนะนำว่าเป็นเครื่องมือบางรุ่นเช่นfdiskหรือcfdiskอาจสนับสนุน GPT และดังนั้นจึงไม่แสดงข้อผิดพลาด
goldilocks

สำหรับผมgdiskตรวจพบ GPT ไฮบริด + ตารางพาร์ทิชัน MBR Found valid GPT with hybrid MBR; using GPT.และให้ นี่น่าจะเป็นวิธีเดียวที่จะตรวจจับตารางไฮบริด
แกรม

@ Graeme: ขอบคุณ ฉันไม่รู้สิ่งเหล่านี้ (การอ้างอิงแบบผสมผสานดั้งเดิมถูกแก้ไขโดย Stephane Chazelas) แต่ฉันอ่านและเพิ่มรายละเอียดเล็กน้อย
goldilocks

17

เนื่องจากไม่ได้ระบุระบบปฏิบัติการนี่คือวิธีFreeBSDในการทำสิ่งต่างๆ

ทั้งหมดนี้ทำผ่านgpartคำสั่ง (ย่อมาจาก GEOM partioner - ไม่มีส่วนเกี่ยวข้องกับ GNU)

วิgpart showจะแสดงพาร์ติชันที่มีอยู่ทั้งหมดของดิสก์ทั้งหมด แต่คุณสามารถระบุอุปกรณ์เพื่อให้มีลักษณะที่แม่นยำยิ่งขึ้นในพาร์ติชัน:

  • เลย์เอาต์ของพาร์ติชันดั้งเดิมที่มีMBR (aka "msdos") และโครงร่างพาร์ติชันBSD (โดยปกติจะต้องมีการแบ่งพาร์ติชัน 2 ระดับสำหรับระบบ BSD ยกเว้นการใช้ดิสก์เต็ม):

    $gpart show

    =>      63  67108801  ada0  MBR  (32G)
            63  67108545     1  freebsd  [active]  (32G)
      67108608       256        - free -  (128k)
    
    =>       0  67108545  ada0s1  BSD  (32G)
             0   2097152       2  freebsd-swap  (1.0G)
       2097152  65011393       1  freebsd-ufs  (31G)
    
  • เค้าโครงพาร์ติชันที่ทันสมัยโดยใช้GPT :

    $gpart show /dev/ada2

    =>       34  976773101  ada2  GPT  (465G)
             34          6        - free -  (3.0k)
             40        128     1  freebsd-boot  (64k)
            168   67108864     2  freebsd-swap  (32G)
       67109032  901775360     3  freebsd-zfs  (430G)
    

ต้องการทราบข้อมูลเพิ่มเติมทั้งหมดอยู่ในคู่มือgpart


9

ด้วยudisksบน Linux:

$ sudo /lib/udev/udisks-part-id /dev/sda
using device_file=/dev/sda syspath=/sys/devices/pci0000:00/0000:00:0b.0/ata1/host0/target0:0:0/0:0:0:0/block/sda, offset=0 ao=0 and number=0 for /dev/sda
Entering MS-DOS parser (offset=0, size=500107862016)
MSDOS_MAGIC found
found partition type 0xee => protective MBR for GPT
Exiting MS-DOS parser
Entering EFI GPT parser
GPT magic found
partition_entry_lba=2
num_entries=128
size_of_entry=128
Leaving EFI GPT parser
EFI GPT partition table detected
UDISKS_PARTITION_TABLE=1
UDISKS_PARTITION_TABLE_SCHEME=gpt
UDISKS_PARTITION_TABLE_COUNT=4

ด้านบนฉันมีไดรฟ์ที่มีการแบ่งพาร์ติชันแบบไฮบริด GPT + MS-DOS ในกรณีดังกล่าวเคอร์เนล Linux จะละเว้นการแบ่งพาร์ติชัน MS-DOS ซึ่งเป็นสาเหตุที่udisksทำให้ UDISKS_PARTITION_TABLE_SCHEME ตั้งค่าเป็น UDISKS_PARTITION_TABLE_SCHEME

เครื่องมือ udisks-part-id นั้นถูกใช้เพื่อเติมฐานข้อมูล udev ดังนั้นหากคุณudisksติดตั้งแล้วคุณควรจะสามารถสืบค้นข้อมูลนั้นได้แม้ในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษด้วย:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt

2
โปรดทราบว่าคุณจะได้รับผลลัพธ์ที่คล้ายกันไม่ว่าจะมี GPT + MBR ไฮบริดหรือไม่ก็ตาม GPT ต้องการ MBR ปลอมที่มีพาร์ติชันดิสก์เต็มรูปแบบชนิด0xeeเดียว ในไฮบริดนี่เป็น MBR ปกติที่มีหนึ่ง0xeeพาร์ติชัน (และอาจเกิดปัญหาใหญ่หากข้อมูล MBR ไม่สอดคล้องกับข้อมูล GPT)
แกรม

6

ใช้

$ sudo fdisk -l 

Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x987c1a05


Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048    999423    997376   487M 83 Linux
/dev/sda2       1001470 250068991 249067522 118.8G  5 Extended
/dev/sda5       1001472 250068991 249067520 118.8G 8e Linux LVM

ดูประเภท Disklabel: ดอส ถ้ามันแสดงให้เห็นว่านั่นหมายความว่ามันเป็น MBR schema อื่น GPT schema



1

blkidคุณสามารถใช้

ตัวอย่างที่มีเอาต์พุต:

# blkid /dev/sdc
/dev/sdc: PTUUID="92f03b9b-7402-4ad2-8316-08a991c237b3" PTTYPE="gpt"

# blkid -o export /dev/sdc
DEVNAME=/dev/sdc
PTUUID=92f03b9b-7402-4ad2-8316-08a991c237b3
PTTYPE=gpt

หรือในสคริปต์ด้วย-o valueตัวเลือก:

disk=$1
part_type=$(blkid -o value -s PTTYPE $disk)
case $part_type in
    gpt)  echo "GPT";;
    dos)  echo "MBR";;
    *)    echo "partition is $part_type";;
esac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.