外付けのUSB 3.0ハードドライブエンクロージャを開き、SATA経由でPC内部にディスクを取り付けました。現在、Linuxシステムは実際に存在するGPTを探しません。ディスクにはすでに2TBのデータがあるため、すでに存在するパーティションテーブルを見つけるのが最善です。
別のインターフェース(USB、SATA)を使用するとGPTの位置が変わりますか?どうやって解決しますか?
以下は、PC(SATA)にインストールされているgdiskの出力です。
# gdisk /dev/disk/by-id/ata-TOSHIBA_DT01ABA300_123456890
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): q
ディスクは東芝Canvio USB3エンクロージャに入っているTOSHIBA DT01ABA300(上図参照)です。
関連部分は次のとおりですdmesg
。
[ 1.618441] scsi host9: ahci
[ 1.618485] ata9: SATA max UDMA/133 abar m512@0xfd1ff000 port 0xfd1ff100 irq 42
[ 2.106001] ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 2.107329] ata9.00: ATA-8: TOSHIBA DT01ACA300, MX6OABB0, max UDMA/133
[ 2.107332] ata9.00: 5860533168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[ 2.108712] ata9.00: configured for UDMA/133
[ 2.609553] scsi 9:0:0:0: Direct-Access ATA TOSHIBA DT01ABA3 ABB0 PQ: 0 ANSI: 5
[ 2.609699] sd 9:0:0:0: [sdg] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[ 2.609703] sd 9:0:0:0: [sdg] 4096-byte physical blocks
[ 2.609785] sd 9:0:0:0: [sdg] Write Protect is off
[ 2.609788] sd 9:0:0:0: [sdg] Mode Sense: 00 3a 00 00
[ 2.609825] sd 9:0:0:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.637653] sd 9:0:0:0: [sdg] Attached SCSI disk
ソースディスクでEFI(GPT?!)署名を見つけた場所は次のとおりです。
dd if=/dev/sdg bs=2M count=32 | hexdump -C | grep -w EFI
32+0 records in
32+0 records out
67108864 bytes (67 MB) copied, 0.447864 s, 150 MB/s
00001000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|
gdisk
特定のオフセットでGPTを読み取るパラメータが見つかりませんでした。どうやって読むことができますか?
# parted /dev/sdg
GNU Parted 3.2
Using /dev/sdg
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) print
Error: /dev/sdg: unrecognised disk label
Model: ATA TOSHIBA DT01ABA3 (scsi)
Disk /dev/sdg: 3000592982016B
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:
(parted) q
そして:
# losetup --find --show /dev/sdg
/dev/loop0
# parted /dev/loop0
GNU Parted 3.2
Using /dev/loop0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) print
Error: /dev/loop0: unrecognised disk label
Model: Loopback device (loopback)
Disk /dev/loop0: 3000592982016B
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
答え1
別のインターフェース(USB、SATA)を使用するとGPTの位置が変わりますか?
はい、GPTは愚かなセクターのサイズによって異なり、一部のUSBシェルは512b
実際には4096b
セクターであると主張し、その逆も同様です。
はい、Linuxは愚かで、さまざまなブロックサイズのGPTをサポートしていないからです。ただし、自動的にこれを検出する必要があります。
GPT-512からGPT-4096に変換するには、パーティションテーブルを再作成する必要があります。