Add new comment

Installing Fedora 22 on Apple PowerMac G5 HOWTO

I have a couple of dualcore Apple PowerMacs from my past experiments with bigendian architectures. They used to be powerhouses in 2005 that cost quite a bunch of money, but for quite a few years now you can get them for under $200 shipped.

Anyway, Fedora12 that I had installed there was no longer cutting it, so I decided to upgrade to something more modern, like Fedora 22 (which is the current at the time of this writeup), but alas Fedora 20, Fedora 21 and Fedora 22 installers are all failing in exactly the same way for me, once you select everything and try to do install, you get "The package 'yaboot' is required for this installation. This package does not exist. This is a fatal error and installation will be aborted."

[yaboot is required image]

I did a bunch of extra reading and found out that Fedora is no longer targeting Mac PPC hardware and reoriented itself to server-grade contemporary PPC. This is also manifested in Fedora 22 installer not even being able to display anything anymore due to nouveau firmware loading problems.

So here comes the HOWTO on installing Fedora on such boxes.

First of all you would need to boot the installer somehow. My machines seem to be unable to read DVDs anymore, so I just used my previous Fedora12 install to put in install kernel and initrd to bootstrap the new install, but you can likely also boot from USB or network.

It's important (esp. on Fedora 22) to enable installation via vnc and to also enable ssh access during install. The kernel command line options for this are "inst.sshd vnc vncpassword=123456" additionally you might want to add a path to your installation media, in my case it's on NFS: "" and finally disabling nouveau optimizations for older versions of Fedora, esp. if you want to use graphical installer is needed - "nouveau.noaccel=1"

Once the installation starts, connect to your powermac with both ssh (as root, no password)and a vnc client.

On the initial screen select an "installation destination" and you'll get to the disk selection screen:

Select disks you want to install to (I had a separate ssd just for this install) and also choose "I will configure partitioning".

Now press Doen and you'll get into the disk partitioning screen:

The disk is empty in my case, if yours is not empty - delete all volumes you do not need. Important note: if you happen to have old swap partitions from e.g. Fedora12 - either remove or reformat them, as otherwise installer hangs.

Then press the link to create partitions automatically for you. You'll end up with something like this:

Adjust partition sizes to your liking.

Note that while it would be great to increase the apple bootstrap partition (that would be useful later), it could not be done.

Once partitioning is complete, press done and return to the main installer screen. From there configure your system time, choose minimal install type (since it's not going to work in automatic mode anyway).

Then begin the installation, this will do all the partitioning and formatting we want, mount everything in place and then fail with the yaboot is missing message.

Now it's time to actually perform the install in manual mode - go to your ssh window and issue these commands:

mkdir /etc/yum.repos.d
cat <<EOF >/etc/yum.repos.d/fedora.repo
name=Fedora $releasever - $basearch

This will create a dnf repo file pointing at your install source.

Now we can perform the actual install with dnf (or yum for older versions), I chose minimal install, but you can use other options too ("dnf grouplist" will show you the possible options here).

dnf --releasever=22 --nogpgcheck --installroot /mnt/sysimage/ groupinstall -y 'Minimal Install'

This will take some time, you'll see another shell prompt when done.

Now it's time to chroot into our install and do some more work, like install the kernel and bootloader that are not installed by default.

First we install the kernel and the bootloader files and prepare the bootloader config:

chroot /mnt/sysimage
dnf clean all # to refetch main repo metadata
dnf install -y kernel grub2 hfsutils lvm2

cat > /etc/default/grub <<EOF
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX=" $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) nomodeset"

grub2-mkconfig >/etc/grub2.cfg

Now it's time to create a small grub2 image that would actually fit into the apple bootstrap partition (remember how it could only be at most 1M, so we select a useful subset of those modules that we actually need):

(note, a732e5bd-e4a8-4ffb-a0fe-f49fca582cc4 below is uuid of your /boot partition, get it with "blkid" command)

grub2-mkconfig >/etc/grub2.cfg

cat >/tmp/grub_modules <<EOF
moddep.lst bitmap.mod datehook.mod gzio.mod lsmmap.mod all_video.mod reboot.mod terminal.mod bitmap_scale.mod datetime.mod halt.mod memdisk.mod regexp.mod test.mod blocklist.mod echo.mod help.mod memrw.mod relocator.mod trig.mod boot.mod elf.mod hexdump.mod minicmd.mod scsi.mod true.mod bufio.mod ext2.mod hfs.mod msdospart.mod search.mod video.mod cat.mod fat.mod hfsplus.mod normal.mod search_fs_file.mod video_fb.mod cmp.mod font.mod ieee1275_fb.mod part_apple.mod search_fs_uuid.mod videoinfo.mod configfile.mod fshelp.mod linux.mod part_msdos.mod search_label.mod cpio.mod gettext.mod loadenv.mod parttool.mod setjmp.mod crypto.mod gfxmenu.mod loopback.mod probe.mod sleep.mod date.mod gfxterm.mod ls.mod read.mod suspend.mod kernel.img

mkdir /tmp/grub-modules
cd /tmp/grub-modules
for i in `cat /tmp/grub_modules` ; do cp /usr/lib/grub/powerpc-ieee1275/$i . ; done
cat > ../grub.cfg <<EOF
search --no-floppy --fs-uuid --set=root a732e5bd-e4a8-4ffb-a0fe-f49fca582cc4
set prefix=($root)/grub2
configfile /grub2/grub.cfg

grub2-mkimage -c ../grub.cfg -p /grub2 -O powerpc-ieee1275 -o ../grub.img *.mod

This has created a /tmp/grub.img that Mac firmware knows how to boot. It is now time to place it where the firmware can actually find it (/dev/sda2 is your Apple bootstrap partition, if you install to a different drive, make adjustments to the commands as necessary):

mount /dev/sda2 /mnt
cp /tmp/grub.img /mnt/
umount /mnt
hmount /dev/sda2
hattrib -t tbxi -c UNIX grub.img
hattrib -b :

Now let's remove all the temporary files we created so far:

# Remove temp grub files
rm -rf /tmp/grub*

After this step you have a bootable system, but you won't be able to login because the root password is not set, so use "passwd" command to set your root password now.

Additionally I noticed that fans on my powermac become really loud and traced it down to lack of i2c modules loading so the fan control cannot see the fans. Let's fix this with a config file while we are at it:

# Fan control fixup
cat >/etc/modprobe.d/windfarm_powermac.conf <<EOF
# For Powermac11,2 but likely for any kind of windfarm modules
install windfarm_pm112 /sbin/modprobe i2c_powermac ; /sbin/modprobe --ignore-install windfarm_pm112

And finally, now is a great time to to update your system to all the latest version of packages:

dnf update

and then reboot and your system should come up just as it did for me.


Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <p>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.