0029

Fixing grub_regions_claim not found on an iBook G4 with Gentoo

Getting an old PowerPC Mac to boot Linux is already a small victory. Getting it to boot reliably after a GRUB breakage is another matter entirely.

On my iBook G4 (PowerBook6,5) running Gentoo, GRUB suddenly failed with this error:

Loading Linux 6.1.12-gentoo ...
error: symbol 'grub_regions_claim' not found.

At first glance, this looks like a kernel problem. It is not. The kernel is never reached. The real issue is a GRUB version mismatch between the files on the Apple_Bootstrap partition and the GRUB modules on the Linux root filesystem.

This post documents the full recovery process: creating a Gentoo live USB for PowerPC, booting it on the iBook G4, chrooting into the installed system, and reinstalling GRUB correctly.

The symptom

The machine still showed the normal GRUB menu. Editing the boot entry looked possible, and the kernel line was visible. But immediately after selecting the kernel, GRUB aborted with:

error: symbol 'grub_regions_claim' not found.

That detail matters. If GRUB can show the menu but fails when trying to load the kernel, the failure is usually inside GRUB itself rather than in Linux.

What causes this

On NewWorld PowerPC Macs, GRUB is split across multiple locations:

  • GRUB configuration and modules typically live on the Linux filesystem under /boot/grub
  • Mac-specific boot files such as BootX and grub.elf live on the small Apple_Bootstrap partition, usually formatted as HFS

If those components come from different GRUB versions, symbol resolution can fail. That is what happened here.

In practice, this often occurs after:

  • updating GRUB but not reinstalling it fully
  • changing partitions or boot files manually
  • restoring one partition from backup but not the other

The result is a partially updated GRUB installation.

Why editing the GRUB boot entry does not help

I first looked at the boot entry itself. It contained a normal-looking Linux line such as:

linux /boot/kernel-6.1.12-gentoo root=/dev/sda3 ro

That line was fine. The failure happened before the kernel could actually start. So changing kernel parameters would not fix anything.

The recovery strategy

The correct fix is:

  1. boot a Gentoo PowerPC live system
  2. mount the installed Gentoo root filesystem
  3. mount the Apple_Bootstrap partition separately
  4. chroot into the installed system
  5. reinstall GRUB for powerpc-ieee1275
  6. regenerate grub.cfg

Step 1: Write the Gentoo PowerPC live image to a USB stick

On another Linux machine, write the Gentoo PowerPC minimal ISO to a USB stick.

First identify the stick:

lsblk -d -o NAME,SIZE,MODEL

Then write the image to the whole device, not a partition:

sudo umount /dev/sdX* 2>/dev/null || true
sudo dd if=install-powerpc-minimal.iso of=/dev/sdX bs=4M conv=fsync status=progress
sync

Replace /dev/sdX with the actual USB device.

Step 2: Boot the USB stick on the iBook G4

On old PowerPC Macs, USB booting is often easiest through Open Firmware rather than the normal Apple boot picker.

Power on the iBook and immediately hold:

Command + Option + O + F

This opens Open Firmware.

Then probe the USB buses:

dev usb0 ls
dev usb1 ls

Once the stick appears as a disk node, try booting it with:

probe-usb boot usb0/disk:3,\\:tbxi

If that does not work, try the other bus:

probe-usb boot usb1/disk:3,\\:tbxi

If needed, also try partition :2 instead of :3.

Once the live environment starts, proceed with the repair.

Step 3: Identify the installed Gentoo root and Apple_Bootstrap partitions

Before mounting anything, inspect the disk layout:

mac-fdisk -l /dev/sda

or:

parted -l

On my system:

  • the Gentoo root filesystem was /dev/sda3
  • the Apple_Bootstrap partition was /dev/sda2

Do not assume those numbers blindly. Check your own partition table first.

Step 4: Mount the installed system

Mount the installed root partition:

mount /dev/sda3 /mnt/gentoo

Create a mount point for the Apple_Bootstrap partition:

mkdir -p /mnt/gentoo/boot/macppc

Then mount the bootstrap partition as HFS:

mount -t hfs /dev/sda2 /mnt/gentoo/boot/macppc

This is important. Do not just mount everything under /boot and hope for the best. The PowerPC boot files must go to the actual HFS bootstrap partition.

Step 5: Prepare the chroot

Mount the pseudo-filesystems:

mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

Then enter the installed system:

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

Step 6: Reinstall GRUB properly for PowerPC

Now reinstall GRUB with the correct target and Mac PPC directory:

grub-install --target=powerpc-ieee1275 --macppc-directory=/boot/macppc /dev/sda2

Then regenerate the configuration:

grub-mkconfig -o /boot/grub/grub.cfg

Finally:

sync

At this point, the files on the Apple_Bootstrap partition and the GRUB modules under /boot/grub should be consistent again.

Step 7: Reboot

Exit the chroot:

exit

Unmount everything:

umount -R /mnt/gentoo

Then reboot:

reboot

If the problem was the expected GRUB mismatch, the machine should now boot normally again.

What if the Apple_Bootstrap partition refuses to mount cleanly?

If the HFS bootstrap partition is damaged or only mounts read-only, repair it first from the live environment:

fsck.hfs /dev/sda2

Then repeat the mount and reinstall steps.

The full repair sequence

For convenience, here is the whole recovery procedure in one block:

mount /dev/sda3 /mnt/gentoo
mkdir -p /mnt/gentoo/boot/macppc
mount -t hfs /dev/sda2 /mnt/gentoo/boot/macppc

mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

grub-install --target=powerpc-ieee1275 --macppc-directory=/boot/macppc /dev/sda2
grub-mkconfig -o /boot/grub/grub.cfg
sync
exit

umount -R /mnt/gentoo
reboot

Lessons learned

There are a few useful takeaways from this repair:

1. A GRUB symbol error is usually a GRUB problem

If GRUB complains about a missing symbol, the kernel is often innocent.

2. PowerPC Macs have a split boot setup

On these machines, /boot/grub alone is not the whole story. The Apple_Bootstrap partition matters just as much.

3. USB booting old Macs is easier through Open Firmware

The classic Apple boot selector is not always the most reliable path for PowerPC Linux installers.

4. Always verify the real partition layout

On old systems, assumptions about /dev/sda2 and /dev/sda3 can easily be wrong.

Final thoughts

The error message looked obscure, but the fix turned out to be straightforward once the architecture-specific boot layout was understood. The key insight was that this was not a Linux kernel problem at all. It was a stale or mismatched GRUB installation on a PowerPC Mac.

After reinstalling GRUB properly onto the Apple_Bootstrap partition, the iBook G4 booted again without issue.

Old PowerPC machines are fragile in ways modern systems are not, but they are also surprisingly recoverable once you understand how their boot chain is assembled.

Next Post Previous Post