Installing Linux Mint 19.1 on a Late-2010 MacBook Air

(Update May 2020: I’ve re-run through this whole process using Linux Mint 19.3 and have updated this blog post with new details. Notably, no need to install pommed, and including the specific voodoo needed for the 2010 MacBook Air from Ask Ubuntu regarding PCI-E bus identifiers).

We have a still perfectly usable Late-2010 MacBook Air, but with macOS 10.14 Mojave dropping support for Macs older than 2012 (it’s possible to extremely-hackily install it on older machines but I’d rather not go down that route), I decided I’d try installing Linux on it. The MacBook Air still works fine, if a bit slow, on macOS 10.13 but I felt like a bit of nerding!


My distribution of choice was Linux Mint, which is Ubuntu-based but less with the constant changes that Canonical keep making. The first hurdle right out of the gate was which “edition” to choose: Cinnamon, MATE, or xfce. There was zero info on the website about which to choose, I started with Cinnamon but that kept crashing when booting from the installation ISO and giving me a message about being in fallback mode. It turns out Cinnamon is the one with all the graphical bells and whistles, and it appears that an eight-year ultralight laptop’s video card isn’t up to snuff, so I ended up on “MATE” edition, which looks pretty much identical but works fine.

My installation method was using Etcher to write the installation ISO to a spare SD card. Installing Linux requires you to partition the SSD using Disk Utility, I added a 2GB partition for the /boot partition, and another 100GB to install Linux itself onto. It doesn’t matter which format you choose as it’ll be reformatted as part of the installation process.

After partitioning, reboot with the SD card in and the Option key held down, and choose the “EFI Boot” option. The installer is quite straightforward, but I chose the custom option when it asked how to format the drive, formatted both the 2GB and 100GB partitions as ext4, with the 2GB one mounted at /boot and the 100GB at /. The other part is to install the bootloader onto that /boot partition, to make it easy to get rid of everything if you want to go back to single-partition macOS and no Linux.


The next hurdle was video card drivers. Mint comes with an open-source video card driver called “Nouveau” which _works_ but isn’t very performant, and there was lots of screen tearing as I’d scroll or move windows around. This being Linux, it was naturally not as simple as just installing the official Nvidia one and being done with, because that resulted in a black screen at boot. 😛 I did a massive amount of searching and eventually stumbled across this answer on AskUbuntu which worked where nothing else did: I followed those instructions and was able to successfully install the official Nvidia drivers without getting a black screen on boot!

(Update May 2020: I honestly don’t remember whether I had to go through Step 1 of Andreas’ instructions, “Install Ubuntu in UEFI mode with the Nvidia drivers”, but check for the existence of the directory /sys/firmware before running the rest of this. That directory is only created if you’ve booted in EFI mode. If it doesn’t exist, follow the link in Step 1).

I’m copying the details here for posterity, in case something happens to that answer, but all credit goes to Andreas there. These details are specifically for the Late 2010 MacBook Air with a GeForce 320M video card, so using this on something else might very well break things.

Create the file /etc/grub.d/01_enable_vga.conf and paste the following contents into it:

cat << EOF
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7

Then make the new file executable and update the grub config files:

$ sudo chmod 755 /etc/grub.d/01_enable_vga.conf
$ sudo update-grub

And then restart. Double-check that the register values have been set to 8 for the bridge device and 7 for the display device:

 $ sudo setpci -s "00:17.0" 3e.b
 $ sudo setpci -s "02:00.0" 04.b

Next, load up the “Driver Manager” control panel and set the machine to use the Nvidia drivers, once it’s finished doing its thing — which took a couple of minutes — restart once more, and you’ll be running with the much-more-performant Nvidia drivers!

At this point I realised that the brightness keys on the keyboard didn’t work. Cue a whole bunch more searching, with fix being to add the following snippet to the bottom of /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass-ubuntu.conf:

Section "Device"
  Identifier     "Device0"
  Driver         "nvidia"
  VendorName     "NVIDIA Corporation"
  BoardName      "GeForce 320M"
  Option         "RegistryDwords" "EnableBrightnessControl=1"

And now I have a fully-functioning Linux installation, with working sleep+wake, audio, wifi, and brightness!

I’m certainly not going to be switching to it full-time, and it feels like a lot more fragile than macOS, but it’s fun to muck around with a new operating system. And with 1Password X, I’m able to use 1Password within Firefox under Linux too!

17 thoughts on “Installing Linux Mint 19.1 on a Late-2010 MacBook Air

  1. Awesome tutorial, but I can’t seem to get the brightness working. I’ve pasted the stuff in /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass-ubuntu.conf, but doesn’t do anything.

    1. Hm, odd… this is definitely a 2010 13″ MacBook Air with the Nvidia 320M graphics card? I just ran through the whole process again from scratch starting with an erase-install of Mint 19.1 and it worked fine, and was even slightly better than my original post because there’s no need for `pommed` anymore, all the media function keys worked first time. 🙂

      1. It’s actually a Macbook Pro “13 mid-2010, but with same videocard.
        I tried disabling the Nvidia logo, that worked fine, so it reads the config just fine.

        The rest of the of your explaination works just fantastic, except the brightness.

        (I also installed macfanctld to make the Macbook a bit cooler).

        1. Ahh, gotcha. Well, glad the parts of it that worked helped at least. 😀 Let me know if you discover a solution, I’m curious now, given it’s the same video card!

          1. I actually hoped you could assist me ^_^
            Maybe the device ID is not 0, but like 1?

            I’m gonna play with it again in about 2 hours.

              1. Alright, thanks anyway <3
                I'm gonna switch back to macOS, because it's much better optimised than anything else.

  2. Just a heads up, you have a typo. The snippet you’ve provided for us to follow for double checking the register values says
    $ sudo setpci -s “04:00.0” 04.b

    when it should say
    $ sudo setpci -s “02:00.0” 04.b

    Thank you for this handy guide — it has been quite literally a life saver for my little macbook air.

    1. Ah crap, good catch! I checked the original post on AskUbuntu and it’s the other way around, the register should be set to `04:00.0` in the original `01_enable_vga.conf` script instead, whereas I typoed it to `02:00.0`. Post has been updated.

      Great to hear it was helpful, cheers! 😀

      1. Awesome! I’ll make sure it’s that way on mine – not that I understand everything that it’s doing haha – your tutorial is definitely easy to follow!

        I just came across one little issue — while I didn’t have to adjust the brightness feature at all (that worked from the get-go), my battery icon has a big question mark in it. Not sure if that’s bc my batter is bad, or because I need to make linux recognize it as something it can use? Doing some searching but would appreciate your input!

        1. Hmm, my immediate guess would be that the battery’s probably totally kaput. I’ve got a couple of VERY old Macs that exhibit the same behaviour. I guess the easiest way to confirm would be to just boot into macOS. 🙂

      2. Oh I just realized that on my mac, it’s originally 02:00.0 anyway! I don’t have a 04:00.0 ID. lol.

        1. You got me doubting myself so I went back and fired up the Air to check, and you were right the first time! It should have been 02:00.0, post updated again. 😅

Leave a Reply

Your email address will not be published. Required fields are marked *