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:
- ☐ Partition (/dev/sda3)
- MBR (/dev/sda)
- ☐ 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.