passthejoe — the blog

Debian 11 on a Mid-2011 Apple iMac 27-inch

An Apple Mid-2011 iMac 27-inch “Core i5” 2.7 fell into my lap some time around 2017, and even though it had a few years of MacOS support ahead, it was slow — never mind the 20 GB of RAM I added when supporting it for an Adobe Creative Cloud workflow.

Booting took forever. Updates took forever. Saving an inDesign document took … you guessed it. A lot of spinning beach balls. (You know when I get spinning beach balls in Linux? NEVER.)

Once the iMac was replaced with a newer model, the old one came to me. I spent a bit of time trying to re-create my Linux-based workflow in MacOS.

I added things like gVim and Homebrew. I’m sure Homebrew is great, but if you’ve ever used a real Linux package manager, it’s a no.

I am not a Mac person. The Finder? You have got to be kidding me. Maybe it’s OK. But it’s not for me.

The OS is now unsupported by Apple — which happened for this iMac after a reasonable (in my opinion) nine years. Still, this computer is pretty much mint. It looks like it did when it came out of the box. Why junk it?

Even before Apple ended OS support, I suspected this Intel-based Mac might be better as a Linux workstation.

And it is.

I went for my go-to distribution — Debian Stable, which at the time was Buster (aka Debian 10) and is now, via upgrade, Bullseye (Debian 11).

Things might have been easier with Ubuntu — and I do recommend Linux distros that make it easier to get the Radeon graphics card working out of the box. I didn’t want something as dynamic as the upgrade-every-six-months Fedora, which I am running on my newer laptop.

When I want serious, boring stability, I go for Debian. I’ve probably done more Debian installs than I have of any other Linux or BSD, and I’ve spent a whole lot of time using Debian. It’s like comfortable old slippers.

But if you like Ubuntu, it’s definitely a great way to go, or to get started with Linux on the 2011 iMac.

Still, due to the hardware’s age — 11 years at this writing — it pays to go with a distro that doesn’t demand the use of (presumably) heavy Snap packages. I still should try it with the latest Ubuntu LTS and see how I feel about Snaps. But since I’m a Debian user, I haven’t gone that route. I stuck with Debian.

That being said, I always recommend trying all of your favorites on a new (to you) computer. This iMac has a DVD drive, but it also boots off USB, and that’s how I did my live testing. I’ve run Ubuntu, Fedora and AlmaLinux from live images.

When I did the original install, which I’m still running, I did a dual-boot using rEFIit with the original MacOS. But once my laziness wears off (and I sure hope it does), I plan to devote the entire 1 TB drive to Linux.

It’s just not worth dual-booting, especially with an unsupported MacOS that I almost never used, even when it was still getting security patches. Why would I? ANY Linux beats MacOS for speed.

And then there’s software availability, the package management, the desktop environments I already know.

Truthfully, I am pretty sour on dual-booting with Windows, MacOS, or even other Linux distros. It’s a complicated and brittle process. I like to run one OS at a time and give it the whole drive.

Sure, this iMac is old, but it runs GNOME 3 very well. There’s no need to use Xfce or other “lighter” desktop environments unless you prefer them. I’m a big GNOME 3 fan, and the fact that the DE seems to run great on even my oldest hardware keeps me using it.

I do recommend getting a Debian Live image and booting it up along with Ubuntu, Fedora and whatever else you like that has a live environment.

But when I do a Debian install, I generally use the non-free firmware amd64 netinstall image, though as I remember it I still had to add some firmware after the installation. If I do a reinstall and it turns out I don’t need to sneak firmware onto the box, this tutorial will get a lot shorter. I hope that happens.

Debian doesn’t make it easy to find the right image. Here’s what I would use for 11.3.

So let’s get to it. First of all, remember:

I already had the 20 GB of RAM from the iMac’s MacOS days, but it still had — and has — its original 1 TB drive.

It would be great to replace that spinning hard drive with an SSD, but the procedure for replacing the disk drive is a bit too difficult for me. It involves suction cups for lifting out the screen, detaching and reattaching some kind of thermal sensor connected to the drive, and other things I’d rather not deal with. WHO WANTS TO DEAL WITH SUCTION CUPS?

The iMac is a little slower with a traditional hard drive but still very usable. Mostly it just boots slower. Once you’re up and running in Debian, I barely notice the drive slowing me down.

