Emaculation.com

This is an old revision of the document!


Qemu for OSX

Installing Qemu for OSX

Qemu can run PPC Mac OS 9.0, 9.1, 9.2 and PPC OSX 10.0, 10.1, 10.2, 10.3, 10.4 and 10.5

Requirements

  • Qemu program
  • Disk images for the PowerPC versions of Mac OS or OSX you want to install

Assumptions in this guide

This guide assumes you are installing Mac OS 9.2 on a 2gb file that will act as your hard disk for Mac OS.
The CD image you install from is called MacOS9.2.iso and the hard disk is called MacOS9.2.img

Installations of other versions of Mac OS or OSX (roughly) follow the same path.

If you need to boot from a real CD, see the section Booting from a real CD below.

Qemu installation

./qemu-img create -f raw -o size=2G MacOS9.2.img 
  • Open your favorite text editor and create a file called qemu.command in your qemu folder.
  • Paste the code below into the file (from qemu-system-ppc (4th line) on all text should be on one line!):
#!/bin/bash
cd "$(dirname "$0")"

qemu-system-ppc -L pc-bios -boot d -M mac99,via=pmu -m 512 -prom-env 'auto-boot?=true' -prom-env 
'boot-args=-v' -prom-env 'vga-ndrv?=true' -drive file=MacOS9.2.iso,format=raw,media=cdrom -drive file=MacOS9.2.img,format=raw,media=disk -netdev user,id=network01 -device sungem,netdev=network01
  • Save qemu.command and make it executable:
chmod +x qemu.command

Short explanation of the content of the file:

#!/bin/bash tells OSX this is a bash script
cd “$(dirname “$0”)” set the path for the executable to current folder
qemu-system-ppc starts qemu with all the following as parameters:
-L pc-bios points qemu to some required files, including openbios-ppc and the vga driver qemu_vga.ndrv.
-boot d defines to boot from a drive entry marked as a cdrom, “-boot c” would define to boot from a drive entry marked as disk.
-M mac99,via=pmu defines the mac model used (*).
-m 512 defines the amount of memory (in Mb) for OS9/OSX.
-prom-env 'auto-boot?=true' -prom-env 'boot-args=-v' define boot parameters for openbios and Mac OSX. The “-v” makes the boot process verbose
-prom-env 'vga-ndrv?=true' loads the qemu_vga.ndrv file to provide on the fly resolution swithing. Setting this to false ignores the driver
-drive file=MacOS9.2.iso,format=raw,media=cdrom defines the name, location, format, and type of a cdrom image file to be used
-drive file=MacOS9.2.img,format=raw,media=disk defines the name, location, format, and type of a hard disk image file to be used
-netdev user,id=network01 -device sungem,netdev=network01 tells qemu to use the sungem network device on a qemu-internal DHCP server

(*)The mac model entry accepts 3 options for the via parameter:
mac99,via=pmu (this option supports usb mouse and keyboard)
mac99,via=pmu-adb (this allows some older Mac OS/Mac OS server builds to use a keyboard and mouse through the adb bus)
mac99,via=cuda (this is the default setting, allowing the use of the older, now less supported cuda)

  • Double-click qemu.command. This starts Qemu and boots the MacOS9.2.iso installation CD image.

Installation of Mac OS 9.2

To install Mac OS, you first need to partition the hard disk, so after you booted from the CD go into the “Utilities” folder and start the “Drive Setup” program. Select the entry “<not initialized>” and click “Initialize” and again in the next window. After initialization has finished and a disk icon has appeared on the desktop, quit the program.
You can then start the installation of Mac OS. Shut down Mac OS after the installation has finished.
Please note that the initialization step has to be repeated for any NEW disk added to Mac OS.

Booting the installed Mac OS

To boot the installed Mac OS, you need to edit the qemu.command file:

  • Change the “-boot d” argument to “-boot c”.
  • Reverse the order in which your disk and cd rom entry are listed in qemu.command.

So, when booting with “-boot c”, make sure your hard disk image file is listed first. If you have no need for the cd rom disk to be available, you can remove the entry from the command line. Save the file. Double-click qemu.command and Mac OS will boot from the hard disk.

