Doc.opensuse.org YaST/Grub2, and YaST itself, "instructions" clear as mud

doc.opensuse.org makes no mention of or apparent reference to what Parted labels a “BIOS Boot (noEFI) bios_grub” 21686148-6449-6E6F-744E-656564454649 partition. Help for the boot code options tab in YaST has nothing to offer on the subject.

Those familiar with me might think I have a lot of experience with Grub, and I do, but that experience does not include GPT partitioned disks in non-UEFI computers. All my MBR disks still boot using openSUSE’s Grub Legacy exclusively, so all my experience with Grub2 is with UEFI booting - except this one disk, and the disk it replaces, which apparently has a block of sectors that drives the kernel nuts. I first set it up with GPT too long ago to remember the process that produced it:

# parted -l
Model: ATA WDC WD1600BJKT-7 (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system     Name                     Flags
 1      1049kB  337MB   336MB                   EFI System (ESP)         boot, esp
 2      337MB   338MB   1049kB                  Linux Reserved for Grub  bios_grub
 3      338MB   1177MB  839MB   ext2            Linux /boot              legacy_boot
 4      1177MB  3693MB  2517MB  linux-swap(v1)  Linux Swap               swap
 5      3693MB  7887MB  4194MB  ext4            Linux /usr/local
 6      7887MB  16.3GB  8389MB  ext4            Linux /pub
 7      16.3GB  37.2GB  21.0GB  ext4            Linux / #1 suse 152
 8      37.2GB  58.2GB  21.0GB  ext4            Linux / #2 suse 153
 9      58.2GB  79.2GB  21.0GB  ext4            Linux / #3 suse 154
10      79.2GB  160GB   80.9GB  ext4            Linux /home

I cloned the first 0x1e51000 sectors, partitions 1-6, to the new, then added others, formatting #8 and rsyncing from the original, cloning individual partitions to 7, 9, & 11 from elsewhere, and formatting and copying from old /home to new /home:

# parted -l
Model: ATA Hitachi HTS72106 (scsi)
Disk /dev/sdb: 60.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt_sync_mbr

Number  Start   End     Size    File system     Name                       Flags
 1      1049kB  337MB   336MB                   P01 EFI System  (ESP)      boot
 2      337MB   338MB   1049kB                  P02 BIOS Boot (noEFI)      bios_grub
 3      338MB   1177MB  839MB   ext2            P03 Linux /boot
 4      1177MB  3693MB  2517MB  linux-swap(v1)  P04 Linux Swap
 5      3693MB  7887MB  4194MB  ext4            P05 Linux /usr/local
 6      7887MB  16.3GB  8389MB  ext4            P06 Linux /pub
 7      16.3GB  23.8GB  7550MB  ext4            P07 Linux / openSUSE 15.5
 8      23.8GB  31.4GB  7550MB  ext4            P08 Linux / openSUSE 15.4
 9      31.4GB  38.9GB  7550MB  ext4            P09 Linux / openSUSE TW
10      38.9GB  46.5GB  7550MB  ext4            P10 Linux / TBD
11      46.5GB  54.0GB  7550MB  ext4            P11 Linux / Debian
12      54.0GB  60.0GB  5986MB  ext4            P12 Linux /home

YaST offers only three locations for boot code on this disk, presented as follows:

  1. ☐ Partition (/dev/sda3)
  2. :ballot_box_with_check: MBR (/dev/sda)
  3. ☐ Other

The 32 sector bios_grub partition is sda2. I was expecting to see YaST offer a checkbox for it. I thought I would at least get to see a Grub menu trying to boot the clone, even if it didn’t point to the right installation, but the BIOS reports no bootable device unless I feed it a USB stick to boot from. Can’t sda2 be used for selection 3 here instead of the default to selection 2? Shouldn’t it? I tried it, and it didn’t work. The BIOS doesn’t do a thing like that, just a blinking cursor, no report of absent bootable device or anything else. Oops! How did the boot flag get put on the empty ESP? I moved it to sda2, but that didn’t get me a boot menu either, so I changed installation to partition sda3. That didn’t help either. One more change, to MBR, fixed it, but this is not what I had expected. Is it the little bit of code in MBR that jumps to sda2 the only choice that makes Grub work on GPT sans UEFI?

For anyone who wonders where the oddball sizes come from, it’s because the partitioner I use uses MiB rather than MB, so here are the mostly nice round numbers that it shows:

|ID |ux|Dr|Type, description|Format  |Related |VolumeLabel|OS2-LVM/BM / GPT / Crypt / additional in|  Size MiB |
+--[/dev/sda     GPT disk  1]--------+--------+-----------[Model=Hitachi HTS721]-------------------+-----------+
|01 |  |  |Fsp + GPT hdr/pta|-- -- --|-- -- --|- - - - - -|Size 0x7de sectors                      |        1.0|
|01 | 1|  |EFI System  (ESP)|FAT32   |GPT/EFI |           |P01 EFI System  (ESP)                   |      320.0|
|02 | 2|  |BIOS Boot (noEFI)|        |unknown |           |P02 BIOS Boot (noEFI)                   |        1.0|
|03 | 3|  |Linux Data       |EXT2    |GRUB    |h6p03boot  |P03 Linux /boot                         |      800.0|
|04 | 4|  |Linux Swap       |SWAP    |LinuxV1 |SWAPSPACE2 |P04 Linux Swap                          |     2400.0|
|05 | 5|  |Linux Data       |EXT4    |Linux   |h6p05usrlcl|P05 Linux /usr/local                    |     4000.0|
|06 | 6|  |Linux Data       |EXT4    |Linux   |h6p06pub   |P06 Linux /pub                          |     8000.0|
|07 | 7|  |Linux Data       |EXT4    |GRUB    |h6p07s155  |P07 Linux / openSUSE 15.5               |     7200.0|
|08 | 8|  |Linux Data       |EXT4    |Linux   |h6p08s154  |P08 Linux / openSUSE 15.4               |     7200.0|
|09 | 9|  |Linux Data       |EXT4    |GRUB    |h6p09stw   |P09 Linux / openSUSE TW                 |     7200.0|
|10 |10|  |Linux Data       |EXT4    |Linux   |h6p10tbd   |P10 Linux / TBD                         |     7200.0|
|11 |11|  |Linux Data       |EXT4    |GRUB    |bookworm-cg|P11 Linux / Debian                      |     7200.0|
|12 |12|  |Linux Data       |EXT4    |Linux   |h6p12home  |P12 Linux /home                         |     5709.0|
|16 |  |  |Fsp + GPT pta/hdr|-- -- --|-- -- --|- - - - - -|Size 0x45f sectors                      |      0.546|

TW runs fine, other than ksplashqml crashing twice on each login (as do most of my TW/Plasma installations):

# pinxi -AGSaz --vs --zl --hostname
pinxi 3.3.26-29 (2023-04-28)
System:
  Host: e6400 Kernel: 6.2.12-1-default arch: x86_64 bits: 64 compiler: gcc
    v: 13.0.1 parameters: root=/dev/disk/by-label/h6p09stw net.ifnames=0 5
    ipv6.disable=1 consoleblank=0 mitigations=none noresume
  Desktop: KDE Plasma v: 5.27.4 tk: Qt v: 5.15.9 wm: kwin_x11 vt: 7 dm:
    1: KDM 2: XDM Distro: openSUSE Tumbleweed 20230428
Graphics:
  Device-1: Intel Mobile 4 Series Integrated Graphics vendor: Dell
    driver: i915 v: kernel arch: Gen-5 process: Intel 45nm built: 2008 ports:
    active: LVDS-1,VGA-1 empty: DP-1, DP-2, DP-3, HDMI-A-1, HDMI-A-2
    bus-ID: 00:02.0 chip-ID: 8086:2a42 class-ID: 0300
  Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.1.1
    compositor: kwin_x11 driver: X: loaded: modesetting dri: crocus gpu: i915
    display-ID: :0 screens: 1
  Screen-1: 0 s-res: 2960x1050 s-dpi: 108 s-size: 696x246mm (27.40x9.69")
    s-diag: 738mm (29.06")
  Monitor-1: LVDS-1 pos: left model: Seiko Epson 0x5441 built: 2008
    res: 1280x800 hz: 60 dpi: 107 gamma: 1.2 size: 303x190mm (11.93x7.48")
    diag: 358mm (14.1") ratio: 16:10 modes: 1280x800
  Monitor-2: VGA-1 pos: primary,right model: Dell P2213 serial: 
    built: 2012 res: 1680x1050 hz: 60 dpi: 90 gamma: 1.2
    size: 473x296mm (18.62x11.65") diag: 558mm (22") ratio: 16:10 modes:
    max: 1680x1050 min: 720x400
  API: OpenGL v: 2.1 Mesa 23.0.2 renderer: Mesa Mobile Intel GM45 Express
    (CTG) direct-render: Yes

The reason I bothered with this old laptop is about forum assistance, in this case someone with a GM45 chipset that can’t get Xorg working with two displays.

BIOS_GRUB partition is implicitly used by grub-install when you tell it to install “in MBR of hard disk” (/dev/sda).