Elementary OS is an Ubuntu-based Linux operating system that is clean, simple, and lightweight. Lightweight it particularly useful for revitalizing older hardware. I have a 2010 MacBook Pro that is still in good shape, but it cannot run the current MacOS and has zero trade-in value at the Apple Store. This post goes step-by-step through the process of installing elementaryOS to revitalize the machine.
Elementary OS runs pretty well on this machine, with two big caveats. First, wifi does not work out of the box. It is not too hard to get it to work, but you will need either an ethernet cable or a way to run internet through bluetooth to the laptop to get the wifi set up properly. And even once it works, I was only ever able to get speeds in the 10-20 Mbps range tops, even though my service has capacity much faster speeds. Second, the Nvidia GeForce 320M graphics card in this device is not well-supported in Linux. With the default open-source nouveau drivers, expect a less than flawless experience, and wake from suspend to not be supported. (If graphical performance is important, you will have an easier time getting the proprietary Nvidia drivers configured on Ubuntu 20.04 LTS, as discussed in more detail below.)
In this guide, we will do a clean installation of elementary OS that will replace MacOS on the machine. That all said, let us dive into the installation.
Step 1: Preliminaries
Make sure you have a 64 bit computer. Basically, any Apple computer older than 2008 is likely 32 bit and thus not compatible with eOS 6. The specific model I used for this post is:
MacBook Pro (13-inch, Mid 2010)
Model Identifier: MacBookPro7,1
Over the years, I did upgrade the RAM a bit and changed the hard drive to a SSD. This guide should be helpful for other Apple computers from around the same time, but because components change across models, it will not be exactly the same steps.
Step 2: Create a bootable install drive
On MacOS, you can use a program called Etcher from Balena to create the bootable drive. Download Etcher, and then download the eOS 6 ISO file to your computer, and insert a USB drive. The ISO file for eOS 6 is about 2.6GB, so make sure you have a USB drive with at least that much space.
Open Etcher, select the ISO file, select the correct USB drive, and click “Flash!”
After flashing the drive is finished, you will see an error message that says “The disk you inserted was not readable by this computer.” It is safe to ignore this message.
Step 3: Install elementary OS
Insert the bootable install drive, and as you power on the machine, hold down the Option key. A screen loads with two USB icons that say “EFI Boot”. I selected the second icon, and hit enter (but it shouldn’t matter which EFI Boot icon you select).
A screen will then load that may display a few lines of error messages that are safe to ignore, such as “error: unexpectedly disconnected from boot status daemon” and “/init: line 49: can’t open devsdb: No medium found.” And then it will say “Checking integrity, this may take a while…” After some time, the elementary installer screen should load. Make some language in input selections, and then Select “Erase Disk and Install.”
At this point, elementary OS will install on the machine. It takes some time, and once it is finished, you will again be asked to make some customization selections and set up a user account. At the end, you can select “Finish Setup” and you will be able to log in to elementary OS 6!
Log in, and you have a basic functioning installation of elementary. But, there will likely be two main functions missing out of the box: there will be no wifi options available, and the open-source nouveau drivers for the graphics card will not allow the laptop to wake properly after sleeping. We tackle these issues in the next step of troubleshooting.
Step 4: Troubleshooting
Getting the wifi settings to work
In short, the proper drivers for the Broadcom wireless card are not available out of the box. And the short solution is to either plug in an ethernet cable (or otherwise get access to the internet through a bluetooth adapter), and run the following commands in the Terminal. These steps follow a response on the elementary Stack Exchange.
First, remove the bcmwl driver and reboot, if you installed it:
sudo apt-get remove --purge bcmwl-kernel-source sudo reboot
Second, install the new broadcom firmware:
sudo apt-get install firmware-b43-installer
Finally, reload the package:
sudo modprobe -r b43 sudo modprobe b43
To view the wifi card information on your machine, you can enter the command
lspci in the Terminal. For this specific model, this command shows that the network controller is BCM4322 802.11a/b/g/n. This fix might work for other similar Broadcom chip models, but not guaranteed. And there is a bug report filed with Ubuntu for this issue.
Even though this fix does allow the wireless to work, performance was still not optimal. Through wifi, I was only able to achieve 17 mbps download and 11 mbps upload, which is much slower than the available speed on my network.
Getting Nvidia drivers to work
This model of MacBook Pro has a Nvidia GeForce 320M graphics card. You can check the model of the card on your machine using the
lspci command from before. This graphics card has been notoriously difficult to support on Linux.
By default, the eOS installation will run the Nvidia graphics card with open source Nouveau drivers. These drivers allow the machine to run, but performance is not optimal, and most importantly wake from suspend will not work. According to the Ubuntu Forums, it is expected that wake from suspend will not work with the nouveau drivers and this particular graphics card. One perfectly fine option, is to stick with the nouveau drivers and just disable suspend in the settings, and never plan to suspend the machine when using it. In this configuration, the laptop works great for internet browsing, watching YouTube videos, and basic computer usage.
Alternatively, to get wake from suspend to work properly, you would use the proprietary Ndivia 340 driver. However, the Nvidia 340 driver is end of life and no longer supported by Nvidia, and if you try to install it through the App Center, the download will fail. Moreover, attempting to install the driver will leave the drivers partially installed, and you will be unable to log in from the login screen, and instead will be stuck in an endless login loop.
If you install the nvidia-340 driver and do get stuck in an endless login loop, use these steps to get out: (1) from the login screen, you can access the Terminal interface by pressing ctrl+fn+alt+F1, (2) purge the nvidia driver by entering:
sudo apt-get remove --purge '^nvidia-.*'(3) reboot, and now the nouveau drivers will be used and you will be able to log in.
To check which graphics driver is in use at any time, open the Terminal and type
lspci -nnk. The output will include a line under the VGA compatible controller that says either “Kernel driver in use: nouveau” or “nvidia”.
For those willing to put in extra effort and experiment with unsupported drivers, there are possible workarounds. The issue is that the required Nvidia 340.108 driver is end of life, and according to Ubuntu Launchpad is no longer available on newer Linux kernels after 5.10. The thing is, Nvidia 340.108 is available on Ubuntu 20.04 LTS, and while elementary 6 is based on Ubuntu 20.04 LTS, elementary makes use of LTS Hardware Enablement (or HWE), which providers a newer kernel underneath Ubuntu LTS. The HWE means that elementary OS has a newer kernel and support for newer hardware, such as for the Framework laptop, but this means that the Nvidia 340 driver is not officially available on eOS 6.
My recommendation at this point, is that for people who want to run Linux on this model of MBP, the best bet is probably to stick with the nouveau drivers with elementary. If graphical performance is important, then the other good option is to run Ubuntu 20.04 LTS on this machine. There are useful forums for getting this Nvidia 340 driver to work on the MBP 7,1 in Ubuntu 20.04 available here and here. And there is a most helpful comment on the elementary OS Stack Exchange that covers some alternative workarounds as well.
Hopefully this guide was useful to revitalize a 2010 MacBook Pro with elementary OS 6. For a guide on installing software as a next step, see our guide here.