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Поле показує , що я використовую msdosMBR таблиці розділів (той , по- , як і раніше широко використовується для 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, я ніколи цього не помічав. Дякую!
Тім

3
parted /dev/sda pтеж зробимо.
sjas

мені довелося зробити "sudo parted -l"
Santropedro

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 диск. Пізніші здебільшого використовуються на машинах Apple, призначених для подвійного завантаження версій MS Windows, які не підтримують GPT. gdiskвкаже це на:

Found valid GPT with hybrid MBR; using GPT

Вони також можуть використовуватися в інших ситуаціях, коли потрібна підтримка обох стилів.


Або навпаки - спроба використання cfdiskна розділі GPT також призведе до попередження.
Оріон

Якщо він не встановлений і не знаходиться в gdiskпакеті, його можна знайти в gptfdiskпакеті ... принаймні на Gentoo.

2
@orion Я б не рекомендував, оскільки деякі версії інструментів люблять fdiskабо cfdiskможуть підтримувати GPT і тому не показують помилку.
золотинок

Для мене gdiskвиявляє гібридну таблицю розділів GPT + MBR і дає Found valid GPT with hybrid MBR; using GPT.. Це здається єдиним методом, який виявить гібридну таблицю.
Graeme

@Graeme: Дякую Мені про це не було відомо (оригінальну гібридну довідку відредагував Стефан Шазелас), але я трохи прочитав і додав деякі подробиці.
золотинок

17

Оскільки в ОС не було вказано, ось FreeBSD спосіб робити речі.

Все робиться за допомогою gpartкоманди (коротко для GEOM partioner - нічого спільного з GNU).

Простий gpart showпоказав би всі наявні розділи всіх дисків, але ви можете вказати на пристрій для більш точного вигляду на одному:

  • старий макет розділів з MBR (він же "msdos") та схемами розділів BSD (для систем BSD зазвичай потрібен дворівневий розділ, за винятком випадків, коли використовується повний диск):

    $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, через що 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

2
Зауважте, що ви отримаєте подібний вихід незалежно від того, є гібридний GPT + MBR чи ні. GPT вимагає підробленого MBR з єдиним типом розділу диска 0xee. У гібриді це звичайний MBR з одним 0xeeрозділом (і можливі великі проблеми, якщо дані MBR не синхронізуються з даними GPT).
Graeme

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 else 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.