GPT ou MBR: Como eu sei?


Respostas:


87

Você pode usar parted -lpara determinar o tipo de tabela de partição. Por exemplo:

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

O Partition Tablecampo mostra que estou usando uma msdostabela de partição MBR (a que ainda é comumente usada para Linux e Windows) em ambos os discos. A partir da manpágina, é partedpossível criar (e, assim, esperamos identificar) os seguintes tipos de tabela de partição (ou mais amplamente o `label do 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

Atualizar

Vale a pena adicionar o comando para listar uma única partição, pois isso não é óbvio sem conhecimento partede pode ser difícil encontrar os dados necessários se houver várias unidades. Para /dev/sdavocê faria:

parted /dev/sda print

Esse é um grande comando, Graeme. Embora eu esteja usando o Linux há vários anos, eu nunca tinha percebido isso. Obrigado!
— Tim

3
parted /dev/sda pvai fazer também.
— S4 #

eu tive que fazer "sudo parted -l" #
— Santropedro 30/10

33

No linux, você pode verificar isso através da gdiskferramenta que deve estar disponível para qualquer distribuição.

gdisk -l /dev/sda

Aqui, /dev/sdaé o nó do dispositivo da unidade física , não uma partição ( /dev/sda1, /dev/sda2, etc. são partições).

Se você vir algo que inclui:

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

Você tem um disco no estilo MBR. Não se preocupe, isso não causou nenhum dano.

Se você não vir esse aviso, possui um disco GPT ou um disco híbrido GPT / MBR . Os últimos são usados ​​principalmente em máquinas Apple destinadas a versões de inicialização dupla do MS Windows que não suportam GPT. gdiskindicará isso com:

Found valid GPT with hybrid MBR; using GPT

Eles também podem ser usados ​​em outras situações em que o suporte para ambos os estilos é necessário.


Ou o contrário - tentar usar cfdiskem uma partição GPT também resultará em um aviso.
— orion

Se não estiver instalado e não estiver em um gdiskpacote, ele pode ser encontrado no gptfdiskpacote ... pelo menos no Gentoo.

2
@orion Eu não recomendaria isso, pois algumas versões de ferramentas como fdiskou cfdiskpodem suportar GPT e, portanto, não mostram um erro.
— precisa

Para mim gdiskdetecta uma tabela de partição híbrida GPT + MBR e dá Found valid GPT with hybrid MBR; using GPT.. Este parece ser o único método que irá detectar uma tabela híbrida.
— Graeme

@ Graeme: Obrigado. Eu não sabia disso (a referência híbrida original foi editada por Stephane Chazelas), mas fiz algumas leituras e adicionei alguns detalhes.
— Goldilocks

17

Como o sistema operacional não foi especificado, aqui está a maneira do FreeBSD de fazer as coisas.

Tudo é feito através do gpartcomando (abreviação de particionador GEOM - nada a ver com GNU).

Um simples gpart showmostraria todas as partições disponíveis de todos os discos, mas você pode especificar o dispositivo para ter uma aparência mais precisa em um:

  • layout de partição herdada com esquemas de partição MBR (também conhecido como "msdos") e BSD (geralmente é necessário um particionamento em dois níveis para sistemas BSD, a menos que esteja usando o 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)
    
  • layout de partição 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)
    

Para saber mais, tudo está no gpartmanual .


9

Com udisksno 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

Acima, eu tenho uma unidade com particionamento híbrido GPT + MS-DOS. Nesse caso, o kernel do Linux ignora o particionamento do MS-DOS, e é por isso que udisksdefine UDISKS_PARTITION_TABLE_SCHEME como gpt.

Essa ferramenta udisks-part-id é usada para preencher o banco de dados udev. Portanto, se você tiver udisksinstalado, poderá consultar essas informações mesmo como um usuário não privilegiado com:

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

2
Observe que você obterá uma saída semelhante, independentemente de haver ou não um GPT + MBR híbrido. O GPT requer um MBR falso com uma única partição de disco completo do tipo 0xee. Em um híbrido, esse é um MBR normal com uma 0xeepartição (e é possível que haja grandes problemas se os dados do MBR ficarem fora de sincronia com os dados da GPT).
— Graeme

6

Usar

$ 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

Consulte o tipo de rótulo de disco: dos . Se mostrar dos, significa que é o esquema MBR, caso contrário, o esquema GPT



1

Você pode usar blkid.

Exemplos com saída:

# 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 em um script, com a -o valueopção:

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.