Odpowiedzi:
Możesz użyć parted -ldo określenia typu tablicy partycji. Na przykład:
$ 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)
To Partition Tablepole pokazuje, że korzystam z msdostabeli partycji MBR (wciąż powszechnie używanej w systemach Linux i Windows) na obu dyskach. Ze manstrony partedmożna utworzyć (i tym samym, mam nadzieję, zidentyfikować) następujące typy tablicy partycji (lub szerzej `etykieta dysku '):
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
Warto dodać polecenie do wyszczególnienia pojedynczej partycji, ponieważ nie jest to oczywiste bez pewnej wiedzy, parteda znalezienie potrzebnych danych może być uciążliwe, jeśli istnieje wiele dysków. Dla /dev/sdabyś zrobił:
parted /dev/sda print
parted /dev/sda pteż zrobi.
W systemie Linux możesz to sprawdzić za pomocą gdisknarzędzia, które powinno być dostępne dla każdej dystrybucji.
gdisk -l /dev/sda
Tutaj /dev/sdajest węzeł urządzenia z dysku fizycznego , a nie partycja ( /dev/sda1, /dev/sda2, itd. Są ścianki działowe).
Jeśli zobaczysz coś, co obejmuje:
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Masz dysk w stylu MBR. Nie martw się, to nie zaszkodziło.
Jeśli nie widzisz tego ostrzeżenia, masz dysk GPT lub hybrydowy dysk GPT / MBR . Te późniejsze są używane głównie na komputerach Apple przeznaczonych do podwójnego rozruchu wersji MS Windows, które nie obsługują GPT. gdiskwskaże to za pomocą:
Found valid GPT with hybrid MBR; using GPT
Mogą być również używane w innych sytuacjach, w których wymagana jest obsługa obu stylów.
cfdiskna partycji GPT spowoduje również ostrzeżenie.
gdiskpakiecie, można go znaleźć w gptfdiskpakiecie ... przynajmniej w Gentoo.
fdisklub cfdiskmogą obsługiwać GPT, dlatego nie wyświetlają błędu.
gdiskwykrywa hybrydową tablicę partycji GPT + MBR i daje Found valid GPT with hybrid MBR; using GPT.. Wydaje się, że jest to jedyna metoda, która wykryje tabelę hybrydową.
Ponieważ system operacyjny nie został określony, oto sposób robienia rzeczy przez FreeBSD .
Wszystko odbywa się za pomocą gpartpolecenia (skrót od GEOM partioner - nie ma nic wspólnego z GNU).
Prosty gpart showpokazałby wszystkie dostępne partycje wszystkich dysków, ale możesz określić urządzenie, które ma bardziej precyzyjny wygląd na jednym:
starszy układ partycji z MBR (alias „msdos”) i schematami partycji BSD (dla systemów BSD zwykle wymagany był partycjonowanie 2-poziomowe, chyba że używa się pełnego dysku):
$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)
nowoczesny układ partycji za pomocą 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)
Aby dowiedzieć się więcej, wszystko znajduje się w gpartinstrukcji .
W udiskssystemie 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
Powyżej mam dysk z hybrydowym partycjonowaniem GPT + MS-DOS. W takim przypadku jądro Linuksa ignoruje partycjonowanie MS-DOS, dlatego udisksustawia UDISKS_PARTITION_TABLE_SCHEME na gpt.
To narzędzie udisks-part-id służy do zapełniania bazy danych udev. Więc jeśli masz udiskszainstalowany, powinieneś być w stanie zapytać o te informacje, nawet jako użytkownik nieuprzywilejowany za pomocą:
$ udevadm info -q property -n sda | grep UDISKS_PARTITION_TABLE_SCHEME
UDISKS_PARTITION_TABLE_SCHEME=gpt
0xee. W wersji hybrydowej jest to normalny MBR z jedną 0xeepartycją (i może mieć poważne problemy, jeśli dane MBR nie zsynchronizują się z danymi GPT).
Posługiwać się
$ 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
Zobacz typ Disklabel: dos . Jeśli pokazuje dos, oznacza to, że jest to schemat MBR lub inny schemat GPT
W moich skryptach partycji Alpine Linux używam:
check_scheme() {
fdisk -l $1 |grep "Disklabel type:" |awk '{ print $3 }'
}
fdisk -l /dev/sda | grep -i disklabelnic nie zwraca ( GNU Fdisk 1.3.0a ).
Możesz użyć blkid.
Przykłady z wyjściem:
# 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
Lub w skrypcie, z -o valueopcją:
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