PowerPC Emulator (32-bit)

Description

This page is about qemu-system-ppc. Note: Information below true for qemu-system-ppc builds as of 14-03-2019

The following machines are emulated through qemu-system-ppc:

Machine model selector Provides
-M g3beige Heathrow based PowerMAC (default)
-M mac99 Mac99 based PowerMAC
-M 40p IBM RS/6000 7020 (40p)
-M bamboo Bamboo
-M mpc8544ds Mpc8544ds
-M none Empty machine
-M ppce500 Generic paravirt e500 platform
-M prep PowerPC PREP platform (deprecated in favour of the 40p machine )
-M ref405ep Ref405ep
-M sam460ex aCube Sam460ex
-M taihu Taihu
-M virtex-ml507 Xilinx Virtex ML507 reference design

Build directions

 ./configure --target-list=ppc-softmmu && make

Due to mouse issues when using the default GTK GUI in Windows, it is advisable to use the SDL-based GUI when compiling on/for that platform:

 ./configure --target-list=ppc-softmmu --enable-sdl && make

Pre-built binaries for Windows and OSX

Pre-built binaries for Windows can be found here: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://qemu.weilnetz.de/w64/
Pre-built binaries for OSX are provided at the emaculation website: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://www.emaculation.com/forum/viewtopic.php?f=34&t=8848
Experimental builds for Windows/OSX with e.g., sound support are provided at the emaculation website: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://www.emaculation.com/forum/viewtopic.php?f=34&t=8848&p=52102#p52104 and here: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://www.emaculation.com/forum/viewtopic.php?f=34&t=9028

PowerMac G4 and G3 emulation

PowerPC Mac G4 (Mac Model PowerPC3,1) and PowerPC Mac G3 emulation

The PowerPC Mac G4 -m mac99 machine model selector has three options:

Machine model selector options Provides
-M mac99,via=pmu pmu power management, providing USB mouse and keyboard
-M mac99,via=pmu-adb pmu power management with adb bus for older OSs not supporting USB
-M mac99,via=cuda cuda power management with adb bus (this is the default)

Optional commands:

Optional commands Default Provides
-prom-env "auto-boot?=true" yes Automatic boot at openbios prompt
-prom-env "boot-args=-v" no Verbose start-up of OSX guests
-prom-env "vga-ndrv?=true" yes On the fly resolution/colour depth switching for Mac OS/OS X guests  
-device VGA,edid=on no Provides additional screen resolutions for Mac OS/OS X guests  

Mac OS/OSX and Linux guest compatibility

Operating system Status Remarks
Mac OS 8.0 to 8.6 Not supported
Mac OS 9.0 Boots, installs, runs Requires 9.0.4 with rom version 5.2.1 and above (e.g., 9.0.4 for the Cube)
Mac OS 9.1 Boots, installs, runs
Mac OS 9.2 Boots, installs, runs
Mac OS 10.0 Boots, installs, runs
Mac OS 10.1 Boots, installs, runs
Mac OS 10.2 Boots, installs, runs
Mac OS 10.3 Boots, installs, runs
Mac OS 10.4 Boots, installs, runs
Mac OS 10.5 Boots, installs, runs Requires -m mac99,via=pmu to run
Mac OSX Server 1.2v3 Boots, installs, runs No networking due to lack of gigabit ethernet support
Lubuntu 14 Boots, installs, runs Requires -g 1024x768x8 to see text while installing
Fedora 12 Boots, installs, runs Requires -g 1024x768x8 to see text while installing
Debian 10 Boots, installs, runs Requires -g 1024x768x8 to see text while installing
OpenSuse 11 Boots, installs, runs Requires -device rtl8139 for networking, -g 1024x768x8 to see text while installing
Yellow Dog Linux 6.2 Boots, installs, runs Requires -device rtl8139 for networking, -g 1024x768x8 to see text while installing

Guest installation instructions

Mac OS 9.x to Mac OS X 10.4

Command-line options to install Mac OS 9:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99 -m 512 -hda <hd image file> -cdrom <iso file of installation media> \
 -netdev user,id=mynet0 -device sungem,netdev=mynet0

Mac OS X 10.5

Command-line options to install Mac OS X 10.X:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 512 -hda <hd image file> -cdrom <iso file of installation media> \
 -netdev user,id=mynet0 -device sungem,netdev=mynet0

Mac OS X Server 1.2v3

