Emaculation.com
 

Running Qemu-system-ppc with Mac OS/OSX guests in Windows

(Guide Updated January 10th, 2021)

Introduction

Qemu-system-ppc can run the PowerPC versions of Mac OS 9.0 to 9.2 and OSX 10.0 to 10.5. Qemu can also run some OSX release previews.

The status of various guests based on the latest builds available from the forum:

Guest Default build Sound-enabled build Specific arguments Remarks
Mac OS 9.0 OK Hangs -M mac99 Requires rom version 5.6 or above
Mac OS 9.1 OK Hangs -M mac99
Mac OS 9.2 OK OK
Mac OSX 10.0 OK OK -M mac99
Mac OSX 10.1 OK OK -M mac99
Mac OSX 10.2 OK Sound crackles Has display issue
Mac OSX 10.3 OK Sound crackles
Mac OSX 10.4 OK Sound crackles
Mac OSX 10.5 OK Sound crackles

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.
See the table above for information about specific qemu parameters required to run Mac OS/OSX versions.

Qemu-system-ppc installation

  • Go to http://www.emaculation.com/forum/viewtopic.php?f=34&t=9028 and download our latest build from the official Qemu source.
  • Create a folder for Qemu-related files and unpack the download. Put your Mac OS/OSX disk images in this folder.
  • Create an empty disk image with qemu-img.exe. Open a command prompt and navigate to your Qemu folder.
qemu-img.exe create -f raw -o size=2G MacOS9.2.img 
  • Open your favorite text editor and create a file called qemu.bat in your qemu folder. (If one is contained in the download, edit that one).
  • Paste the code below into the file:

qemu-system-ppc.exe ^
-L pc-bios ^
-M mac99,via=pmu ^
-m 512 ^
-sdl ^
-boot d ^
-drive file=MacOS9.2.iso,format=raw,media=cdrom ^
-drive file=MacOS9.2.img,format=raw,media=disk

  • Save qemu.bat

Short explanation of the content of the file:

qemu-system-ppc.exe starts qemu with all of the following as parameters:

  • -L pc-bios defines the location of bios files to be used.
  • -M mac99,via=pmu defines the mac model used(*).
  • -m 512 defines the amount of memory (in Mb) for OS9/OSX.
  • -sdl instructs Qemu to use SDL for the graphical display
  • -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.
  • -drive file=MacOS9.2.iso,format=raw,media=cdrom defines the name, location, format, and type of image (cdrom) file to be used
  • -drive file=MacOS9.2.img,format=raw,media=disk defines the name, location, format, and type of image (disk) file to be used

