Skip to content

Instantly share code, notes, and snippets.

@minif
Last active April 11, 2025 03:53
Show Gist options
  • Save minif/cd6c8f1ca8a5f54416dde3850ab2ce09 to your computer and use it in GitHub Desktop.
Save minif/cd6c8f1ca8a5f54416dde3850ab2ce09 to your computer and use it in GitHub Desktop.
Triple Booting my 2006 iMac 5,1 with Mac OS, Windows XP, and Debian 12

Triple Booting my 2006 iMac 5,1 with Mac OS, Windows XP, and Debian 12

This is a semi-blogpost semi-tutorial on performing a triple boot on my 2006 iMac with my three favorite operating systems.

If you would like to skip to the step-by-step, click here.

Background

I received my 2006 iMac, along with a 2006 Mac Pro for free from a family member in the summer of 2023. I didn't really care for polycarbonate intel macs at first but now I've grown a bit of a soft spot for my iMac and since then I have the urge to use it as much as I can.

To be honest, I don't really remember when I first wanted to set up a triple boot. I had played around with different operating systems on it, and at some point in the past year I wanted to try a modern linux distribution on it. My linux distribution of choice is Debian, and I tried installing it on a partition I made. Unfortunately, for reasons I would not know until later, I had no success in getting it to boot. I gave up and just installed a Snow Leopard + Windows XP dualboot for a while until I could figure out a solution later.

As of today, I have finally figured out and finished installing Debian 12.8 on my 2006 iMac, with fully functioning graphics drivers, alongside Mac OS X 10.6.8 Snow Leopard and Windows XP SP3.

The 32-bit EFI: A tale as old as time

All early intel macs have one well known quirk that complicates Linux installations: A 32-bit EFI. When booting off a USB drive, these macs can only detect 32-bit EFI bootloaders, which most linux distributions don't include. Additionally, booting off the disc drive to take advantage of the BIOS emulation has its own set of issues. For most common Linux distributions, the guide by Matt Gradient has steps to resolve the BIOS emulation issues to get the operating system installed.

However, it turns out that the Debian net installer includes a 32-bit EFI bootloader (as of Debian 12), which completely negates this issue. Huge thanks to this video by ctrl-alt-rees that made me aware of this.

Before finding this out, I was experimeting with the debian multi-arch iso that this git repo guide by jmstriegel (we will be revisiting this guide later) mentions. Unfortunately, it was never updated for Debian 12 so I would have either needed to settle with Debian 11 or do a distro upgrade.

Alternatively, a 32-bit distribution would work. But I have a 64-bit CPU so I would rather not use it if possible.

The ATI Radeon X1600 saga

My real issue with installing linux on this iMac was getting the graphics to work. Debian would successfully install, but then when booting it for the first time the screen would not show anything. By adding the nomodeset parameter to grub, it would at least boot. Of course, disabling modesetting means no graphics acceleration, which means the computer is not very fun to use. Therefore, I spent a long time searching the internet to try to solve the issue.

The git repo guide I had previously mentioned solved this issue by doing a BIOS install of Debian. It appears the issue only happens on an EFI boot, and thus a BIOS boot works normally. Unfortunately, a BIOS install either involves formatting the drive as MBR (no MacOS dualbooting, which is a bit of a dealbreaker for me), or figuring out how to do a hybrid MBR. I had considered this route multiple times but I always ended up going back to figuring out how to get EFI booting working.

Upon enough research, I figured the issue had to do with the vbios not being exposed when booting in EFI mode. Basically, the iMac only reveals the vbios for a short period of time when booting up, and when it comes time for linux to look for it in memory it is not there. The graphics drivers need information in the vbios to work, so the screen will be blank. Supposedly, when booting using the debug kernel parameter, the message [drm:radeon_init] *ERROR* No UMS support in radeon module! could be found in dmesg. And through using SSH, I confirmed this was exactly what was happening. As to why it mentions "No UMS support", I am pretty sure it is trying to fall back on user modesetting which isn't really a thing in modern Linux. I could be wrong though.

The way that I tried to resolve this issue at first was by installing refind. Supposedly, refind can "extend" the visibility of the vbios so that linux is able to read it to boot properly. However, this would require booting using an EFI stub. Despite all my best efforts, I could not figure out how to get this working, and my refind boot picker would only ever show GRUB. I would be interested to know if anybody can figure out how to get it to work for old macs such as mine.

The initially daunting option that I tried next was to recompile linux with a change to the driver. And thankfully, with the right guide this did work for me. Debian 12 was able to boot with graphics acceleration. I have to give a big thanks to this guide for helping me get this working. At this point, I wiped my hard drive and set up the triple boot.

Step-by-step on how I dualbooted Snow Leopard, Windows XP, and Debian 12