Done.

Connecting other CD or disk images

You easily change CDs in Qemu for OSX: first drag the current CD icon to the trash. Then open the menu Machine and click change ide1-cd0 and navigate to the cd image you want to mount. Double click the image and wait for it to be mounted on the Mac OS/OSX desktop.

If you want to install software, make an image of the CD-Rom and attach it to Qemu. Add a disk after the hard disk like below to qemu.command:

"-drive file=Name-of-CD-image.iso,format=raw,media=cdrom" (without the quotes!)

or for a second hard disk:

"-drive file=Name-of-hard-disk-image.img,format=raw,media=disk" (without the quotes!)

And save the file. Start qemu.command. The CD image (if readable by Mac OS) will appear on the desktop for you to use.

Changing the graphics settings

If you need to change the default screen size or colour depth, you can use the -g parameter like this:

"-g 1024x768x32"  (Without the quotes!)

Subsequent changes to the resolution can be made with default OS tools. (e.g., the Monitors control panel in MacOS or equivalent in OSX).

Networking

The latest Qemu for OSX builds emulate a network device that is supported out of the box for Mac OS 9.0 up to OSX 10.5
However, you can also use the realtek 8139 device. This requires installation of the appropriate drivers. You can download them from the Realtek site, or all drivers in one iso from here

There are two ways to get networking going in OSX: through slirp or tap networking:

Slirp-based networking

If not added already, add the following to your command line:

  • -netdev user,id=network01 -device sungem,netdev=network01

Bridging a tap device manually

For OSX Mountain Lion and above, supporting network bridging: install tuntaposx and add the first line to your qemu command line, run qemu with sudo, and execute the other lines in another terminal window:

  • -netdev tap,id=network0,script=no,downscript=no -device sungem,netdev=network0
  • sudo ifconfig bridge0 create
  • sudo ifconfig bridge0 addm en0
  • sudo ifconfig bridge0 addm tap0
  • sudo ifconfig bridge0 up

Bridging a tap device: the easy way

Create a network bridge in your OSX host network settings and add your network device to the bridge. Install tuntaposx.

Change the script with which you boot qemu:

  • remove: -netdev user,id=network0
  • add: -netdev tap,id=network0,script=./tap-scripts/tap-up.txt,downscript=./tap-scripts/tap-down.txt

Save the boot script and run it as root.
If you want, you can leave the bridge intact after you quit Qemu, so it is already available next time you run Qemu with tap networking.

Running two qemu instances with networking

If you want to run two installations of Mac OS/OSX, Qemu needs to be able to tell the network devices apart. You can add a mac address to the networking device:

  • -netdev user,id=network01 -device sungem,netdev=network01,mac=52:54:00:12:34:56 (this is the default mac address)

and make sure you add a different mac address to the second instance:

  • -netdev user,id=network01 -device sungem,netdev=network01,mac=52:54:00:12:34:66

Please note that adding a mac address other than the default to the network device leads to the discovery of a new network card in OSX. You need to configure that card through the network preferences.

Getting files in and out of your emulated Mac through a network connection

OSX 10.3/10.4 guests: Make sure you have file sharing enabled on your host and that you share some folder. Find the current IP address of your host: open the system report and click Networking. The IP address should show behind the active network connection.
Start Qemu, click Go/Connect to server. Enter

afp://ip-address-of-your-host. 

At Connect as select Registered user and enter your user name and password for your host. Then select a shared folder from the list and click OK. You can now read and write files to the shared folder that appeared on your desktop.

Booting from a real CD

To boot from a real CD, you first need to insert the CD and unmount it using e.g., Diskutility.
Next, run Qemu as root. So add sudo in front of ./qemu-system-ppc and set -cdrom /dev/cdrom in your command file.
Example command line:

#!/bin/bash
cd "$(dirname "$0")"
sudo ./qemu-system-ppc -L pc-bios -M mac99 -m 512 -boot d -prom-env 'auto-boot?=true' -prom-env 'boot-args=-v' -prom-env 'vga-ndrv?=true' -cdrom /dev/cdrom -netdev user,id=network01 -device sungem,netdev=network01

If the CD was not unmounted correctly, Qemu tells you the commands you need to enter (in e.g., another terminal window) to unmount the CD. For example:

qemu-system-ppc: -cdrom /dev/cdrom: If device /dev/disk5 is mounted on the desktop, unmount it first before using it in QEMU
qemu-system-ppc: -cdrom /dev/cdrom: Command to unmount device: diskutil unmountDisk /dev/disk5
qemu-system-ppc: -cdrom /dev/cdrom: Command to mount device: diskutil mountDisk /dev/disk5

The CD might stay unmounted after you stop Qemu. You can use diskutility to mount it again and eject it. Or use the terminal command Qemu suggests for mounting the CD.

Creating new disk image in OSX with DiskUtility

You can make new disk images which Qemu will use as hard drive, on which you can install Mac OS/OSX.
Open Disk Utility, create a new image like this:

  • Click New image
  • At save as, first select your qemu folder, and then name the image as e.g., “OSX-Jaguar.img”
  • Size: Custom. Choose 6 Gb
  • Set the format : Mac OS Extended (journaled)
  • Set encrypting : none
  • Set Partitions : Hard disk
  • Image format : read/write disk image
  • Click “Create”

This creates an image called “OSX-Jaguar.img”

Changing the mounted cdrom image

In Mac OS guest: First drag any mounted CD from the desktop into the trash.

Open the Qemu Monitor by selecting View/Compat monitor from the Qemu menu
Type “info block” to find the name of the CD drive in Qemu (most likely: ide1-cd0)
Type “eject ide1-cd0”
Type “change ide1-cd0 /path/to/name-of-cd-image.iso” (note the forward slashes!)
Close the Qemu Monitor by selecting View/VGA

Mounting a real cd

NOTE: you need to unmount the real cd from the desktop (using e.g., disk utility) before using it in Qemu.

Open the Qemu Monitor by selecting View/Compat monitor from the Qemu menu
Type “info block” to find the name of the CD drive in Qemu (most likely: ide1-cd0)
Type “change ide1-cd0 /dev/cdrom” (note the forward slashes!)
Close the Qemu Monitor by selecting View/VGA from the Qemu menu

Experimental builds

Qemu is being actively developed. This means that some new features can become available that are not yet incorporated into the official source code. Currently there are several such developments, in various states of reliability:

-Sound support
-Support for a PMU (power management unit)

You can download some of these experimental builds from our forum: http://www.emaculation.com/forum/viewtopic.php?f=34&t=8848&p=52102#p52102

Various utilities

Script to prepare a hard disk image for use with OSX Server 1.2v3 or Developer preview 2.

  • Remove the # in front of the desired disksize:

#!/bin/sh

TARGET_IMAGE=Mac_OS_X_Server_1.0-4G.img

#1G
DISKSIZE_IN_BLOCKS=2097152

#2G
#DISKSIZE_IN_BLOCKS=4194304

#4G
#DISKSIZE_IN_BLOCKS=8388608

PRIMARY_PARTITIONSIZE_IN_BLOCKS=`expr $DISKSIZE_IN_BLOCKS - 512 - 16384 - 64`

echo $PRIMARY_PARTITIONSIZE_IN_BLOCKS

pdisk $TARGET_IMAGE -initialize
pdisk $TARGET_IMAGE -createPartition MOSX_OF3_Booter Apple_HFS 64 16384
pdisk $TARGET_IMAGE -createPartition SecondaryLoader Apple_Loader 16448 512
pdisk $TARGET_IMAGE -createPartition “0x000001FF 0x0008 0x00” Apple_Rhapsody_Inst 16960 $PRIMARY_PARTITIONSIZE_IN_BLOCKS


Currently known issues

  • Restart doesn't work in Mac OS. Use Shut Down and restart Qemu.
ppc-osx-on-qemu-for-osx.1536657448.txt.gz · Last modified: 2018/09/11 02:17