Réponses:
Vous pouvez utiliser parted -l
pour 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 Table
champ indique que j'utilise une msdos
table de partitions MBR (celle qui est encore couramment utilisée pour Linux et Windows) sur les deux disques. À partir de la man
page, vous parted
pouvez 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
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 parted
et il peut être difficile de trouver les données dont vous avez besoin s’il ya plusieurs lecteurs. Car /dev/sda
tu ferais:
parted /dev/sda print
parted /dev/sda p
va faire aussi.
Sur Linux, vous pouvez vérifier cela via l' gdisk
outil qui devrait être disponible pour n'importe quelle distribution.
gdisk -l /dev/sda
Ici, /dev/sda
est 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. gdisk
l'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.
cfdisk
sur une partition GPT entraînera également un avertissement.
gdisk
paquet, il peut être trouvé dans le gptfdisk
paquet ... au moins sur Gentoo.
fdisk
ou cfdisk
peuvent supporter GPT et ne montrent donc pas d'erreur.
gdisk
dé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.
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 gpart
commande (abréviation de GEOM partioner - rien à voir avec GNU).
Un simple gpart show
pourrait 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 gpart
manuel .
Avec udisks
sous 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 udisks
dé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 udisks
installé, 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
0xee
. Dans un système hybride, il s'agit d'un MBR normal avec une 0xee
partition (et un risque de problèmes majeurs si les données du MBR ne sont pas synchronisées avec les données GPT).
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
Dans mes scripts de partition Alpine Linux, j'utilise:
check_scheme() {
fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
fdisk -l /dev/sda | grep -i disklabel
rien ne retourne ( GNU Fdisk 1.3.0a ).
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 value
option:
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