Hi All,
I have a 4TB drive that was originally in a PC connected via SATA. I now wish to put it in an external enclosure and connect it via USB, however this is proving more difficult than I expected, and from what I understand it's Windows XP's fault.
On attempting to mount the drive with sudo mount /dev/sdc /mnt
, I receive the following error:
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdc, missing codepage or helper program, or other error.
The output of fdisk -l
is as follows:
Disk /dev/sdc: 3.64 TiB, 4000787025920 bytes, 976754645 sectors
Disk model: Expansion Desk
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdc1 1 4294967295 4294967295 16T ee GPT
As can be seen, the disk is detected correctly as a 3.64TiB drive, but there is a partition that's read as 16TB. This, AFAIK, is because the sectors are incorrectly read as 4096 bytes long when they should be 512 bytes, and this is a thing that external enclosures do to ensure MBR compatibility with Windows XP.
I tried overcoming this by mounting as follows:
$ sudo mount -o ro,offset=$((1*512)) /dev/sdc1 /mnt
however now I have a new error:
mount: /mnt: failed to setup loop device for /dev/sdc1.
Trying to mount with sudo mount /dev/sdc1 /mnt
only yields
mount: /mnt: special device /dev/sdc1 does not exist.
I'm at a loss as to how to mount this drive - at least, without reformatting it. Is it at all possible? Once I've cracked the code, can I configure /etc/fstab
to do it automatically for me, or am I stuck in this limbo-land where I have data on my disk that's only readable with a hacky workaround? As a last resort, I think I can plug it back in via SATA, copy all 4TB off, plug it in via USB, reformat it and copy everything back on, but I want to avoid that hassle.
Edit: Output of fdisk -l
when connected via SATA. Note the sector size is now 512 and the drive mounts happily.
Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: HGST HDN724040AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 5852E3A7-A2E4-4589-9D93-F8020C2D7E54
Device Start End Sectors Size Type
/dev/sdb1 2048 7814035455 7814033408 3.7T Linux filesystem
I have no experience in this specific matter, but you could look up how to switch the sector size from 512 bytes to 4096 and, you know, just do the opposite.