Booting from a GPT partitioned disk that can have more than 128 parition entries (e.g. 248 in this case) fails under 9.1 but worked under 7.4. This is due to a test that was introduced in sys/boot/common/gpt.c: ... #define MAXTBLENTS 128 ... if (bcmp(hdr->hdr_sig, GPT_HDR_SIG, sizeof(hdr->hdr_sig)) != 0 || hdr->hdr_lba_self != hdrlba || hdr->hdr_revision < 0x00010000 || hdr->hdr_entsz < sizeof(struct gpt_ent) || hdr->hdr_entries > MAXTBLENTS || DEV_BSIZE % hdr->hdr_entsz != 0) { printf("%s: invalid %s GPT header\n", BOOTPROG, which); return (-1); } Fix: The check should be removed since a GPT header with more than 128 possible parition entries is not invalid and can legally be created with gpart. How-To-Repeat: Create a disk using gpart create -s gpt -n 248 $disk and add bootcode and system to it. Add some delay into gptinit() of sys/boot/i386/gptboot/gptboot.c so you can read the error messages before reset occurs: invalid primary GPT header invalid backup GPT header unable to load GPT
*** Bug 186515 has been marked as a duplicate of this bug. ***
^Triage: to submitter: is this aging PR still relevant?
> is this aging PR still relevant? No idea. Since the buggy code ist still there (see stand/libsa/gpt.c) I assume yes.