wiiMac Bootloader
repository·main·Indexed 20 days ago
https://github.com/bryankeller/wiimacA bootloader that enables PowerPC-based Mac OS X operating systems to run natively on Nintendo Wii hardware. It currently provides full support for Mac OS X 10.0 Cheetah via a patched kernel and specific drivers. The project includes detailed guides for partitioning SD cards on macOS, Linux, and WSL, as well as instructions for configuring video modes and boot arguments via config.txt.
What's inside wiiMac
- wiiMac is a bootloader that enables PowerPC versions of Mac OS X to boot natively on the Nintendo Wii hardware. You can find precompiled, ready-to-run bootloader executables in the project's Releases page.
Hardware limitations of wiiMac
mainWhen running Mac OS X on the Nintendo Wii via wiiMac, the following hardware components are currently not supported:
- Wi-Fi
- Bluetooth
- Optical drive
- Hardware-accelerated graphics
- Audio
Set up the BootMii SD Card
mainThe BootMii SD card is used to load the wiiMac bootloader.
- Download the latest release from the wiiMac Releases page.
- Copy the entire
wiiMacfolder (which includeswiiMac.elfandconfig.txt) to the root of your SD card. - Verify the file structure is as follows:
/ ├── bootmii │ ├── ppcboot.elf │ └── armboot.bin └── wiiMac ├── wiiMac.elf └── config.txt- Edit
/wiiMac/config.txtto set the correctvideo_modefor your Wii region:ntscp,ntsci,pal60, orpal50.
/ └── bootmii ├── ppcboot.elf └── armboot.bin └── wiiMac ├── wiiMac.elf └── config.txtPartition the Mac OS X System SD Card (WSL Host)
mainTo use WSL, you must first expose the USB device using
usbipd-winon Windows, then perform partitioning inside WSL.- On Windows (Administrator PowerShell):
- Install
usbipd-win:winget install --interactive --exact dorssel.usbipd-win - List devices:
usbipd list - Bind and attach the SD card (replace
7-1with your BUSID):usbipd bind --busid 7-1 usbipd attach --wsl --busid 7-1
- Install
- In WSL:
- Install utilities:
sudo apt install parted hfsprogs dosfstools mtools kpartx - Identify device:
lsblk -f - Partition (replace
sdXwith your device):sudo parted /dev/sdX mklabel mac mkpart primary hfs+ 1MiB -1088MiB mkpart primary hfs+ -1088MiB -64MiB mkpart primary fat32 -64MiB 100% quit - Format partitions:
sudo mkfs.hfsplus -v "Macintosh HD" /dev/sdX2 sudo mkfs.hfsplus -v "Install" /dev/sdX3 sudo mkfs.vfat -F 32 -n "Support" /dev/sdX4
- Install utilities:
# Example WSL partitioning steps # Replace sdX with the correct device for the SD card sudo parted /dev/sdX # (Inside parted interactive shell) mklabel mac mkpart primary hfs+ 1MiB -1088MiB mkpart primary hfs+ -1088MiB -64MiB mkpart primary fat32 -64MiB 100% quit # Then format sudo mkfs.hfsplus -v "Macintosh HD" /dev/sdX2 sudo mkfs.hfsplus -v "Install" /dev/sdX3 sudo mkfs.vfat -F 32 -n "Support" /dev/sdX4- On Windows (Administrator PowerShell):
Prerequisites for wiiMac installation
mainTo use wiiMac, ensure you meet the following requirements:
- Hardware: A Wii with an SD card slot (Note: Wii Mini is not supported).
- Software: A soft-modded Wii with BootMii installed as
boot2orIOS. - BootMii SD Card: An MBR-formatted SD card with a FAT32 partition containing the following files:
/bootmii/ppcboot.elf/bootmii/armboot.bin
- Mac OS X System SD Card: A second SD card (at least 4 GB) to hold the Mac OS X system, installer, and support files.
Flash the Mac OS X Installer to the SD Card
mainOnce the SD card is partitioned, you must copy a Mac OS X installer image to the
Installpartition.macOS Host
- Identify partitions:
diskutil list - Unmount partitions:
diskutil unmount diskXsA(Install partition) anddiskutil unmount diskYsB(Installer partition). - Perform block-level copy:
# Replace diskXsA with SD card Install partition and diskMsY with source installer partition sudo dd if=/dev/rdiskYsB of=/dev/rdiskXsA bs=512k status=progress
Linux Host
- Create logical devices for the ISO:
sudo kpartx -av /path/to/installer/iso - Identify partitions:
lsblk -f - Unmount partitions:
sudo umount /dev/sdXA(Install partition) andsudo umount /dev/sdYB(Installer partition). - Perform block-level copy:
# Replace sdXA with SD card Install partition and sdYB with source installer partition sudo dd if=/dev/sdYB of=/dev/sdXA bs=1M status=progress conv=fsync
WSL Host
- Create logical devices:
sudo kpartx -av /path/to/installer/iso - Identify partitions:
lsblk -f(Note: loopback partitions are under/dev/mapper/) - Perform block-level copy:
# Replace sdXA with SD card Install partition and loopYpB with source installation sudo dd if=/dev/mapper/loopYpB of=/dev/sdXA bs=1M status=progress conv=fsync
- Identify partitions:
Partition the Mac OS X System SD Card (Linux Host)
mainOn a Linux host, use
partedandmkfstools. Warning: This will erase the SD card.- Identify the device:
lsblk -f - Partition the card using the
maclabel:# Replace sdX with the correct device for the SD card sudo parted /dev/sdX --script \ mklabel mac \ mkpart primary hfs+ 1MiB -1088MiB \ mkpart primary hfs+ -1088MiB -64MiB \ mkpart primary fat32 -64MiB 100% - Install required HFS+ tools if not present:
- Debian/Ubuntu:
sudo apt install hfsprogs - Arch:
sudo pacman -S hfsprogs - Fedora:
sudo dnf install hfsplus-tools
- Debian/Ubuntu:
- Format the partitions:
# Replace sdX with the correct device for the SD card sudo mkfs.hfsplus -v "Macintosh HD" /dev/sdX2 sudo mkfs.hfsplus -v "Install" /dev/sdX3 sudo mkfs.vfat -F 32 -n "Support" /dev/sdX4
# Replace sdX with the correct device for the SD card sudo parted /dev/sdX --script \ mklabel mac \ mkpart primary hfs+ 1MiB -1088MiB \ mkpart primary hfs+ -1088MiB -64MiB \ mkpart primary fat32 -64MiB 100% # then # Replace sdX with the correct device for the SD card sudo mkfs.hfsplus -v "Macintosh HD" /dev/sdX2 sudo mkfs.hfsplus -v "Install" /dev/sdX3 sudo mkfs.vfat -F 32 -n "Support" /dev/sdX4- Identify the device:
Boot and Install Mac OS X on Wii
main1. Running the wiiMac Bootloader
- Insert the BootMii SD card and enter the BootMii menu.
- Select the SD card icon.
- Navigate to the
wiiMacfolder and openwiiMac.elf.
2. Booting the Installer
- Remove the BootMii SD card.
- Insert the Mac OS X System SD card.
- Use the Wii Power button to select the Mac OS X installer partition.
- Press the Reset button to boot the installer.
- Use a USB mouse and keyboard to install Mac OS X to the partition named
Macintosh HD.
3. Booting the Installed System
- Remove the Mac OS X System SD card.
- Insert the BootMii SD card and load
wiiMac.elfvia the BootMii menu. - Remove the BootMii SD card.
- Insert the Mac OS X System SD card.
- Use the Reset button to select the
Macintosh HDpartition. - Crucial: Use the Eject button to override boot arguments to include
Force800x600=1(required for the initial setup process). - Press the Reset button to boot.
Optimize Mac OS X on Wii
mainAfter the initial setup, perform these steps to improve performance and visual quality:
- Resolution: Open
System Preferences > Displayand reduce the resolution to 640x480. - Dock: Open
System Preferences > Dockand reduce the size or enable Dock hiding to save screen real estate. - Swap File: Reduce the swap file size to improve responsiveness. Edit
/etc/rcand change thedynamic_pagerline:- From:
dynamic_pager -H 40000000 -L 160000000 -S 80000000 -F ${swapdir}/swapfile - To:
dynamic_pager -H 40000000 -L 160000000 -S 8000000 -F ${swapdir}/swapfile - Reboot for changes to take effect.
- From:
dynamic_pager -H 40000000 -L 160000000 -S 8000000 -F ${swapdir}/swapfile- Resolution: Open
Prepare the Support Partition
mainThe FAT32
Supportpartition requires a patched kernel and drivers to function on the Wii.- Create a folder named
wiiMacat the root of theSupportpartition. - Copy the appropriate
mach_kerneland driver.kextfiles into that folder. - Verify the structure:
/ └── wiiMac ├── mach_kernel ├── IOUSBFamily.kext └── NintendoWii*.kext (all other drivers)Note for WSL Users: Since the WSL2 kernel often lacks
vfatsupport, usemtoolsto copy files:sudo mmd -i /dev/sdXA ::/wiiMac sudo mcopy -s -i /dev/sdXA /mnt/c/path/to/files/* ::/wiiMac/ └── wiiMac ├── mach_kernel ├── IOUSBFamily.kext └── NintendoWii*.kext- Create a folder named
Partition the Mac OS X System SD Card (macOS Host)
mainOn a macOS host, use
diskutilto partition the target SD card. Warning: This will erase the SD card.- Identify the device identifier:
diskutil list - Partition the card using the APM scheme with three partitions:
Macintosh HD(HFS+),Install(1GB HFS+), andSupport(64MB FAT32).# Replace diskX with the correct device for the SD card diskutil partitionDisk diskX APM \ HFS+ "Macintosh HD" R \ HFS+ "Install" 1G\ FAT32 "Support" 64M
# Replace diskX with the correct device for the SD card diskutil partitionDisk diskX APM \ HFS+ "Macintosh HD" R \ HFS+ "Install" 1G\ FAT32 "Support" 64M- Identify the device identifier:
Use hardware buttons to control wiiMac boot behavior
mainWhile running in the wiiMac bootloader, you can use the following hardware inputs (GPIO) to change boot behavior:
- Power Button (
GPIO_POWER): Cycles through available bootable partitions. If no partition is selected, it increments theselected_boot_partition_indexto the next bootable partition found on the SD card. - Reset Button (
GPIO_RESET): Triggers an immediate attempt to load the kernel from the currently selected partition. - Eject Button (
GPIO_EJECT): Cycles through the predefined sets of boot arguments (overriding the default command line). There are up to 5 different boot argument sets available.
- Power Button (