And another bonus of not doing a dual-boot is that you can encrypt the entire drive and add a good measure of security. If the system powers down, nobody can get to your data without the passphrase.

One caveat: The 2011 iMac runs “hot.” Literally. I mean the top back side of the computer throws off a lot of heat. It is the same whether you run MacOS or Linux. It’s designed this way. The 2017 iMac that replaced this runs super cool, has way more screen resolution and also cost $3,000+. Again, it’s hard to beat $0 for a sweet Linux workstation with a giant screen and decent (2560x1440) resolution.

When I got the 2011 iMac, the original mouse was long dead. The stock Bluetooth Mac keyboard was worn but 100% working. It was a bit of a nightmare to pair it in Linux, but I managed to do it. However, I soon replaced it with a $25 Logitech wireless keyboard-and-mouse combo. In Linux you need a USB keyboard (wired or wireless) around anyway because it takes the Bluetooth keyboard longer to be recognized by Linux during the boot process than in MacOS.

Also, the original Mac keyboard has a backspace key but no delete. What the hell? I spent $25 to end the frustration. I still have the original keyboard, but I pulled the batteries and put it in a box.

The tutorial I used to pair the original Mac Bluetooth keyboard in Linux has disappeared, but this post looks pretty much the same. Still, for Linux use I wouldn’t bother.

I almost forgot to mention that suspend and resume work perfectly, and the screen brightness adjusts automatically depending on room light.

Before you install, here are some things you should know and prepare for. Either print out this post, or look at it on another device.

My iMac has the following firmware packages installed:

firmware-amd-graphics/stable,now 20210315-3 all [installed]
firmware-linux-free/stable,now 20200122-1 all [installed,automatic]
firmware-linux-nonfree/stable,now 20210315-3 all [installed]
firmware-misc-nonfree/stable,now 20210315-3 all [installed,automatic]

The Debian installer should take care of firmware-linux-free.

I recommend downloading firmware-amd-graphics, firmware-linux-nonfree and firmware-misc-nonfree as .deb packages and putting them on a FAT-formatted USB drive that can be mounted from the command line so you can install them from there if you don’t have the network working.

Yep you need some command-line experience to make this happen — unless the non-free firmware Debian ISO manages to work the way it’s supposed to. More on that after my next install.

It’s likely the system will boot without a working GUI, and installing this firmware should make it work.

Once you’ve done your Debian install and gotten the GUI to work by installing the three nonfree firmware packages from your USB drive, use your superuser (sudo or su) powers and add this line to /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet radeon.dpm=0 acpi_backlight=vendor"

Here is an example portion of /etc/default/grub, so you see what I’m talking about. Just add the line above like so:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet radeon.dpm=0 acpi_backlight=vendor"
GRUB_CMDLINE_LINUX=""

Then reboot, and it should work like butter.

That’s pretty much all there is to it. I’ve had the iMac running Debian long enough to have done one in-place upgrade, which went perfectly. I use a few Flatpaks here and there for things like Spotify and Zoom, but it’s mostly standard .deb packages.

I don’t do a lot of development on the Debian iMac — yet. I certainly could. I love the big screen. It’s not as nice as the screen on a 2022 iMac, but you can’t beat the price ($0) and the ease at which Linux goes on one of these older Macs.

What I do use the Debian iMac for are tasks that include Web production on the newspaper sites I work on (writing, editing, heavy WordPress posting, photo editing), playing audio — the speakers are awesome — and recording it via Audacity. I am using the real-time kernel, and I rely on Carla Schroder’s excellent The Book of Audacity for my recording know-how.

For reference, here is the output of lspci on my mid-2011 iMac 27-inch:

00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:02.0 Display controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Universal Host Controller #5 (rev 05)
00:1a.7 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b5)
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 (rev 05)
00:1d.7 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation Z68 Express Chipset LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Whistler [Radeon HD 6730M/6770M/7690M XT]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series]
02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM57765 Gigabit Ethernet PCIe (rev 10)
03:00.0 Network controller: Qualcomm Atheros AR93xx Wireless Network Adapter (rev 01)
04:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 08)
05:00.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
06:00.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
06:03.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
06:04.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
06:05.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
06:06.0 PCI bridge: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
07:00.0 System peripheral: Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]

Discuss this post on Twitter and Mastodon.

#Debian #Mac #Macos #Linux