Installation requires several steps:
Step 1: boot from installation CD, use disk utility to partition disk as Apple Server, start the installation and let it fail. Quit Qemu and reboot with command line in step 2.

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu-adb -m 256 -net none -prom-env "auto-boot?=true"  -prom-env "boot-args=-v" \
 -cdrom OSXServer1.2v3.iso -hda OSXServer1.2v3.qcow2

Step 2: initial installation (note machine and CPU, otherwise no desktop is shown).

 ./qemu-system-ppc -L pc-bios -boot d -M g3beige -cpu G3 -m 256 -prom-env "boot-args=-v" -prom-env "auto-boot?=false" -net none \
 -hda OSXServer1.2v3.qcow2 -cdrom OSXServer1.2v3.iso

At the boot prompt enter "boot cd:9,\\:tbxi" Initial installation starts. Quit Qemu after completion.

Step 3: Installation continued. Boot with the following command line to complete the installation.

 ./qemu-system-ppc -L pc-bios -boot c -M g3beige -cpu G3 -m 256 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -net none \
 -hda OSXServer1.2v3.qcow2 -cdrom OSXServer1.2v3.iso

Step 4: Boot the installed system:

 ./qemu-system-ppc -L pc-bios -boot c -M g3beige -cpu G3 -m 256 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -net none \
 -hda OSXServer1.2v3.qcow2 -cdrom OSXServer1.2v3.iso

Lubuntu 14

Installation:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user \
 -hda lubuntu14.qcow2 -cdrom lubuntu-14.04.5-desktop-powerpc.iso

Running:

 ./qemu-system-ppc -L pc-bios -boot c -prom-env "boot-device=hd:,\yaboot" -prom-env "boot-args=conf=hd:,\yaboot.conf" \
 -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user -hda lubuntu14.qcow2 -cdrom lubuntu-14.04.5-desktop-powerpc.iso

Fedora 12

Installing:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user \
 -hda fedora12.qcow2 -cdrom Fedora-12-ppc-DVD.iso -g 1024x768x16 

Running:

 ./qemu-system-ppc -L pc-bios -boot c -prom-env "boot-device=hd:,\yaboot" -prom-env "boot-args=conf=hd:,\yaboot.conf" \
 -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user -hda fedora12.qcow2 -g 1024x768x32

Debian 10 (Buster)

Note: To get a graphical desktop, at software selection, remove the default desktop environment and install only Xfce
Installing:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user \
 -hda debian10.qcow2 -cdrom debian-10.0-powerpc-NETINST-1.iso -g 1024x768x8

Running:

 ./qemu-system-ppc -L pc-bios -boot c -prom-env "boot-device=hd:,\yaboot" -prom-env "boot-args=conf=hd:,\yaboot.conf" \
 -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user -hda debian10.qcow2 -g 1024x768x32

At the Linux boot prompt enter "Linux modprobe.blacklist=bochs_drm"

Pre-installed images of Debian 6 (Squeeze) and 7 (Wheezy) (both minimal and with desktop) can be found here: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://people.debian.org/~aurel32/qemu/powerpc/

These images boot with:

 ./qemu-system-ppc -L pc-bios -boot c -M mac99,via=pmu -m 1024 -net nic,model=sungem -net user \
 -hda debian_wheezy_powerpc_desktop.qcow2 -g 1024x768x32

OpenSuse 11

Installing:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 512 -net nic,model=rtl8139 \
 -net user -hda opensuse11.qcow2 -cdrom opensuse11.iso -g 1024x768x16 

Once the license screen appears, press Ctrl-Alt-Shift-X to open a terminal. Follow http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">https://en.opensuse.org/SDB:Install_openSUSE_on_an_Apple_PPC_computer to create partitions with pdisk. Write the map after partitioning and continue with Yast. Once Yast arrives at partitioning, select Expert partitioning, select the Hard disk and click Rescan disk.
Leave hda2 as it is.
Edit hda3 to format as Ext2, mount at /boot and set fstab option to: Mount in /etc/fstab by to Device Path (instead of Device ID)
Edit hda4 to format as Swap and set fstab option to: Mount in /etc/fstab by to Device Path (instead of Device ID)
Edit hda5 to format as Ext3, mount at / and set fstab option to: Mount in /etc/fstab by to Device Path (instead of Device ID)

