GPT atau MBR: Bagaimana saya tahu?

Jawaban:

87

Anda bisa menggunakan parted -luntuk menentukan tipe tabel partisi. Misalnya:

$ 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)

The Partition Tablelapangan menunjukkan bahwa saya menggunakan msdostabel partisi MBR (yang masih umum digunakan untuk Linux dan Windows) pada kedua disk. Dari manhalaman parteddapat membuat (dan dengan demikian mudah-mudahan mengidentifikasi) jenis tabel partisi berikut (atau lebih luas `label disk '):

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

Memperbarui

Layak menambahkan perintah untuk membuat daftar partisi tunggal karena ini tidak jelas tanpa sepengetahuan parteddan bisa merepotkan menemukan data yang Anda butuhkan jika ada beberapa drive. Untuk /dev/sdaAnda lakukan:

parted /dev/sda print
Graeme
sumber
Itu adalah perintah yang hebat, Graeme. Meskipun saya telah menggunakan Linux selama beberapa tahun, saya tidak pernah benar-benar memperhatikannya. Terima kasih!
Tim
3
parted /dev/sda pakan melakukannya juga.
sjas
saya harus melakukan "sudo parted -l"
Santropedro
33

Di linux, Anda dapat memeriksa ini melalui gdiskalat yang seharusnya tersedia untuk distro apa pun.

gdisk -l /dev/sda

Di sini, /dev/sdaadalah simpul perangkat dari drive fisik , bukan partisi ( /dev/sda1, /dev/sda2, dll partisi).

Jika Anda melihat sesuatu yang meliputi:

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

Anda memiliki disk gaya MBR. Jangan khawatir, ini tidak membahayakan.

Jika Anda tidak melihat peringatan ini, Anda memiliki disk GPT, atau disk GPT / MBR hybrid . Nanti digunakan sebagian besar pada mesin Apple yang dimaksudkan untuk versi dual-boot MS Windows yang tidak mendukung GPT. gdiskakan menunjukkan ini dengan:

Found valid GPT with hybrid MBR; using GPT

Mereka juga dapat digunakan dalam situasi lain di mana dukungan untuk kedua gaya diperlukan.

goldilocks
sumber
Atau sebaliknya - mencoba menggunakan cfdiskpartisi GPT juga akan menghasilkan peringatan.
orion
Jika tidak diinstal dan tidak dalam sebuah gdiskpaket, itu dapat ditemukan di dalam gptfdiskpaket ... setidaknya di Gentoo.
2
@orion Saya tidak akan merekomendasikan itu karena beberapa versi alat suka fdiskatau cfdiskmungkin mendukung GPT dan karena itu tidak menunjukkan kesalahan.
goldilocks
Bagi saya gdiskmendeteksi tabel partisi hybrid GPT + MBR dan memberikan Found valid GPT with hybrid MBR; using GPT.. Ini tampaknya menjadi satu-satunya metode yang akan mendeteksi tabel hybrid.
Graeme
@Graeme: Terima kasih. Saya tidak mengetahui hal ini (referensi hibrida asli diedit oleh Stephane Chazelas), tetapi saya sedikit membaca dan menambahkan beberapa detail.
goldilocks
17

Karena OS tidak ditentukan, inilah cara FreeBSD dalam melakukan sesuatu.

Semua dilakukan melalui gpartperintah (kependekan dari GEOM partioner - tidak ada hubungannya dengan GNU).

Sederhana gpart showakan menunjukkan kepada Anda semua partisi yang tersedia dari semua disk, tetapi Anda dapat menentukan perangkat untuk memiliki tampilan yang lebih tepat:

  • tata letak partisi lawas dengan MBR (alias "msdos") dan skema partisi BSD ( partisi 2 tingkat biasanya diperlukan untuk sistem BSD, kecuali menggunakan disk lengkap):

    $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)
    
  • tata letak partisi modern menggunakan 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)
    

Untuk mengetahui lebih lanjut, semua ada di gpartmanual .

Ouki
sumber
9

Dengan udisksdi 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

Di atas, saya memiliki drive dengan partisi GPT + MS-DOS hybrid. Dalam hal ini, kernel Linux mengabaikan partisi MS-DOS, itulah sebabnya udisksset UDISKS_PARTITION_TABLE_SCHEME ke gpt.

Alat udisks-part-id digunakan untuk mengisi basis data udev. Jadi, jika Anda sudah udisksmenginstal, Anda harus dapat menanyakan informasi itu bahkan sebagai pengguna yang tidak memiliki hak pribadi dengan:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
Stéphane Chazelas
sumber
2
Perhatikan bahwa Anda akan mendapatkan hasil yang serupa terlepas dari apakah ada GPT + MBR hibrida atau tidak. GPT membutuhkan MBR palsu dengan satu jenis partisi disk penuh 0xee. Dalam hybrid, ini adalah MBR normal dengan satu 0xeepartisi (dan berpotensi untuk masalah besar jika data MBR tidak sinkron dengan data GPT).
Graeme
6

Menggunakan

$ 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

Lihat tipe Disklabel: dos . Jika itu menunjukkan dos itu berarti itu adalah skema MBR lain skema GPT

Rakib
sumber
3

Dalam skrip Partisi Alpine Linux yang saya gunakan:

check_scheme() {
    fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
Stuart Cardall
sumber
Pada sistem Ubuntu 18.04 saya fdisk -l /dev/sda | grep -i disklabeltidak mengembalikan apa-apa, ( GNU Fdisk 1.3.0a ).
agc
1

Anda bisa menggunakannya blkid.

Contoh dengan output:

# 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

Atau dalam skrip, dengan -o valueopsi:

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
mivk
sumber