คำตอบ:
คุณสามารถใช้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
เครื่องมือที่ควรมีไว้สำหรับ distro ใด ๆ
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 ก็จะส่งผลให้เกิดคำเตือน
fdisk
หรือcfdisk
อาจสนับสนุน GPT และดังนั้นจึงไม่แสดงข้อผิดพลาด
gdisk
ตรวจพบ GPT ไฮบริด + ตารางพาร์ทิชัน MBR Found valid GPT with hybrid MBR; using GPT.
และให้ นี่น่าจะเป็นวิธีเดียวที่จะตรวจจับตารางไฮบริด
เนื่องจากไม่ได้ระบุระบบปฏิบัติการนี่คือวิธีFreeBSDในการทำสิ่งต่างๆ
ทั้งหมดนี้ทำผ่านgpart
คำสั่ง (ย่อมาจาก GEOM partioner - ไม่มีส่วนเกี่ยวข้องกับ GNU)
วิgpart show
จะแสดงพาร์ติชันที่มีอยู่ทั้งหมดของดิสก์ทั้งหมด แต่คุณสามารถระบุอุปกรณ์เพื่อให้มีลักษณะที่แม่นยำยิ่งขึ้นในพาร์ติชัน:
เลย์เอาต์ของพาร์ติชันดั้งเดิมที่มีMBR (aka "msdos") และโครงร่างพาร์ติชันBSD (โดยปกติจะต้องมีการแบ่งพาร์ติชัน 2 ระดับสำหรับระบบ 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
ด้วย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 ตั้งค่าเป็น UDISKS_PARTITION_TABLE_SCHEME
เครื่องมือ 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: ดอส ถ้ามันแสดงให้เห็นว่านั่นหมายความว่ามันเป็น MBR schema อื่น GPT schema
ในสคริปต์ 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