GPT oder MBR: Woher weiß ich das?

Antworten:

87

Mit können Sie parted -lden Typ der Partitionstabelle bestimmen. Z.B:

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

Das Partition TableFeld zeigt, dass ich msdosauf beiden Festplatten eine MBR-Partitionstabelle verwende (die noch immer für Linux und Windows üblich ist). Auf dieser manSeite partedkönnen Sie die folgenden Arten von Partitionstabellen erstellen (und somit hoffentlich identifizieren) (oder allgemeiner: Datenträgerbezeichnung):

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

Aktualisieren

Es lohnt sich, den Befehl zum Auflisten einer einzelnen Partition hinzuzufügen, da dies ohne etwas Wissen nicht offensichtlich ist partedund es schwierig sein kann, die benötigten Daten zu finden, wenn mehrere Laufwerke vorhanden sind. Denn /dev/sdadu würdest tun:

parted /dev/sda print
Graeme
quelle
Das ist ein großartiger Befehl, Graeme. Obwohl ich seit mehreren Jahren Linux benutze, hatte ich es nie wirklich bemerkt. Vielen Dank!
Tim
3
parted /dev/sda pwird auch tun.
So
ich musste "sudo parted -l" machen
Santropedro
33

Unter Linux können Sie dies mit dem gdiskTool überprüfen , das für jede Distribution verfügbar sein sollte.

gdisk -l /dev/sda

Hier /dev/sdaist der Geräteknoten des physischen Laufwerks , nicht eine Trennwand ( /dev/sda1, /dev/sda2usw. sind Partitionen).

Wenn Sie etwas sehen, das Folgendes beinhaltet:

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

Sie haben eine MBR-Festplatte. Keine Sorge, das hat nicht geschadet.

Wenn diese Warnung nicht angezeigt wird, verfügen Sie über einen GPT-Datenträger oder einen Hybrid-GPT / MBR- Datenträger. Letztere werden hauptsächlich auf Apple-Computern verwendet, die zum Dual-Booten von MS Windows-Versionen vorgesehen sind, die GPT nicht unterstützen. gdiskwird dies anzeigen mit:

Found valid GPT with hybrid MBR; using GPT

Sie können auch in anderen Situationen verwendet werden, in denen Unterstützung für beide Stile erforderlich ist.

Goldlöckchen
quelle
Oder der umgekehrte Versuch, cfdiskeine GPT-Partition zu verwenden, führt ebenfalls zu einer Warnung.
Orion
Wenn es nicht installiert und nicht in einem gdiskPaket enthalten ist, befindet es sich im gptfdiskPaket ... zumindest auf Gentoo.
2
@orion würde ich nicht empfehlen, da einige Versionen von Tools GPT mögen fdiskoder cfdiskunterstützen und daher keinen Fehler anzeigen .
Goldlöckchen
Bei mir gdiskerkennt GPT eine hybride + MBR Partitionstabelle und gibt Found valid GPT with hybrid MBR; using GPT.. Dies scheint die einzige Methode zu sein, die eine Hybridtabelle erkennt.
Graeme
@Graeme: Danke. Mir war dies nicht bekannt (die ursprüngliche Hybridreferenz wurde von Stephane Chazelas herausgegeben), aber ich las ein bisschen und fügte einige Details hinzu.
Goldlöckchen
17

Da das Betriebssystem nicht spezifiziert wurde, sehen Sie hier die Vorgehensweise von FreeBSD .

Alles geschieht über den gpartBefehl (kurz für GEOM Partioner - nichts mit GNU zu tun).

Ein einfaches Beispiel gpart showwürde Ihnen alle verfügbaren Partitionen aller Festplatten anzeigen, Sie können jedoch das Gerät angeben, um eine genauere Übersicht zu erhalten:

  • Legacy - Partitionslayout mit MBR (auch bekannt als „MS - DOS“) und BSD Partitionsschemas (a 2-Level - Partitionierung wurde in der Regel für BSD - Systeme erforderlich, es sei denn , die vollständige Platte verwendet wird ):

    $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)
    
  • modernes Partitionslayout mit 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)
    

Weitere Informationen finden Sie im gpartHandbuch .

Ouki
quelle
9

Mit udisksunter 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

Oben habe ich ein Laufwerk mit hybrider GPT + MS-DOS-Partitionierung. In diesem Fall ignoriert der Linux-Kernel die MS-DOS-Partitionierung, weshalb udisksUDISKS_PARTITION_TABLE_SCHEME auf gpt gesetzt wird.

Das Tool udisks-part-id wird zum Auffüllen der udev-Datenbank verwendet. Wenn Sie also udisksinstalliert haben, sollten Sie in der Lage sein, diese Informationen auch als nicht privilegierter Benutzer abzufragen:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
Stéphane Chazelas
quelle
2
Beachten Sie, dass Sie eine ähnliche Ausgabe erhalten, unabhängig davon, ob es eine hybride GPT + MBR gibt oder nicht. GPT erfordert einen gefälschten MBR mit einer einzelnen vollständigen Festplattenpartition des Typs 0xee. In einem Hybrid ist dies ein normaler MBR mit einer 0xeePartition (und möglicherweise größeren Problemen, wenn die MBR-Daten nicht mehr mit den GPT-Daten synchron sind).
Graeme
6

Verwenden

$ 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

Siehe Disklabel-Typ: dos . Wenn dos angezeigt wird, handelt es sich um ein MBR-Schema, ansonsten um ein GPT-Schema

Rakib
quelle
3

In meinen Alpine Linux Partition-Skripten verwende ich:

check_scheme() {
    fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
Stuart Cardall
quelle
Auf meinem Ubuntu 18.04- System fdisk -l /dev/sda | grep -i disklabelgibt es nichts zurück ( GNU Fdisk 1.3.0a ).
Agc
1

Sie können verwenden blkid.

Beispiele mit Ausgabe:

# 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

Oder in einem Skript mit der -o valueOption:

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
quelle