(*)The mac model entry accepts 3 options for the via parameter:
mac99,via=pmu (with PMU, supporting 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 (default, this allows use of the older adb (Apple Desktop Bus), now less supported cuda)

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

Installation of Mac OS 9.2

After you booted from the CD you first need to partition the hard disk:

  • 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.bat file:

  • Change the -boot d argument to -boot c.
  • Reverse the order in which your disk and cdrom entry are listed in qemu.bat.

When booting with -boot c, make sure your hard disk image file is listed first. Save the file. Double-click qemu.bat and Mac OS will boot from the hard disk.

Done.

Connecting other CDs or disk images

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 entry to qemu.bat:

"-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.bat. The CD image (if readable by Mac OS) will appear on the desktop for you to use.
A new hard disk needs to be partitioned as described above.

Changing the graphics settings

You can set the initial size and colour depth of the boot window, using 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-system-ppc for Windows 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 several ways to get networking going in Windows:

Slirp-based networking

Note: this is activated by default on Qemu-system-ppc, so doesn't need to be mentioned explicitly on the command line:

  • -device sungem,netdev=network01 -netdev user,id=network01
Running two Qemu-system-ppc instances with networking

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

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

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

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

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.

Tap-based: Bridging one or more tap device (enabling Appletalk networking)

Install an OpenVPN tap device and bridge it with your normal ethernet connection. Then use the following on the Qemu-system-ppc command line:

  • -device sungem,netdev=network01 -netdev tap,ifname=TapEthernet1,id=network01 (and replace “TapEthernet1” with the name of the tap device network connection)

To allow two Qemu-system-ppc instances to “see” each other on the network and also have internet access, install a second tap device and bridge both tap devices with your default network connection. You must then also use different mac addresses for each connection. Note that the tap devices should have different names too.

  • -device sungem,netdev=network01,mac=52:54:00:12:34:56 -netdev tap,ifname=TapEthernet1,id=network01
  • -device sungem,netdev=network01,mac=52:54:00:12:34:66 -netdev tap,ifname=TapEthernet2,id=network01

Peer to peer networking between two Qemu instances

Qemu can use socket networking to connect two peers. The peers will have no internet access, but can exchange data between each other.
Set one guest to be a listener for network traffic:

  • -device sungem,netdev=network01,mac=52:54:00:12:34:56 -netdev socket,id=network01,listen=:1234

Set the other guest to connect to the listener:

  • -device sungem,netdev=network01,mac=52:54:00:12:34:66 -netdev socket,id=network01,connect=127.0.0.1:1234

For both instances, set the TCP/IP settings manually to a free ip address in your IP range and set the subnetmask to 255.255.255.0. No other settings have to be made.

Forwarding (multiple) ports to the host (only needed when using the slirp network option)

You can provide services running on the guest to the host by forwarding ports to the host.

Running a webserver
  • -device sungem,netdev=network01 -netdev user,id=network01,hostfwd=tcp::8080-:80

The webserver running on the guest is then accessible through e.g., http://localhost:8080 or http://name-or-ip-adress-of-host:8080 from other machines running on your network.

Getting files in and out of the guest with FTP
  • -device sungem,netdev=network01 -netdev user,id=network01,hostfwd=tcp::2121-:21

Forwarding port 21 to the host allows running an ftp server (such as Netpresenz) on an Mac OS 9.x guest and read/write access to the file system of the guest. Make sure to use an FTP client capable of active transfer mode on the host (such as Filezilla, we are dealing with an old guest system after all.) For access to a Mac OS X guest, enable the ftp service.
You can access the guest by connecting to either ftp://localhost:2121 or ftp://name-or-ip-adress-of-host:2121 from other machines running on your network.

Multiple port forwarding

You can forward multiple ports:

  • -device sungem,netdev=network01 -netdev user,id=network01,hostfwd=tcp::2121-:21,hostfwd=tcp::8080-:80

You can also forward ports for appletalk over tcp/ip:

  • -device sungem,netdev=network01 -netdev user,id=network01,hostfwd=tcp::548-:548,hostfwd=tcp::387-:387

Accessing a Windows 10 share from Mac OS 9.2 running in Qemu, using Dave 6.2.1

In Windows:
-Make sure you have some folder shared
-Bridge your tap device with your default network interface (see above)
-Start Mac OS 9 through Qemu with tap networking
-Use DHCP on the Mac side.

In Mac OS 9:
-Install DAVE 6.2.1 (find it at Macintoshrepository.org)
-Shut down and start Mac OS
Follow the setup assistant.
-name, company, serial number
-Netbios name: (f.i., QemuOS92)
-Workgroup: WORKGROUP (should be found automatically)
-Description: (f.i., QemuOS92)
-Login at startup: unchecked
Overview:
Computer Name: QEMUOS92
Workgroup Name: WORKGROUP
Description: QemuOS92
Use DHCP to make additional settings
-Sharing local files: check I don’t want to share my local files

(if “Use DHCP to make additional settings” is not shown, check DHCP in the NetBIOS Control Panel)

-Start the Chooser, select your host as server. Enter username, password, leave domain as is.
-You will get an unknown error….
-In the SERVER box, click Add Share. At Share enter a share name on your host. Click OK, and OK.

The share appears on your desktop, you can now exchange files through the share.

Advanced usage

Printing

There are multiple way to print from the guest operating system to the host:

Print directly to a networked printer you have Mac OS/OSX drivers for. This assumes you have set up tap networking so Mac OS can see the windows network and networked printer.

Print to a file that is moved to the host to print. How to print to e.g., a pdf file depends on the guest operating system.

Changing the mounted cdrom image

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

  • Open the Qemu Monitor by pressing Ctrl-Alt-2
  • 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 Driveletter:/path/name-of-cd-image.iso” (note the forward slashes!)
  • Close the Qemu Monitor by pressing Ctrl-Alt-2 again (do not close the window by clicking the close button)

Also see the qemu documentation here: https://www.linux-kvm.org/page/Change_cdrom

Mounting a real cd

NOTE: You cannot mount Mac formatted CD's, but other formats work

  • Open the Qemu Monitor by pressing Ctrl-Alt-2
  • 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 pressing Ctrl-Alt-2 again (do not close the window by clicking the close button)

Using a virtual usb drive to exchange files with the host

NOTE: This option is not error-free

Create an empty folder to be used to exchange files. In the example below, the folder c:\QemuVVFAT is used.
Add the following to your command line:
-device usb-storage,drive=fat32 -drive file=fat:rw:c:\QemuVVFAT,id=fat32,format=raw,if=none

An USB drive called Qemu-VVFAT will appear on your desktop. You can use it to exchange files with the host.

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.

You can download some of these experimental builds for our forum under Experimental builds : http://www.emaculation.com/forum/viewtopic.php?f=34&t=9028

Issues

  • Restart doesn't work in Mac OS. Use Shut Down and restart Qemu.
  • Qemu will not boot Mac OS when memory is set to 64Mb or less.
  • Sound only works reasonably well in Mac OS 9 guests.
  • Sound will not work in Mac OS guests with memory set to 1024Mb or more.

Useful additional command line arguments

  • -k en-us sets the keyboard language (see below for possible languages)

The language codes available are:
ar de-ch es fo fr-ca hu ja mk no pt-br sv
da en-gb et fr fr-ch is lt nl pl ru th
de en-us fi fr-be hr it lv nl-be pt sl tr

  • -rtc base=localtime sets the guest time to the local machine time
  • -full-screen sets the guest to run full screen
ppc-osx-on-qemu-for-windows.txt · Last modified: 2021/01/17 14:39 by cat_7
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki