It appears u-boot in my Shuttle KS10 has a weird GPT implementation. When trying to boot from a 4TB disk, I get this:
I tried a hybrid MBR, but u-boot is too smart to fall for that. It recognizes the protective MBR, and goes for the GPT table.
When providing both a valid GPT and a valid MBR only describing the boot partition, (the latter can be done by using fdisk -t mbr <device>) u-boot uses the MBR, and loads kernel + initramfs (jay!), but Linux freaks out and won't find any partitions, and so no rootfs.
Remedy: add a 'gpt' to the kernel commandline, to tell it to use GPT when both a valid MBR and a valid GPT table are found.
https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html
Reset IDE: Marvell Serial ATA Adapter Integrated Sata device found Device 0 @ 0 0: Model: TOSHIBA HDWD240 Firm: KQ000A Ser#: Z9J1S0I9S5HH Type: Hard Disk Supports 48-bit addressing Capacity: 1718295.8 MB = 1678.0 GB (-775897424 x 512) GPT: last_usable_lba incorrect: 1D1C0BE8E > D1C0BEB0 get_partition_info_efi: *** ERROR: Invalid GPT *** ** Bad partition 1 **So when detecting the disk it strips bit 32, yielding 0xD1C0BEB0 sectors. But when interpreting the GPT table, it uses the real size, and then complains they differ.
I tried a hybrid MBR, but u-boot is too smart to fall for that. It recognizes the protective MBR, and goes for the GPT table.
When providing both a valid GPT and a valid MBR only describing the boot partition, (the latter can be done by using fdisk -t mbr <device>) u-boot uses the MBR, and loads kernel + initramfs (jay!), but Linux freaks out and won't find any partitions, and so no rootfs.
Remedy: add a 'gpt' to the kernel commandline, to tell it to use GPT when both a valid MBR and a valid GPT table are found.
https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html