Sam Imberman   About Me

Ubuntu on a Macbook Pro 3,1

My friend gave me an old 17” Macbook Pro 3,1 that he was no longer using, and I jumped on it. Naturally, I had to install Linux on it. I ended up choosing Ubuntu-GNOME 17.04.

Most of the installation went very smoothly. Here is a short discussion of some of the finicky points that didn’t go smoothly.

Setup and hard drive partitioning

First, you will have to add nomodeset to the GRUB boot line in order for the machine to boot at all. After setting up the machine, you will manually have to reconfigure the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/default/grub to add this line.

Secondly, MacBooks like to boot in EFI mode, but working nVidia drivers require this computer to boot in “BIOS Compatibility Mode.” I’ll talk more about the graphics drivers of this machine in a second, but let’s talk about bootstrapping the installation first.

People on the Internet describe a lot of voodoo-type solutions to engage BIOS compatibility mode, many of which I tried. Specifically, the presumed solution of booting from a CD instead of a USB key made no difference when I did it.

The long and short of it is that the computer will boot using BIOS Compatibility Mode if it sees a MBR-type partition table on the hard drive. The next problem then becomes that MacOS requires a GPT-type partition table. So you have two choices:

  1. Format your hard drive using a hybrid GPT-MBR partition table, which is apparently brittle and unreliable and risks exploding if ever accidentally jostled (which – ahem – you will do, because you are apparently the kind of guy who enjoys installing Linux on ten year old hardware for fun);
  2. Figure that your 17” Macbook Pro is no longer THAT usable in MacOS anyway, and that you may as well just wipe it and install a recent Linux.

So I just pulled out the old hard disk to retain a copy of Snow Leopard and replaced it with another disk that I didn’t mind wiping over and over again, if it came to that. If you have an SSD, I highly recommend using it. I didn’t, unfortunately.

Kernel trickery

I am indebted to Akita’s instructions about using Linux on slow computers. As he proposes, I installed tab suspending extensions in my web browsers, and I changed the VM swapping settings as he describes. I think that it helped, but I don’t have numbers to defend that assertion.

I tried out the Liquorix kernel, but I didn’t try very hard, since the nVidia drivers refused to work with it.

About the nVidia drivers

The nVidia proprietary drivers were the single biggest issue that I encountered. And potentially, you don’t even need to use them! The open-source “nouveau” driver worked relatively well. But I did find animations choppier, and I suspect that the “nouveau” driver doesn’t handle power management quite as well.

If you’ve made it to this point, you won’t be surprised to learn that the two keys to getting the nVidia drivers working are –

  1. Boot in BIOS mode
  2. Use a stock (Ubuntu or Debian) kernel

The problem that I encountered when I installed the nVidia proprietary drivers in EFI mode appeared to be that the drivers were not able to download some sort of firmware off of the card in EFI mode, only BIOS mode. However, I have learned that it is possible to point the driver to a custom location for the firmware. Therefore, I suspect that it may be possible to dump the video BIOS in BIOS mode, and then use that dumped video BIOS in EFI mode. I have not tried to do this, however. If you try, contact me and I’ll update this page.

After installing the nVidia drivers, you have to run nvidia-xconfig, which generates an /etc/X11/Xorg.conf file configured to use the driver. Unfortunately, the generated Xorg.conf file also contains generic sections for a mouse and keyboard which override the libinput-based default configuration. Unless you want to configure your mouse and keyboard yourself in Xorg.conf, I recommend that you remove any mouse or keyboard InputDevice sections, as well as the corresponding mouse and keyboard lines under the ServerLayout section.

iSight

This works, but you’ll first need to install the isight-firmware-tools package, and supply a copy of the iSight firmware, which you can extract via a Mac partition, or obtain on the Internet somewhere.

Is It Good Enough?

The $600 000 question! I got this computer for free, and I’m more than happy with it. It does most of what I need to do, and the screen is huge and gorgeous. I’m not going to be doing any high-end gaming on it, but for most of my development and productivity tasks, it works just fine. GNOME is more than snappy enough.

In the future, I’d like to work more on the power management stuff – but I’m a little sceptical. A laptop with a 17” monitor is never going to last more than an hour or two on battery, so it’s a bit of an academic pursuit.

I’d be interested in getting touchpad gestures working; I understand that this works in Wayland, but not in X. I haven’t tried to use Wayland, but I don’t think it will work with legacy nVidia drivers.

I also think that there’s probably a little more that can be done to make the computer a bit more responsive graphics-wise, in terms of dragging windows around and such, but I wouldn’t know where to start.