GPTまたはMBR:どうやって知るのですか?


回答:


87

を使用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

それは素晴らしいコマンドです、グレアム。Linuxを何年も使用していますが、気づいたことはありません。ありがとう!
ティム14年

3
parted /dev/sda pまた、行います。
sjas

「sudo parted -l」をしなければなりませんでした
サントロペドロ

33

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パーティションで使用しようとすると、警告も発生します。
オリオン

インストールされておらず、gdiskパッケージに含まれていない場合はgptfdisk、少なくともGentoo ではパッケージに含まれています。

2
@orionは、私のようなツールのいくつかのバージョンとして、それをお勧めしませんfdiskcfdiskGPTをサポートするため、エラーが表示されない場合があります。
ゴルディロックス

私にとってgdiskは、ハイブリッドGPT + MBRパーティションテーブルを検出し、を提供しFound valid GPT with hybrid MBR; using GPT.ます。これは、ハイブリッドテーブルを検出する唯一の方法のようです。
グレアム14年

@Graeme:ありがとう。私はこれらに気づいていませんでした(元のハイブリッド参照はStephane Chazelasによって編集されました)が、少し読んで詳細を追加しました。
goldilocks 14年

17

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マニュアルに記載されています


9

udisksLinux上で:

$ 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パーティショニングを無視するため、udisksUDISKS_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

2
ハイブリッドGPT + MBRの有無に関係なく、同様の出力が得られることに注意してください。GPTには、タイプの単一のフルディスクパーティションを持つ偽のMBRが必要0xeeです。ハイブリッドでは、これは1つの0xeeパーティションを持つ通常のMBRです(MBRデータがGPTデータと同期しなくなると、重大な問題が発生する可能性があります)。
グレアム14年

6

つかいます

$ 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スキーマであることを意味します



1

を使用できます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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.