GPT o MBR: ¿Cómo lo sé?

Respuestas:

87

Puede usar parted -lpara determinar el tipo de tabla de particiones. P.ej:

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

El Partition Tablecampo muestra que estoy usando una msdostabla de partición MBR (la que todavía se usa comúnmente para Linux y Windows) en ambos discos. Desde la manpágina partedpuede crear (y por lo tanto, con suerte, identificar) los siguientes tipos de tabla de partición (o, más ampliamente, "etiqueta de 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

Actualizar

Vale la pena agregar el comando para enumerar una sola partición, ya que esto no es obvio sin algún conocimiento partedy puede ser difícil encontrar los datos que necesita si hay varias unidades. Porque /dev/sdaharías:

parted /dev/sda print
Graeme
fuente
Ese es un gran comando, Graeme. Aunque he estado usando Linux durante varios años, nunca lo había notado realmente. ¡Gracias!
Tim
3
parted /dev/sda ptambién lo hará.
sjas
Tuve que hacer "sudo parted -l"
Santropedro
33

En Linux, puede verificar esto a través de la gdiskherramienta que debería estar disponible para cualquier distribución.

gdisk -l /dev/sda

Aquí, /dev/sdaes el nodo del dispositivo de la unidad física , no una partición ( /dev/sda1, /dev/sda2, etc. son particiones).

Si ve algo que incluye:

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

Tienes un disco de estilo MBR. No te preocupes, esto no hizo ningún daño.

Si no ve esta advertencia, tiene un disco GPT o un disco GPT / MBR híbrido . Las últimas se utilizan principalmente en máquinas Apple destinadas a versiones de arranque dual de MS Windows que no admiten GPT. gdiskindicará esto con:

Found valid GPT with hybrid MBR; using GPT

También se pueden usar en otras situaciones donde se requiere soporte para ambos estilos.

encerrada dorada
fuente
O lo contrario: intentar usar cfdiskuna partición GPT también generará una advertencia.
orion
Si no está instalado y no está en un gdiskpaquete, se puede encontrar en el gptfdiskpaquete ... al menos en Gentoo.
2
@orion No recomendaría que algunas versiones de herramientas tengan fdisko cfdiskno soporte GPT y, por lo tanto, no muestren un error.
Ricitos
Para mí gdiskdetecta una tabla de particiones GPT + MBR híbrida y da Found valid GPT with hybrid MBR; using GPT.. Este parece ser el único método que detectará una tabla híbrida.
Graeme
@Graeme: Gracias. No estaba al tanto de esto (la referencia híbrida original fue editada por Stephane Chazelas), pero leí un poco y agregué algunos detalles.
Ricitos
17

Como no se especificó el sistema operativo, aquí está la forma de hacer las cosas de FreeBSD .

Todo se hace a través del gpartcomando (abreviatura de partición de GEOM, nada que ver con GNU).

Un simple gpart showle mostrará todas las particiones disponibles de todos los discos, pero puede especificar que el dispositivo tenga una apariencia más precisa en uno:

  • diseño de partición heredada con MBR (también conocido como "msdos") y esquemas de partición BSD (generalmente se requería una partición de 2 niveles para los sistemas BSD, a menos que se use el disco completo):

    $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)
    
  • diseño de partición moderno con 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)
    

Para saber más, todo está en el gpartmanual .

Ouki
fuente
9

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

Arriba, tengo una unidad con particiones híbridas GPT + MS-DOS. En ese caso, el kernel de Linux ignora el particionamiento de MS-DOS, por lo que udisksestablece UDISKS_PARTITION_TABLE_SCHEME en gpt.

Esa herramienta udisks-part-id se usa para llenar la base de datos udev. Entonces, si tiene udisksinstalado, debería poder consultar esa información incluso como usuario no privilegiado con:

$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
Stéphane Chazelas
fuente
2
Tenga en cuenta que obtendrá resultados similares independientemente de si hay un GPT + MBR híbrido o no. GPT requiere un MBR falso con una sola partición de disco completa de tipo 0xee. En un híbrido, este es un MBR normal con una 0xeepartición (y es posible que surjan problemas importantes si los datos de MBR no están sincronizados con los datos de GPT).
Graeme
6

Utilizar

$ 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

Ver el tipo de etiqueta de disco: dos . Si muestra dos, eso significa que es un esquema MBR o un esquema GPT

Rakib
fuente
3

En mis scripts de Alpine Linux Partition uso:

check_scheme() {
    fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
Stuart Cardall
fuente
En mi sistema Ubuntu 18.04fdisk -l /dev/sda | grep -i disklabel no devuelve nada ( GNU Fdisk 1.3.0a ).
agc
1

Puedes usar blkid.

Ejemplos con salida:

# 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 en un script, con la -o valueopción:

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
fuente