rough post, mostly screenshots, of me installing mac os 9 in qemu on a Windows 10 host, getting it working with qemu’s builtin NAT, then trying to get it bridged to a real Ethernet
here’s how it looks without any arguments
I’m using the qemu 2.11.0 w64 binaries from https://qemu.weilnetz.de/w64/
as of 3/21/2018, the latest 2.12.0-rc0 provided does not work
💻desktop d/E/MacOS9> qemu-system-ppc.exe -version; and qemu-system-ppc QEMU emulator version 2.11.0 (v2.11.0-11693-g21057c841e-dirty) Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
first, create a disk image
💻desktop d/E/MacOS9> qemu-img create -f qcow2 hd0.img 10G Formatting 'hd0.img', fmt=qcow2 size=10737418240 cluster_size=65536 lazy_refcounts=off refcount_bits=16
then run the emulator (NOTE: I’m using fish-shell from Cygwin, so I need to escape the backslashes in the prom-env boot-device specification. You’ll likely need to escape the slashes on any other unixlike shell. Using a Windows cmd.exe shell will only require two backslashes.)
💻desktop d/E/MacOS9> qemu-system-ppc.exe -L pc-bios -boot c -m 256 -M mac99 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -prom-env "boot-device=cd:,\\\\:tbxi" -prom-env "vga-ndrv?=true" -sdl -netdev user,id=net0 -device sungem,netdev=net0 -device usb-mouse -device usb-kbd -drive "file=macos-922-uni/macos-922-uni.iso,format=raw,media=cdrom" -drive "file=hd0.img,format=qcow2,media=disk"
it took a little while to boot. probably about as fast as an actual Mac would
the clock is synced from the host as UTC
after the initial boot, i added -g 1024×768 to the command line for a higher resolution. but the system resized the display back to 800×600 once getting to Finder. 🙁
Apple System Profiler
can’t seem to use cmd+w to close anything… windows+w opens up the windows ink workspace:(
i decided to try qemu with the default Gtk GUI (by removing the -sdl flag), but mouse grabbing didn’t work right after that.
need to format first
i forgot it was called Drive Setup back then
had to page through a few license agreements
You can really micromanage what gets installed…
only took four minutes to install
first boot into OS
remove the CD and boot flag
💻desktop d/E/MacOS9> qemu-system-ppc.exe -L pc-bios -boot c -m 256 -M mac99 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -prom-env "vga-ndrv?=true" -netdev user,id=net0 -device sungem,netdev=net0 -device usb-mouse -device usb-kbd -drive "file=hd0.img,format=qcow2,media=disk" -sdl
howdy. again, boot takes probably about as long as a real Mac would
annoyingly, the resolution drops once Finder loads.
this is followed by network setup
the Monitors control panel wasn’t available from the setup CD, but is after install. now I have 1024×768
it wants me to use the Internet Setup Assistant, though Mac OS has a driver for the virtual Ethernet device and qemu’s internal NAT service is autoconfigured
sometimes there’s long pauses while the internet thing is running
no i don’t want this. just use DHCP
using the browser
there’s no convenient guest features like clipboard integration or drag-and drop file copy, ugh.
downloading Classilla over Gopher
this is like Mozilla but for classic Mac. http://www.floodgap.com/software/classilla/
it was slow. not sure if client or server side; only got 150 KB/sec
i don’t think there’s a sound device included
Classilla had to be unstuffed. took a little while
and it took a little while to start too
let’s bing it
trying to download flash in spanish to own the libs
…but oldapps downloads are broken. so i got flash 7 from adobe and downloaded over HTTP from the host (at about 1 MB/sec)
what do i do with this plugin?
ah.. it still doesn’t work though?
also, my blog is too modern
bridge to Ethernet
install this for bridging to system Ethernet device
this created a virtual Ethernet device:
then bridge the tap device with your LAN connection
and start qemu with TAP!
use tap network backend instead of user, specifying the ifname of the virtual device (Ethernet 3)
i also added the -localtime flag so the virtual clock uses UTC-4
💻desktop d/E/MacOS9> qemu-system-ppc.exe -L pc-bios -boot c -m 256 -M mac99 -prom-env "boot-args=-v" -prom-env "auto-boot?=true" -prom-env "vga-ndrv?=true" -netdev 'tap,id=net0,ifname=Ethernet 3,script=no' -device sungem,netdev=net0 -device usb-mouse -device usb-kbd -drive "file=hd0.img,format=qcow2,media=disk" -sdl -localtime
and traffic is flowing! sometimes
root@LEDE:~# tcpdump -i eth0.1 host 192.168.0.108 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0.1, link-type EN10MB (Ethernet), capture size 262144 bytes 19:48:01.260506 IP powermac.lan.49152 > LEDE.lan.53: 5+ A? wtfismyip.com. (31) 19:48:01.279219 IP LEDE.lan.53 > powermac.lan.49152: 5 1/0/0 A 220.127.116.11 (47) 19:48:06.288435 ARP, Request who-has powermac.lan tell LEDE.lan, length 28 19:48:06.290720 ARP, Reply powermac.lan is-at xx:xx:xx:xx:xx:xx (oui Unknown), length 46
however Mac OS isn’t getting any traffic
the other Windows bridge is an Intel VLAN sub-device, so maybe it’d work if a regular Ethernet adapter was added
possibly a promisc mode/proxy arp issue
haven’t really looked into possible solutions yet, but can think of a few things to try