Pay attention to this part:
Sector size (logical/physical): 4096B/4096B
This disk is capable of using 4KiB blocks. I'm guessing the USB case and the internal SATA controller in the notebook are using different strategies to deal with this: one translates them into traditional 512-byte blocks, and the other can use the new block size natively.
I am guessing that when the disk is in the notebook's disk bay, you'll get this output instead:
Sector size (logical/physical): 512B/4096B
With a GPT partitioning scheme, this becomes a problem: the GPT specification says the partition table should start at block #1. Block #0 is reserved for "protective MBR" that just allows older systems to identify the disk as in use, even if they only understand MBR-style partitioning.
But if you partition the disk using emulated 512-byte blocks and then switch to native mode (e.g. by moving the disk from an internal controller to a 4 KiB-aware USB), a 512-byte block #1 becomes the second eighth of 4 KiB-block #0.
Respectively, if you initially use native 4 KiB blocks when partitioning the disk, and then switch to emulated 512-byte blocks, the GPT partition table now starts at block #8.
Unfortunately, the only way to fix your situation without repartitioning would be to find an older external USB HDD adapter that specifically cannot use 4 KiB blocks, so it would trigger the disk's built-in 512-byte sector emulation just like the laptop's internal SATA controller does.
With Linux kernel version 4.14 or newer (or with an older one that has this patch backported), it is possible to switch the logical block size. If you also have a version of
losetup that has this patch, you would be able to have your disk in your existing USB adapter, and then say:
losetup -P -b 512 /dev/loop0 /dev/sdb
to allow you to access
/dev/loop0 using a different logical block size. The partitions would appear as
/dev/loop0pN with N being the partition number, or if that scheme is not yet supported by your distribution, you could omit the
-P option and use the
kpartx tool from the device-mapper-multipath package:
kpartx -a /dev/loop0
... to automatically create mappings for each partition on your loop device, named like
You could then mount those partition devices as usual, just with a different device name.
After unmounting the partition devices, the procedure to undo this set-up is:
kpartx -d /dev/loop0 # only if the use of kpartx was needed
losetup -d /dev/loop0