Accept the partitioning and continue with formatting. Continue installing. There will be an error while the boot manager is being installed. Ignore it, do not retry and wait for the installation to finish and the system reboots. Quit Qemu at the openbios screen and edit your command line:

 ./qemu-system-ppc -L pc-bios -boot c -M mac99,via=pmu -m 512 -net nic,model=rtl8139 \
 -net user -hda opensuse11.qcow2 -cdrom opensuse11.iso -g 1024x768x32

Yellow Dog Linux 6.2

Installing:

 ./qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 1024 \
 -netdev user,id=network01 -device rtl8139,netdev=network01 \
 -cdrom <installation-image> -hda <hard disk image> -g 1024x768x16

Running:

 ./qemu-system-ppc -L pc-bios -boot c -M mac99,via=pmu -m 1024 \
 -prom-env "boot-device=hd:,\yaboot" -prom-env "boot-args=conf=hd:,\yaboot.conf" \
 -netdev user,id=network01 -device rtl8139,netdev=network01 \
 -hda <hard disk image> -g 1024x768x16

IBM RS/6000 7020 (40p)

The 40p machine can be booted with the sandalfoot zImage from: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">http://www.juneau-lug.org/zImage.initrd.sandalfoot

Booting:

 ./qemu-system-ppc -M 40p -cdrom zImage.initrd.sandalfoot -boot d

 

Bamboo

 ./qemu-system-ppc -m bamboo

Mpc8544ds

 ./qemu-system-ppc -m mpc8544ds

Empty machine

 ./qemu-system-ppc -m none

Generic paravirt e500 platform

 ./qemu-system-ppc -m ppce500

PowerPC PREP platform (deprecated in favour of the 40p machine)

 ./qemu-system-ppc -m prep

Ref405ep

 ./qemu-system-ppc -m ref405ep

aCube Sam460ex

Booting:

 ./qemu-system-ppc -machine sam460ex -rtc base=localtime \
 -drive if=none,id=cd,file=Sam460InstallCD-53.58.iso,format=raw \
 -device ide-cd,drive=cd,bus=ide.1

Taihu

 ./qemu-system-ppc -m taihu

Xilinx Virtex ML507 reference design

 ./qemu-system-ppc -m virtex-ml507

Debugging tips

Command line options

 -d unimp,guest_errors

(logs unimplemented features and guest errors to stdout)

 -trace 'pmu_*'

(logs all PMU accesses to stdout)

 -trace 'usb*'

(logs all USB accesses to stdout)

Macsbug

Macsbug can be used with Mac OS guest to tell you what exactly stopped booting. The link for it is below.
Mac OS 9.2 comes with a built-in debugger. To use it, set the OpenBIOS variable &#147;APPL,debug&#148;:

Via QEMU's command-line options:

 -prom-env aapl,debug=2000000

In OpenBIOS type:
dev /
2000000 encode-int *Note: the number can be replaced with the many options available
&#147; AAPL,debug&#148; property
then to boot from a cd type:
boot cd:,\\:tbxi

To boot from a hard drive image:
boot hd:,\\:tbxi

Debugging qemu-system-ppc with GDB on an x86 Linux host

To build gdb-powerpc-linux on Linux, you need the normal build tools such as GCC installed. Download the GDB source code. Version 7.9 is reported to work: http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22%3E %3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M1.5 4.518h5.982V10.5H1.5z%22/%3E %3Cpath fill=%22%2336c%22 d=%22M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z%22/%3E %3Cpath fill=%22%23fff%22 d=%22M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z%22/%3E %3C/svg%3E"); background-size: initial, initial; background-attachment: initial, initial; background-origin: initial, initial; background-clip: initial, initial; padding-right: 13px; overflow-wrap: break-word; background-position: right center; background-repeat: no-repeat;">http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz Unpack it and cd into the dir, then build and install with:

 ./configure -target=powerpc-linux --enable-sim-powerpc
 make && sudo make install

Launch qemu-system-ppc(64) with -s and -S. Qemu will pause and listen on port 1234 for GDB. Set -prom-env "auto-boot?=false" --nographic on the command line for the Qemu instance to be debugged.

 qemu-system-ppc -s -S -prom-env "auto-boot?=false" --nographic

Open another terminal and launch the GDB you just built:

 gdb-powerpc-linux
 target remote localhost:1234
 continue

You can set a breakpoint in GDB, like this:

 break *0x20dccc

Type "boot" in the terminal running Qemu.

Emulated hardware issues

Mac OS

-Only Mac OS 9.x support sound well. Use an experimental build.
-Mac OS 9.x will not boot with 64 Mb or less memory. They will also not boot with more than 1024 Mb.