POST
Reviving an old Mac with Linux (part 1 - installing Linux)
I’ve been a Mac user and fan for many years. However, my current work machine is a Windows laptop (to which, reluctantly, I’ve gotten used by now), and my personal machine is a 13" 2015 Macbook Pro which was pretty beefed up at the time (16GB, 500GB SSD), but which has felt slower as macOS has progressed. Officially it can only run up to Monterey (macOS 12), and even then it felt quite slow. Some time ago I installed OpenCore Legacy Patcher so I could use it with newer versions of macOS. Most recently I had updated it to Sequoia (macOS 15), and by this time the machine felt almost unusable. So I decided to bring it back to life by installing Linux on it. In this and following posts I will write about this process, including some tips and problems I’ve encountered along the way.
Let me start by saying I’m extremely happy with the result! My old Mac feels like a new machine again - it’s fast and responsive. It’s also been great to catch up with the Linux desktop universe. The last time I had regularly used a Linux machine as my desktop was back in 2007 or so, when I had Gentoo Linux installed on my laptop at work. I’ve been pleasantly surprised by the evolution of Linux desktop environments since then!
The road hasn’t been a straight line. I started with Ubuntu 25.04, which I thought was the safest way to go given its popularity. I used it with Omakub, which provides a great starting point. However I decided to keep experimenting. I briefly tried Pop!_OS, which is very nice, but eventually landed on elementary OS, which feels highly polished, works great, and reminds me a lot of macOS. It’s also based on Ubuntu, so most packages work. I kept my machine as dual-boot with macOS in case I ever need it, but so far I’ve remained firmly on the Linux side and don’t regret it.
Here are some screenshots to wet your appetite: my current dual-boot OpenCore boot screen and my custom mac-like boot theme for Elementary.
Anyhow, how did we get here?
Step 1: Back up, clean up and repartition macOS
After this, the first step was to free enough space on macOS so I could resize its disk and leave a chunk of disk empty for my Linux partition. I used the excellent DaisyDisk for this, but there are a number of other utilities that can help you identify where the space is going. Fire at will. In my 500GB disk, I managed to reduce my usage to below 300GB on macOS, which allowed me to create a 200GB partition for Linux.
Once you’ve freed up the space, you can resize the macOS partition to leave unused space in the disk. This can be done graphically using Disk Utility or from the command line with diskutil. For example:
diskutil apfs resizeContainer disk0s2 300g
Make sure you are using the right partition, you can view them with diskutil list.
Make sure you can still reboot into macOS and that everything works OK.
If you had disabled the boot picker in OCLP, make sure to reenable it again, it will make it easier to see what’s happening when you dual-boot the machine through OpenCore.
Step 2: Install Linux
Finally! We can install Linux. Download the installer for your chosen distro and store it in a USB stick (make sure you keep it around, it will be useful if the machine cannot boot after installation). I first installed Ubuntu and fine-tuned my OpenCore boot process with it, but you can also try going directly with something else. Let me give you a few general tips:
- 
In most Linux installers, you will need to identify the EFI partition where the boot components will be stored. Ubuntu allows you to use the existing macOS/OpenCore boot partition, which is 200MB in size. Elementary OS however, requires its EFI partition to be at least 1GB in size, and will not let you choose a smaller partition. Fortunately, OpenCore automatically knows how to handle multiple EFI partitions, so you can just create an extra 1GB EFI partition in your free space, use it for Elementary, and leave the rest for the main Linux partition. It looks like this in GParted (
dev/sda1was the preexisting EFI partition,dev/sda3is the one I created for installing Elementary):
     - 
After the Linux installation finishes, try rebooting. In principle, you should see the OpenCore boot screen. However, in my case OpenCore refused to identify the Linux partitions. After a lot of head banging I figured out the solution: The trick was to manually install the latest OpenCore release into the EFI partition, overwriting the existing BOOT and OC directories (make sure you back them up first!). You can do this either from macOS if it boots, or from the Linux USB installer. Then OpenCore automatically detected and correctly booted both Linux and macOS. Once everything works, you should see something like this:
     
This is good! You can select macOS or Linux. Give them a try. You can set your default boot entry by choosing it with the arrow keys and pressing Ctrl-Enter.
In the next post in this series we will look into making the boot screen prettier.
- Related:
 - Fixing wake-from-sleep in Linux on a Mac when using Ethernet
 - Reviving an old Mac with Linux (part 2 - prettifying boot)
 - My blogging setup with Emacs, Org mode, ox-hugo, Hugo, GitLab and Netlify
 - How to easily create and use human-readable IDs in Org mode and Doom Emacs
 - My Doom Emacs configuration, with commentary
 - August 2020 release of "Learning Hammerspoon" is out!
 - How to insert screenshots in Org documents on macOS
 - New release of "Learning Hammerspoon" is out!
 - First release of "Learning Hammerspoon"
 - My Hammerspoon Configuration, With Commentary
 - My Emacs Configuration, With Commentary
 - My Elvish Configuration With Commentary
 - Just Enough Lua to Be Productive in Hammerspoon, Part 2
 - Just Enough Lua to Be Productive in Hammerspoon, Part 1
 - Using Nix's "Single-user Mode" on macOS
 - Fixing the Outlook-to-OmniFocus Script
 - Using Spoons in Hammerspoon
 - Hosting a Ghost Blog in GitHub - the easier way
 - Getting Started With Hammerspoon
 - Fast translation with Google Translator
 - Spotlight: use-package, a declarative configuration tool - Mastering Emacs
 - Moving files between git repositories, preserving history
 - Find all single-note tags in Evernote
 - How to solve truncated docker output in Mac OS X using boot2docker
 - HowTo: Changing the available display formats for Evernote's "Insert Date" command
 - Installing cfengine on Mac OS X
 - Automatically creating tasks from email in Outlook
 - Making cygwin, Windows and emacs understand the same symlinks
 - Storing CFEngine configuration in CVS
 - Installing cfengine on Windows 7 under cygwin