GPT ou MBR: Comment savoir?

Réponses:

87

Vous pouvez utiliser parted -lpour déterminer le type de table de partition. Par exemple:

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

Le Partition Tablechamp indique que j'utilise une msdostable de partitions MBR (celle qui est encore couramment utilisée pour Linux et Windows) sur les deux disques. À partir de la manpage, vous partedpouvez créer (et donc espérons identifier) ​​les types de table de partition suivants (ou plus généralement «label de disque»):

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

Mise à jour

Il est utile d’ajouter la commande permettant de répertorier une seule partition, car cela n’est pas évident sans une certaine connaissance de ce sujet partedet il peut être difficile de trouver les données dont vous avez besoin s’il ya plusieurs lecteurs. Car /dev/sdatu ferais:

parted /dev/sda print
Graeme
la source
C'est une excellente commande, Graeme. Bien que j'utilise Linux depuis plusieurs années, je ne l'avais jamais vraiment remarqué. Merci!
Tim
3
parted /dev/sda pva faire aussi.
Sjas
Je devais faire "sudo parted -l"
Santropedro
33

Sur Linux, vous pouvez vérifier cela via l' gdiskoutil qui devrait être disponible pour n'importe quelle distribution.

gdisk -l /dev/sda

Ici, /dev/sdaest le nœud de périphérique du disque physique , pas une partition ( /dev/sda1, /dev/sda2, etc. sont des partitions).

Si vous voyez quelque chose qui comprend:

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

Vous avez un disque de style MBR. Ne vous inquiétez pas, cela n'a fait aucun mal.

Si cet avertissement ne s'affiche pas, vous disposez d'un disque GPT ou hybride GPT / MBR . Ces dernières sont principalement utilisées sur les machines Apple destinées à des versions à double amorçage de MS Windows qui ne prennent pas en charge la technologie GPT. gdiskl'indiquera par:

Found valid GPT with hybrid MBR; using GPT

Ils peuvent également être utilisés dans d'autres situations où la prise en charge des deux styles est requise.

boucle d'or
la source
Ou l'inverse - essayer d'utiliser cfdisksur une partition GPT entraînera également un avertissement.
orion
S'il n'est pas installé et pas dans un gdiskpaquet, il peut être trouvé dans le gptfdiskpaquet ... au moins sur Gentoo.
2
@orion Je ne recommanderais pas cela car certaines versions d'outils aiment fdiskou cfdiskpeuvent supporter GPT et ne montrent donc pas d'erreur.
goldilocks
Pour moi gdiskdétecte une table de partition hybride GPT + MBR et donne Found valid GPT with hybrid MBR; using GPT.. Cela semble être la seule méthode permettant de détecter une table hybride.
Graeme
@Graeme: Merci. Je n’étais pas au courant de cela (la référence hybride originale a été modifiée par Stéphane Chazelas), mais j’ai lu un peu et ajouté quelques détails.
goldilocks
17

Comme le système d’exploitation n’a pas été spécifié, voici la manière de faire de FreeBSD .

Tout se fait via la gpartcommande (abréviation de GEOM partioner - rien à voir avec GNU).

Un simple gpart showpourrait vous montrer toutes les partitions disponibles de tous les disques, mais vous pouvez spécifier le périphérique pour avoir un aspect plus précis sur un:

  • structure de partition existante avec MBR (ou "msdos") et schémas de partition BSD (un partitionnement à 2 niveaux était généralement requis pour les systèmes BSD, sauf si vous utilisiez le disque complet):

    $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)
    
  • Disposition moderne des partitions avec 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)
    

Pour en savoir plus, tout est dans le gpartmanuel .

Ouki
la source
9

Avec udiskssous 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

Ci-dessus, j'ai un lecteur avec un partitionnement hybride GPT + MS-DOS. Dans ce cas, le noyau Linux ignore le partitionnement MS-DOS, ce qui explique pourquoi udisksdéfinit UDISKS_PARTITION_TABLE_SCHEME sur gpt.

Cet outil udisks-part-id est utilisé pour renseigner la base de données udev. Donc, si vous êtes udisksinstallé, vous devriez pouvoir interroger ces informations même en tant qu'utilisateur non privilégié avec:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
Stéphane Chazelas
la source
2
Notez que vous obtiendrez une sortie similaire, qu’il existe un hybride GPT + MBR ou non. GPT nécessite un faux MBR avec une seule partition de disque complet 0xee. Dans un système hybride, il s'agit d'un MBR normal avec une 0xeepartition (et un risque de problèmes majeurs si les données du MBR ne sont pas synchronisées avec les données GPT).
Graeme
6

Utilisation

$ 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

Voir le type de label: dos . Si cela montre que cela signifie que c'est un schéma MBR, sinon un schéma GPT

Rakib
la source
3

Dans mes scripts de partition Alpine Linux, j'utilise:

check_scheme() {
    fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
Stuart Cardall
la source
Sur mon système Ubuntu 18.04 , fdisk -l /dev/sda | grep -i disklabelrien ne retourne ( GNU Fdisk 1.3.0a ).
agc
1

Vous pouvez utiliser blkid.

Exemples avec sortie:

# 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

Ou dans un script, avec l' -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
la source