Documentation/Platforms/m68k
m68k emulator
The following machines are emulated through qemu-system-m68k:
Machine model selector | Provides |
-M an5206 | Arnewsh 5206 |
-M mcf5208evb | MCF5208EVB (default) |
-M next-cube | NeXT Cube |
-M none | empty machine |
-M q800 | Macintosh Quadra 800 |
You can select the desired machine with the -M command line option.
Build directions
./configure --target-list=m68k-softmmu && make
Macintoch Quadra 800
Running Linux
Download a m68k distribution, such as debian-10.0-m68k-NETINST-1.iso. Create a hard disk image to install onto.
Debian latest installer CDs are available at: https://cdimage.debian.org/cdimage/ports/
You will need a kernel and initrd to boot Linux. The easiest way to get these is to mount the iso, and copy them from the /install/cdrom and /install/kernels folders.
Please note that the instructions below use kernel versions that might have been superseded by newer ones! During installation on hard disk image the update process might have installed a newer kernel. Always make sure to extract the latest kernel and initrd.gz from your hard disk image after an update.
The kernel and the initrd needed to boot might also be found in https://cdimage.debian.org/cdimage/ports/debian-installer/
If not, you can also extract the installation kernel and initrd from the installation CD:
guestfish --add debian-10.0-m68k-NETINST-1.iso --ro --mount /dev/sda:/ <fs> copy-out /install/cdrom/initrd.gz . <fs> copy-out /install/kernels/vmlinux-4.16.0-1-m68k .
Or, if you don't want to install guestfish you can use the loop kernel module (but you need to be root):
sudo modprobe loop sudo losetup -f debian-10.0-m68k-NETINST-1.iso sudo mount /dev/loop0 /mnt cp /mnt/install/cdrom/initrd.gz . cp /mnt/install/kernels/vmlinux-4.16.0-1-m68k . sudo umount /mnt sudo losetup -d /dev/loop0
Boot from the CD image:
./qemu-system-m68k -boot d \ -M q800 -serial none -serial mon:stdio -m 1000M \ -net nic,model=dp83932 -net user \ -append "console=ttyS0 vga=off" \ -kernel vmlinux-4.16.0-1-m68k \ -initrd initrd.gz \ -drive file=m68k-deb10.qcow2,format=qcow2 \ -drive file=debian-10.0-m68k-NETINST-1.iso,format=raw,media=cdrom \ -nographic
Use the following for the source for network-based installation:
http://ftp.ports.debian.org /debian-ports/
After installation, extract the kernel and initrd from the hard disk image;
guestfish --add m68k-deb10.qcow2 --mount /dev/sda2:/ <fs>copy-out /boot/vmlinux-4.16.0-1-m68k . <fs>copy-out /boot/initrd.img-4.16.0-1-m68k .
If you don't want to install guestfish, you can use the NBD kernel module (but you need to be root):
sudo rmmod nbd sudo modprobe nbd max_part=7 sudo qemu-nbd -t m68k-deb10.qcow2 -c /dev/nbd0 sudo mount /dev/nbd0p2 /mnt cp /mnt/boot/vmlinux-4.16.0-1-m68k . cp /mnt/boot/initrd.img-4.16.0-1-m68k . sudo umount /mnt sudo qemu-nbd -d /dev/nbd0
To boot from the HD image, you can use:
./qemu-system-m68k -boot c \ -M q800 -serial none -serial mon:stdio -m 1000M \ -net nic,model=dp83932 -net user \ -append "root=/dev/sda2 rw console=ttyS0 console=tty \ -kernel vmlinux-4.16.0-1-m68k \ -initrd initrd.img-4.16.0-1-m68k \ -drive file=m68k-deb10.qcow2,format=qcow2 \ -nographic
Running Mac OS
Note: Mac OS currently will not fully boot on qemu-system-m68k
To boot Mac OS, you need a Macintosh Quadra 800 rom. This rom is found when placed in the pc-bios folder and named MacROM.bin, or can be selected by using the -bios command line option.
./qemu-system-m68k -boot d -L pc-bios \ -M q800 -m 64 \ -serial stdio \ -bios Quadra800.rom \ -cdrom 7.6.iso
The parameter ram (pram) can be saved and loaded from a file:
-drive file=pram.img,format=raw,if=mtd
Where pram.img is a file of exactly 256 bytes long. You can create such a file with e.g., "dd if=/dev/zero of=pram.img bs=256 count=1" or "qemu-img create -f raw pram.img 256"
How to help
Review the patches that are sent to the QEMU mailing list.
Pictures
Links
Maintainer's personal wiki page
68k assembly language tutorial
Quadra 800 specs
Inside Macintosh volumes 1-3
Video of qemu-m68k booting Linux
Video of 24bit GNOME on qemu-system-m68k
Debian m68k port status
Debian m68k port installing tips
Maintainer contact info
Laurent Vivier <laurent@vivier.eu>