回答:
を使用parted -l
して、パーティションテーブルのタイプを判別できます。例えば:
$ 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)
このPartition Table
フィールドは、msdos
両方のディスクでMBRパーティションテーブル(LinuxおよびWindowsでまだ一般的に使用されているテーブル)を使用していることを示しています。このman
ページから、parted
次のタイプのパーティションテーブル(またはより広義には「ディスクラベル」)を作成できます(したがって、できれば識別できます)。
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
単一のパーティションを一覧表示するコマンドを追加する価値はあります。これは、ある程度の知識がparted
なければ明らかではなく、複数のドライブがある場合に必要なデータを見つけるのが面倒になる可能性があるためです。以下のための/dev/sda
あなたがするだろう。
parted /dev/sda print
parted /dev/sda p
また、行います。
Linuxでは、gdisk
ディストリビューションで利用できるはずのツールを使用してこれを確認できます。
gdisk -l /dev/sda
ここで、/dev/sda
デバイスノードである物理ドライブの(ないパーティション/dev/sda1
、/dev/sda2
パーティションである等)。
次のものが含まれている場合:
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
MBRスタイルのディスクがあります。心配しないでください、これは害を与えませんでした。
この警告が表示されない場合は、GPTディスクまたはハイブリッドGPT / MBRディスクがあります。後者は、GPTをサポートしないMS Windowsのデュアルブートバージョンを意図したAppleマシンで主に使用されます。 gdisk
これを次のように示します。
Found valid GPT with hybrid MBR; using GPT
また、両方のスタイルのサポートが必要な他の状況でも使用できます。
cfdisk
-GPTパーティションで使用しようとすると、警告も発生します。
fdisk
かcfdisk
GPTをサポートするため、エラーが表示されない場合があります。
gdisk
は、ハイブリッドGPT + MBRパーティションテーブルを検出し、を提供しFound valid GPT with hybrid MBR; using GPT.
ます。これは、ハイブリッドテーブルを検出する唯一の方法のようです。
OSが指定されていないため、ここにFreeBSDの方法を示します。
すべてはgpart
コマンドを介して行われます(GEOMパーティショナーの略-GNUとは関係ありません)。
簡単な例でgpart show
は、すべてのディスクのすべての使用可能なパーティションが表示されますが、デバイスを指定して、1つのディスクをより正確に表示できます。
MBR(別名「msdos」)とBSDパーティションスキームを使用したレガシーパーティションレイアウト(フルディスクを使用しない限り、BSDシステムには通常2レベルのパーティションが必要でした):
$
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)
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)
詳細については、すべてgpart
マニュアルに記載されています。
udisks
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
上記では、ハイブリッドGPT + MS-DOSパーティション分割を備えたドライブがあります。その場合、LinuxカーネルはMS-DOSパーティショニングを無視するため、udisks
UDISKS_PARTITION_TABLE_SCHEMEをgptに設定します。
そのudisks-part-idツールは、udevデータベースにデータを入力するために使用されます。したがって、udisks
インストール済みの場合、非特権ユーザーであっても、次の情報を使用してその情報を照会できるはずです。
$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
0xee
です。ハイブリッドでは、これは1つの0xee
パーティションを持つ通常のMBRです(MBRデータがGPTデータと同期しなくなると、重大な問題が発生する可能性があります)。
つかいます
$ 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
Disklabelタイプ:dosを参照してください。dosと表示されている場合、MBRスキーマまたはGPTスキーマであることを意味します
私のAlpine Linux Partitionスクリプトでは、次を使用します。
check_scheme() {
fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
fdisk -l /dev/sda | grep -i disklabel
が何も返さない、(GNUのFdisk 1.3.0a)。
を使用できますblkid
。
出力の例:
# 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 value
オプションを使用して:
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