Preparing ArchLinux to compile powerpc targets
Recently I started working on PowerPC-related technologies and I needed to prepare an environment to start my studies/research and it’s not that difficult (but I recommend you to choose a book, because it’s going to take a lot of time), but I wanted to write a HOWTO for ArchLinux anyway.
qemu is an open source hypervisor that we will use to prepare our environment. All you need to do to install qemu under ArchLinux is run the following command:
After you have qemu installed, you need to install an operating system supporting PowerPC (just as you’d in a real machine). I wanna install ArchLinux, but looks like PowerPC support on Arch is dead, then I’ll go with Debian. The list of steps to follow is (1) create a virtual machine, (2) install a guest operating system on it and (3) configure the guest system to compile powerpc software.
To accomplish the first step, you need create a disk image and this can be done with the following command (where 20G is the size):
Put everything on the same folder and use the following script to start qemu:
Follow the usual Debian installation steps and change your script to boot from the HD (replace “-boot d” with “-boot c”). When I installed the system, the installer told me it couldn’t complete the installation of the bootloader, then I jumped this step and, for my surprise, the system booted up without my intervention.
The Debian comes with GNOME by default and is slow on an emulated system, then I recomend you to install the packages xfce4 and xfce4-goodies and replace GNOME.
Also, qemu is really slow to emulate the vga card, then I suggest you to install the package openssh-server and do most of your tasks via a ssh connection. You can redirect ports (good to access guest via ssh) from the host system to the guest system passing the -redir argument to the qemu-system-ppc command:
If you want to dig deeper, I suggest you to read this lenthy developerWorks article.
The next tutorial should be a cross-compilation guide to avoid all this middleware steps and part of it is already written, but I’m struggling to make the complete system work.