Ответы:
Вы можете использовать, 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
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- диск. Последние используются в основном на компьютерах Apple, предназначенных для двойной загрузки версий MS Windows, которые не поддерживают GPT. gdiskукажет это с помощью:
Found valid GPT with hybrid MBR; using GPT
Они также могут использоваться в других ситуациях, когда требуется поддержка обоих стилей.
cfdiskна разделе GPT также приведет к предупреждению.
gdiskпакете, его можно найти в gptfdiskпакете ... по крайней мере, в Gentoo.
fdiskили cfdiskмогут поддерживать GPT и поэтому не показывают ошибку.
gdiskобнаруживает гибридную таблицу разделов GPT + MBR и дает Found valid GPT with hybrid MBR; using GPT.. Кажется, это единственный метод, который обнаружит гибридную таблицу.
Поскольку ОС не была указана, здесь есть способ работы 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руководстве .
С помощью 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
0xee. В гибридной системе это обычная MBR с одним 0xeeразделом (и потенциальная возможность возникновения серьезных проблем, если данные 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