In the past, I installed several distributions (Ubuntu 15.10, Debian 8) on Mac Mini. I still like this tiny computer. The memory is limited to 1 GB and the builtin graphic card has only 32 MB of RAM. But I consider it can be quite capable with its G4 (what also means the presence of AltiVec) at 1.3 GHz. I have used Debian for a long time and it is often my defacto choice when it I have to install a new machine. Sometimes I choose Ubuntu (most of the time LTS version) to get a more user friendly environment and more recent software.

Thinking about a Linux distribution in 2021, we must consider the situation has changed : this month is the end of life of Ubuntu 16.04 LTS, the last version of this distribution. Years ago, Debian suddenly decided to drop the official support of PowerPC distribution … putting it in unstable branches called « ports ». So it recently became clear to me that if we want to continue to use Linux on PowerPC (big-endian) in a mid-term future, efforts must be made on high potential distributions.

If we omit dead or exotic projects, my conclusion is we should focus on the unmissable Debian (even if Sid) and a challenger, the promising Void Linux. I started to hear about it concerning PowerPC (in fact POWER, with the support of Power9 workstations by Raptor CS) but this distribution is not specific to this architecture. Even if it is reserved to advanced users, Void Linux PPC is very active, has a great documentation and support (for 32 and 64-bit machines), and also has innovative aspects, like versions with musl libc and/or little-endian mode.

I first wanted to install a dual boot with Debian Sid and Void Linux (with GRUB bootloader that is now the default one) but the former failed to boot from the USB stick (« Invalid memory access » booting the kernel). After all, I don’t want to scatter myself and as Void Linux is efficient, it should better suit the Mac Mini resources.

Installation of Void Linux PPC on Mac Mini G4

Installing and using Linux on a PPC machine is often an discouraging adventure. That requires a good knowledge of Linux and there are many things to know that are here and there. By the way, a great source of information is forums of MacRumors and especially this one about Void Linux.

My goal in this article is to describe the installation in order to make it straightforward for anyone that has a Mac Mini and would like to install Linux. You can read this great article on g5center that gives an overview of Void Linux installation on Mac Mini and how it behaves. It also perfectly reports the downsides.

Anyway, if you want to install Void Linux on your Mac Mini, just follow me !

Boot images are available from this list on voidlinux-ppc.org. Each version has an alternative with the suffix « -xfce ». I personnaly didn’t want to install this graphical environment so I downloaded : void-live-ppc-20200411.iso

I wrote it in an USB stick with :

sudo umount /dev/sdb
sudo dd if=void-live-ppc-20200411.iso of=/dev/sdb
sudo sync

I plugged it into the Mac Mini and booted. It is necessary to stop at OpenFirmware level keeping keys WINDOWS + ALT + O + F pressed until a message says then can ne released. Note that installing Void Linux will write GRUB as bootloader, so be prepared to loose yaboot (it seems the documentation explains how to keep it for a multi-boot configuration).

boot ud:,\boot\grub.img

The GRUB screen appears with a list of profiles : press « Enter » to select the first one (« Void Linux 5.4.31_1 (ppc) ») and be patient. Then a text appears mentionning 2 users (root and anon) with their password, and other information (about using xbps with its command install and query).

Log in using « root » user and then check the date and set it correctly if necessary. In my case with date --set "20210401 21:39". If the date is wrong (like in my case), at the end, when trying to update packages, there will be an error:

Updating (some url) ...
Certificate verification failed for (some other url)
SSL_connect returned 1
ERROR: failed to fetch file (url of first line): Operation not permitted.

That caused me some pain over several installation attempts. Unfortunately this Mac Mini had an out-of-order PRAM battery. No luck. But it seems it happens quite often.

Open the installation guide in another computer browser, to follow instructions and help (and also read the page « Partitioning Notes »). Enter « void-installer » (with no TAB completion) to start installation. A simple GUI appears with a list of items, that you will enter step by step :

Keyboard
Network
Source
Hostname
Locale
Timezone
RootPassword
UserAccount
Partition
Filesystems
Bootloader
Install
Exit

I just have to mention I had initially problems with dhcp, having error Network is inaccessible, please set it up properly. Finally it worked and I suppose it was not due to Void.

At the end, you are notified that installation is done. This is quite fast, a matter of minutes. The installer is a bit coarse, I was not fully reassured, but after all (even if that leads to try several times the installation), I consider that can be enough. Everything is minimalist but well organized and documented.

Anyway, congratulations for this installation. When asked for opening a shell, choose Yes to enter a console to update the system with :

xbps-install -Su

Then, you can shutdown, remove the USB stick, plug a mouse and … push the power button.

More than a terminal

So, installation is done. GRUB appears and Linux starts … until you are prompted. And like me you will say : « Hey, so I have no graphical environment with a login screen ? ». In fact, there are but … you will have to install them selecting packages manually. This is where I think I’m going to save few hours to you.

After I spent these hours myself, I found the page on post installation that I finally understood better afterwards. This is not specific to PowerPC but it basically explains what is necessary. This wiki page is deprecated but it contains more information than the new pointed page if you look at chapters Session and Seat Management (I understood nothing) and Xorg.

I wanted LXDE (light, with LXTerminal) so I installed it with Xorg :

xbps-install xorg xterm lxde

But if you reboot, you will stay in the initial console. First I tried to start LXDE but it was necessary to run startx first. Then, I found an idea elsewhere and I copied /etc/X11/xinit/xinitrc to ~/.xinitrc and added the execution of my desktop environment. During all these operations, I installed Mate to see if it would be more straightforward but it was not (and I had to configure again my keymap in preferences).

To get a login screen and let the possibility to choose a desktop environment, it is necessary to install a display manager, here lightdm :

xbps-install lightdm lightdm-gtk3-greeter

The doc provides an example of .xinitrc that « you can tweak and put in your home directory to help configure Xorg, automatically start a desktop environment, etc. ». Hey ! I don’t want to tweak anything, I just want to install Linux and choose a desktop environment (or two) and get it working with a login screen ! So it basically worked for me but I have it with the wrong keymap. I tried several things and also did read about creating a Xorg conf file … but I need to give me time constraints.

What else ?

Now that I have a working Linux (kernel) with 2 desktop environments. I can use it, install software … Let’s see what the system provides.

The basics :

  • boot time : 43 s to the login screen, and then 42 seconds to make Mate available (there is a 10-15 seconds black screen that is not there with LXDE)
  • kernel version with uname -r : 5.11.11_1
  • MESA version with glxinfo | grep version : 20.3.4
  • page size with getconf PAGESIZE : 4096
  • FPS in glxgears with vblank_mode=0 glxgears : 489 FPS

Mate was not reactive (resizing windows, switching between terminal tabs, etc.). I had to disable software compositing in « System/Preferences/Appearance/Windows ». LXDE is more reactive but I noticed the bottom bar was cut at about 40 % of its width and its menus are almost empty ! Maybe I missed a package ?

A good point is that 3D hardware acceleration is enabled and seems to work with no visible artifacts. No need to add strange properties in the boot command line or in Xorg config. That will help this modest Radeon 9200 with 32 MB of RAM.

Development

As a programmer reflex, I install gcc that comes in version 10.2.1. Then I ran xbps-install perf (that is also part of package linux-tools) : what happens !? Why does it install perl ? I also got git and subversion.

Games

I only tested the package scummvm that comes with SDL2 and libfluidsynth. No immediate issues. I had audio in headphones. Note that it does not start anymore, it fails with this error : LLVM ERROR : Relocation type not implemented yet. Tried again with LXDE and it worked. And with sound in the speaker … I understand nothing.

Video

I installed packages mplayer and vlc.

mplayer: OK with 640x272 videos, but not at all with 720p H264 video

VLC: First, installation failed to download libprotobuf26-lite-3.15.6_1 signature from ... Not found. That worked after xbps-install -Su. So I tested to play a video but that produces an horrible sound in the speaker and VLC displayed libmad error : bad main_data_begin pointer.

Audio

With mplayer, that played full volume in the main speaker while scummvm emited no sound, I had to plug headphones. I supposed I was missing a mixing tool or something. I found a package named AlsaMixer.app : in addition to its strange naming, the GUI was horrible : 3 sliders with no label … I would have prefered a mixer installed by default. So I tried pulseaudio volume control …

Wifi

I have in fact no use of Wifi on this machine and it looks very well described in the official documentation

Internet

Firefox has problems on PPC32 so there is no package for it. I found netsurf that is very basic (and so limited to non-modern websites) and midori that expected to be better but entering a new URL, when I press /, that opens the small search box (with the magnifying glass) …

Conclusion

Void Linux PPC is an interesting challenger and I am pretty sure it should not be hard to contribute. It is well documented : not too much, but essential information is there, or in the main Void Linux website. Provided software is recent, I have hardware acceleration by default (no need to add obscure arguments in the Linux command line or properties into Xorg configuration) and this is a key enabler for the support of this machine (Mac Mini). It won’t be my main computer but it is tiny and powerful enough, I hope I will be able to update and test occasionnally Void Linux and also test applications (including mine) with constrained resources (and perf working). I was not so pleased to learn a new package manager but at least xbps commands looks logical, so it will be rather easy to learn (and there is a basic GUI named octoxbps).

Even if the installer is minimalist and may require several attempts to understand the most difficult items (partitioning), it is well organized and installation is fast. But unfortunately it does not include desktop environments that require manual installation and configuration.

So, here is my starting point to list the things to improve (will see if they end in the issue tracker) :

  • At the end of installation, at least, provide a link to learn how to install a graphical environment. Please, automate the choice and installation of Desktop Environments !
  • A check could be added to verify the date is greater that the date of the ISO release (or then invite to set the date) because it seems that the battery of our old Macs is often dead and that cause errors when installing packages.
  • Root terminal : painful, impossible to navigate in the history, no tab completion
  • Login screen : It uses the wrong keymap (english instead of french)
  • After graphical login, there is a 10 or 15 second black screen with Mate, that is not there with LXDE … I don’t know what it does in the meantime
  • Mate : Window resizing is slow, had to disable software compositing, to check if it was enabled by default
  • LXQt : I remember in one of my first installation attempt, I tried it and crashed with an illegal instruction
  • LXDE : The bottom bar is drawn well until it reaches about 40 % from the left and stops.
  • LXDE : Almost nothing is installed by default, menus are almost empty
  • Menus : I noticed when I install an application, it does not appear immediately in the menus, it will happen next time I will start a session
  • Audio : No audio mixer available by default and the output is difficult to predict (speaker, headphones)
  • ScummVM : Under Mate (but not under LXDE), scummvm crashes with LLVM ERROR : Relocation type not implemented yet
  • VLC : When playing videos, it prints this error « libmad error : bad main_data_begin pointer »
  • The small tool ppc64_cpu is provided in 32-bit images
  • Browser : Last but no the least, Firefox is missing, Netsurf is limited and Midori has an annoying bug writing ‘/’ in the URL

I will be pleased to see this report used, to open issues, provide explanation if I made some things wrong …