I highly reccomend ~512gb or more if you want to do this yourself. I used the 250gb hard drive that came with my iMac, and I find 80gb per partition is usable but not ideal. If you have a 160gb model, you may not have enough room for three operating systems.

  1. Do an install of Mac OS X Snow Leopard, and install all updates
  2. Use Boot Camp Assistant to create a Windows Partition
  • You might need to download boot camp drivers. Since I have a Snow Leopard disc, I did not need to
  • Give Windows however much of the drive you want it to have
  • Do not install Windows yet, choose "install later"
  1. Using Disk Utility, split the Mac OS partition into a third "linux" partition.
  2. With the net installer flashed to a USB drive, install Debian onto the iMac.
  • When partitioning, I deleted the third partion I made for linux. Then, I set up a 1GB partition for /boot, an 8GB partition for swap, and the remainder for the root partition.
  • I chose XFCE as my desktop environment
  • Once installed, Debian will not appear in the boot picker.
  1. Now install Windows XP to the computer
  • In case you don't know, hold down the option key to choose the installation CD
  • Make sure to format the bootcamp partition as NTFS, I always have issues keeping FAT or upgrading to NTFS
  • In case you don't remember, Install the bootcamp drivers
  1. (Optional) Add Debian to the boot picker
  • Boot into Mac OS, run mkdir /Volumes/efi and then sudo mount -t msdos /dev/disk0s1 /Volumes/efi to mount the EFI partition
  • Create a Boot folder in the EFI folder and move EFI/debian/grubia32.efi there
  • Rename this file to bootia32.efi
  • You should now see EFI Boot in the boot picker
  1. Make sure all three operating systems are bootable. Mac OS and Windows should be fully working. Debian shouldn't work yet, but Grub should appear.
  2. Follow this guide Basically,
  • When GRUB appears, press E, and add nomodeset on the linux line after ro quiet. Then press F10 to boot
  • Download the linux kernel and save it to your home folder. I chose 6.1.128 as of writing this, mostly because it was the closest to what Debian has. I don't believe the choice should matter that much
  • Extract the kernel with tar xvf linux-[linux version].tar.xz
  • Install depenencies with sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
  • I also found that I needed to install another depencency with sudo apt-get install dwarves
  • Download the modified radeon_bios.c file and place it in `drivers/gpu/drm/radeon/'. Replace the file already there
  • cd into the extracted folder, and run cp -v /boot/config-$(uname -r) .config to copy your current config file
  • run make menuconfig to make any other changes you want. Select Save and then Exit when you are done.
    • I personally disabled CPU mitigations because I heard it increaces performance. However, it is not reccomended for security. You can also do this as a kernel arguement if you prefer
  • Run make to buld the kernel. This takes ~10-12 hours on the computer itself. You can also try moving it to a faster computer if you want to cut this time down
  • Run sudo make modules_install, and then sudo make install to install the kernel
  • Run sudo su to execute the next commands as root
  • Download this script, Copy it as root by going cp [path to script] /usr/share/initramfs-tools/hooks/radeon
  • Run as root chmod +rwx /usr/share/initramfs-tools/hooks/radeon
  • Run as root mkdir -p /lib/firmware/radeon
  • Download the vbios and then put it in the folder you just created by going cp [path to vbios] /lib/firmware/radeon/vbios.bin
    • I used my own vbios I had dumped previously. I won't include a tutorial on doing this yourself, but you can search for it. This also means I can't confirm if the above vbios works or not.
  • (Optional) I found my initramfs was really big, so I edited /etc/initramfs-tools/initramfs.conf and set MODULES=dep. I then ran update-initramfs -u -k [linux version]
  • If you did not do the above step, run update-initramfs -u
  1. Follow the github repo guide from after installing Debian. The important parts are:
  • Since I used XFCE, I didn't need to disable Wayland. But if you are using GNOME, edit /etc/gmd3/daemon.conf to add the line WaylandEnable=false
  • Edit /etc/apt/sources.list and add contrib non-free to the end of the first line with main, such that it is main contrib non-free.
  • Run sudo apt update then sudo apt install firmware-amd-graphics and apt-get install firmware-b43-installer
  • Edit /etc/default/grub and add radeon.dpm=1 radeon.modeset=1 radeon.pcie_gen2=0 to the GRUB_CMDLINE_LINUX_DEFAULT line.
  • Run sudo update-grub (The guide calls it grub-update, which I don't think is correct)
  • (Optional, if you want iSight) Run sudo apt-get install isight-firmware-tools, and choose the iSight graphics when prompted. Since you should have Mac OS dualbooted, replace the /MacOSX/ part of the path with /Media/[user]/Macintosh HD/. In case that doesn't work, you can run
sudo ift-extract -a /media/[user]/Macintosh\ HD/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
  1. Reboot, and check to see if Debian boots without nomodeset. If so, you should now have a working triple boot.

Things to note

From testing, performance is fine under Debian but not perfect. Of course, I am not using an SSD so performance for me is not as good as it can be. When using Firefox, heavier social media sites have a tendancy to feel slow but still usable. Youtube seems to only play back videos at full speed when set to 340p without going into fullscreen. There is likely ways to tweak performance to make this work better. I tried h264ify and found no difference in Youtube Playback.

Chromium on the other hand works a lot better. Heavier social media sites work better than in Firefox. Youtube is also able to play at 720p at full speed. However, lots of graphical issues are present, particularly on Youtube and in Settings. I am looking into if there is any way to fix these glitches.

(Edit) I have now tried a third web browser, Sea Monkey. It is a modern(ish) browser based off of firefox with other built in features like an email client. It has neither of the issues of Firefox and Chromium, with Youtube videos playing back at 720p no problem. Unfortunately it seems to be either too old or slightly broken on some modern websites. I guess its a bit like the saying. Fast, stable, modern. Pick two.

Outside of internet browsing, the computer is nice to use. Things such as file management and Libre Office work really well. I also made sure to try some games. I first attempted to run Minecraft, but the old OpenGL available didn't seem to work. However, I was able to run Half Life, which on the lowest resolution was able to hit 60fps most of the time. It seems that light games that work with old OpenGL drivers run fine.

(Edit) I noticed an odd issue with the webcam where sometimes it isn't recognised. It turns out that you can't restart the computer from MacOS into Linux, or else the webcam will not work. Instead, you have to fully shut down the computer and then boot it into linux.

I hope this helped you get Debian working on your old iMac. Thanks to all the guides I have mentioned for helping me get it to work. Getting the triple boot working was very fun and I hope it helps you get as much use out of my old iMac as possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment