GPT o MBR: come faccio a saperlo?


Risposte:


87

È possibile utilizzare parted -lper determinare il tipo di tabella delle partizioni. Per esempio:

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

Il Partition Tablecampo mostra che sto usando una msdostabella delle partizioni MBR (quella ancora comunemente usata per Linux e Windows) su entrambi i dischi. Dalla manpagina è partedpossibile creare (e quindi si spera identificare) i seguenti tipi di tabella delle partizioni (o più in generale "etichetta del disco"):

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

Aggiornare

Vale la pena aggiungere il comando per elencare una singola partizione poiché questo non è ovvio senza una certa conoscenza di partede può essere un problema trovare i dati necessari se ci sono più unità. Per /dev/sdate faresti:

parted /dev/sda print

È un grande comando, Graeme. Anche se uso Linux da diversi anni, non l'avevo mai notato. Grazie!
Tim

3
parted /dev/sda plo farà anche.
sjas,


33

Su Linux, puoi verificarlo tramite lo gdiskstrumento che dovrebbe essere disponibile per qualsiasi distribuzione.

gdisk -l /dev/sda

Qui /dev/sdaè il nodo dispositivo dell'azionamento fisica , non una partizione ( /dev/sda1, /dev/sda2ecc sono partizioni).

Se vedi qualcosa che include:

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

Hai un disco in stile MBR. Non preoccuparti, questo non ha fatto alcun male.

Se non vedi questo avviso, hai un disco GPT o un disco GPT / MBR ibrido . Le versioni successive sono utilizzate principalmente su macchine Apple destinate a versioni a doppio avvio di MS Windows che non supportano GPT. gdiskindicherà questo con:

Found valid GPT with hybrid MBR; using GPT

Possono anche essere utilizzati in altre situazioni in cui è richiesto il supporto per entrambi gli stili.


O viceversa: anche il tentativo di utilizzare cfdiskuna partizione GPT provocherà un avviso.
Orione,

Se non installato e non in un gdiskpacchetto, lo si può trovare nel gptfdiskpacchetto ... almeno su Gentoo.

2
@orion Non consiglierei che alcune versioni di strumenti gradiscano fdisko cfdiskpossano supportare GPT e quindi non mostrino un errore.
Riccioli d'oro

Per me gdiskrileva una tabella di partizione ibrida GPT + MBR e dà Found valid GPT with hybrid MBR; using GPT.. Questo sembra essere l'unico metodo che rileverà una tabella ibrida.
Graeme,

@Graeme: grazie. Non ne ero a conoscenza (il riferimento ibrido originale è stato curato da Stephane Chazelas), ma ho fatto un po 'di lettura e aggiunto alcuni dettagli.
Riccioli d'oro

17

Dato che il sistema operativo non è stato specificato, ecco il modo di fare cose di FreeBSD .

Tutto viene eseguito tramite il gpartcomando (abbreviazione di partizionatore GEOM - niente a che fare con GNU).

Un semplice gpart showti mostrerebbe tutte le partizioni disponibili di tutti i dischi, ma puoi specificare il dispositivo per avere uno sguardo più preciso su uno:

  • layout di partizione legacy con MBR (aka "msdos") e schemi di partizione BSD (di solito era richiesto un partizionamento a 2 livelli per i sistemi BSD, a meno che non si utilizzasse l'intero disco):

    $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)
    
  • layout di partizione moderno usando 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)
    

Per saperne di più, tutto è nel gpartmanuale .


9

Con udiskssu 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

Sopra, ho un disco con partizionamento ibrido GPT + MS-DOS. In tal caso, il kernel Linux ignora il partizionamento MS-DOS, motivo per cui udisksimposta UDISKS_PARTITION_TABLE_SCHEME su gpt.

Lo strumento udisks-part-id viene utilizzato per popolare il database udev. Quindi, se hai udisksinstallato, dovresti essere in grado di interrogare tali informazioni anche come utente non privilegiato con:

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

2
Nota che otterrai un output simile indipendentemente dal fatto che esista o meno un GPT + MBR ibrido. GPT richiede un MBR falso con una singola partizione del disco completa di tipo 0xee. In un ibrido si tratta di un MBR normale con una 0xeepartizione (e potenziale per gravi problemi se i dati MBR non sono sincronizzati con i dati GPT).
Graeme,

6

Uso

$ 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

Vedi il tipo Disklabel: dos . Se mostra dos significa che è lo schema MBR altrimenti lo schema GPT



1

È possibile utilizzare blkid.

Esempi con 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

O in uno script, con l' -o valueopzione:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.