Ubuntu 11.10 on a MacBook Pro 8,1/2/3

Well, I’ve done it. I bought a brand spankin’ new MacBook Pro 17″ (model 8,3) for the express purpose of installing Linux on it. Yeah, I’m crazy. This is a log of all my troubles and travails over the last two weeks getting this thing up and running.

Of course, I had to come up with rational justifications by which to actually allow myself to in any way support Apple:

  1. The deplorable state of notebook hardware and build quality. Quite honestly, it’s a joke these days trying to find some awesome notebook hardware to run Linux on. There’s System76 and the new Lenovo notebooks, but does anything really even come close in comparison to a MacBook Pro? Stylistically and functionally, this thing is brilliant, bar none.
  2. My work required me to have a super high-powered notebook for travel. At the time of writing, I’m getting ready for a business trip and after a number of bad experiences (read: terrible performance) trying to run TeamViewer, Skype, and Eclipse at once, my $500 Gateway notebook had reached the outer limits of its capabilities. It was time to go extreme.
  3. I didn’t buy it directly from Apple. I bought it through a reseller to try and take away the hit to my conscience. I’m kind of idealist when it comes to the way software should be done and I couldn’t disagree more with Apple’s closed policy.

With all of these excuses rationalizations in hand, I picked this thing up on a trip down to San Diego. I checked with a friend about compatibility, as he had already done much of the footwork of installing Ubuntu on a MacBook Pro. (Ok, he installed Mint but at the end of the day, Mint’s still just a Ubuntu spin.) Armed with a little bit of information and quite a bit of willpower, I set out to accomplish the unthinkable: installing an open source operating system on a machine made for the highest levels of corporate, proprietary evil. It was time to begin.

Hardware

For the record, I got a MacBook Pro with the following specs:

Product Revision 8,3
Screen Size 17″
CPU Type Intel(R) Core(TM) i7-2760QM
Core Count 4 physical, 4 virtual = 8 total
CPU Clock 2.4GHz
Max Turbo Clock 3.5GHz
Memory 4GB PCI-10600
Hard Disk 750GB at 5400RPM

Since I was already going all out, I thought I’d just go all the way with it and manually upgrade the RAM and hard disk:

Memory 8GB PCI-10600
Hard Disk Seagate Momentus XT Hybrid Drive, 750GB at 7200RPM

If you haven’t heard of the new hybrid drives, you should really check them out. Essentially, you have a fast 7200RPM traditional hard disk drive with an integrated solid state drive to make your writes and reads that much faster. They’re not pure SSD fast, but it’s a heck of a lot faster than a 5400RPM drive or a regular 7200RPM hard disk drive. I have definitely noticed a striking performance increase. Again, it’s not an SSD, but it’s closer, without compromising on storage space.

I purchased one with a glossy screen because I like the design; it looks beautiful, but is nearly impossible to work on. The glare is so bad, you might as well be programming in front of a mirror at times. The alternative, buying one with a matte screen, was not really an option for me, as the matte displays come with an ugly greyish border around the screen, rather than a sleek black border:

It looks… terrible. Whoever thought of putting a grey border around the screen, when black looks SO cool? On the flip side of things, look at the glare from the glossy screen! AM I TAKING CRAZY PILLS?!?

My solution was to buy one of these, an anti-glare screen cover to allow me to keep my beautiful looking display design AND have a matte display:

Winning! The cover is kind of a pain to put on, but it works great once you get it just right. (If you have any dust anywhere in your home, it will magically stick to your screen while trying to put it on, forming bubbles: not good.) My wife is a total screen protector application master, and we were able to get it on with just about no spots! There’s a video on how to do it here.

Putting the RAM in wasn’t so hard, though I was a bit paranoid as you can’t “undo” bricking hardware. It went along really nicely and was pretty straightforward.

Installing the hard drive was a little more difficult, but again, not something that was a major deal-breaker. I employed some l337 hacks to copy over the contents of the preexisting drive, then installed it and it worked like a champ.

Software/Configuration

Though I thought that hardware would be the main uncharted territory, configuring the operating systems, bootloader, and software was by far the most time consuming. It took me about a week straight to get this thing up to speed. I installed Linux Mint 12 at least once and Ubuntu 11.10 three times, I think, but in the end, I got it working.

The biggest initial barrier to getting this thing running was the bootloader. Since Apple uses something called EFI as a bootloader instead of BIOS, which is what you’re used to, getting things to install entails getting a better bootloader than the locked-down version that Apple has installed by default, which doesn’t let you do anything “dangerous” like have the ability to install other operating systems :)

What we need is a bootloader which will let us run OSX as well as boot into Linux and Windows if we want to. rEFIt “fits” the bill, as it’s the main way of being able to do this. Unfortunately, due to changes in Mac’s new OSX Lion (10.7.x) operating system, rEFIt isn’t so easy to install anymore. I tried to auto-install it and it didn’t show up at all. I then tried to run one of their scripts to enable it always, and it still didn’t show up. Then I noticed that it wasn’t letting me log into OSX anymore. Great. Also, before I tried any of this, I realized that OSX wouldn’t let me use their “Disk Utility” program to resize my OSX partition. As I’m not really planning on using OSX, this was kind of a bummer.

After I schlepped to the Apple Store and met with one of their “geniuses,” I was informed that by default, OSX Lion comes with another “Recovery Partition” which is hidden from Disk Utility, which was causing my disk resize operations to fail. Again, great. This is what you get when dealing with Apple. I had him reinstall Lion, as it doesn’t come with any install media whatsoever, as well as resize my OSX partition to be 100GB. He resized it to be 10004 bytes, which actually turns out to be around 93GB, but whatever. I almost couldn’t care less about OSX at this point. In any case, major fail in assuming that a kilobyte is 1000 bytes, etc.)

I came home, made backups and tried to make a restore CD, though that didn’t really work, and tried again. I installed rEFIt manually and things worked great. I simply copied over the efi/ folder in the tarball to the root of my OSX partition, then ran the /efi/refit/enable.sh script to enable it (as root of course). I rebooted and, lo and behold, rEFIt!

Awesomeness! Now it was time to install Linux. Following Scott’s guide to installing Linux on a MacBook Pro, I installed Linux Mint 12 (amd64) to a 500GB ext4 partition. I also created a 4GB swap partition, and made sure to install the bootloader not to /dev/sda but instead to my Linux partition, /dev/sda4. Oh, it’s also important to note that in order to do this, I had to both create a CD/DVD of the install disc in addition to a USB startup disk with the same OS. Plug in the USB stick, insert the CD, and then try installing. Some weird bug, but it wasn’t too hard to overlook.

Linux Mint installed without a hitch, though I was noticing some glitchiness in the UI, but I assumed it’d go away when running from the hard disk. It booted up great, and then things started quickly going downhill. Every so often, GNOME Shell or the compositor would flat-out restart. There were other glitchy things about it, but I eventually decided to install Ubuntu 11.10 stock to try and get a better experience.

Ubuntu installed great and Unity, at least for a couple of minutes, was a sight for sore eyes. Things worked a lot better. I compiled the BCM4331 wireless driver and tried to do some major tweaks with the fglrx driver, then figured it’d probably be better to start from scratch. So I installed Ubuntu again.

Having been through the process a couple times before, it got easier with time. Multitouch worked out of the box with Unity, and I could three-finger pinch to maximize/restore windows and three-finger drag to move windows around. Nice!

As noted elsewhere, the main issue with running Linux on 8,X MacBook Pros is wireless driver support. You either have to wrap the Windows driver with ndiswrapper or compile the current open source driver yourself. I opted for the latter, and it wasn’t so hard to compile and install. It more or less works great, but there are two outstanding issues with it:

  1. It stays connected to the access point, but loses internet capabilities intermittently. This really stinks for long downloads and Skype calls.
  2. It hardcore interferes with Bluetooth. High-bandwidth devices like headphones can hardly connect and if you can actually get them to, they won’t be clear and consistent. You also can’t scan for new devices while running the wireless driver. (I lost 4 days of my life to this, more later.)

Apart from those issues, there are really only a few things that don’t work as planned:

  1. The trackpad dies every so often. You can still do multi-finger gestures, but moving the cursor fails.
  2. You can only change screen brightness in OSX.
  3. You can’t change trackpad sensitivity.
  4. In order for things like animations to look smooth, you need to do this.
  5. You desperately need to install a package to control your fans, lest your computer blow up.

Please, before you go any further, download this package and install it if you haven’t already and you’re reading this from a MacBook Pro on Ubuntu. Otherwise, your computer will overheat and blow up. Not a good move, bro.

Compatibility Chart

I figured it’d probably be easier to visualize compatibility with the hardware and software with a nice table describing each item of importance.

Wireless 3/5 Like I said, you have to compile your own driver, which isn’t the easiest thing in the world. It’s not the hardest, either, but yeah. You also run into some pretty weird issues with Bluetooth, as described below, and you’ll probably drop your wireless connection now and again, but it works and it’s getting better as the developers work on it.
Bluetooth 5/5 Bluetooth works great. The only problem involving Bluetooth doesn’t even directly involve Bluetooth: the wireless driver and the interference it causes.
Display 4/5 Display is pretty awesome, but with a few caveats.

  • You can’t change the screen brightness from Ubuntu. It can only be changed from OSX. Bug report on Launchpad. Interestingly enough, you can, however, read values from the light sensor near the camera from a terminal.
  • GPU switching doesn’t work. You’ll be running the more power-hungry ATI card all the time. See a wiki on FGLRX support on Ubuntu 11.10.
  • ATI’s Catalyst Control Center is terrible.

Apart from that, everything works great. External display via DisplayPort/Thunderbolt tested and working, and you can get all screen resolutions supported by the hardware.
Some papercuts: when you lock the workspace or the screensaver activates or the display goes off due to inactivity, the keyboard backlight stays on. I’m not sure if this is a feature or a bug. Also, in order to get your desktop compositor framerate up to speed, you need to do some CompizConfig hacks. Otherwise, things are terribly choppy.
There’s also a really weird bug apart from this that when dragging windows the normal way, often it’ll get really choppy as far as animation is concerned, but if you drag it with multitouch, it’ll be smooth as butter. I have no idea on this one.

Keyboard 4.9/5 Everything basically works, but there’s one papercut: keyboard backlight buttons work, but they can’t be held down to change keyboard backlight, you have to keep hitting it in order to change things, which can get annoying. As noted above, the keyboard backlight stays on even when the display shuts off due to inactivity.
Touchpad 3/5 This one’s kind of touchy. So multitouch works great for the limited actions you can do with it. You can three-finger drag windows, three-finger pinch maximize/restore windows, four-finger tap to open the Unity launcher, four-finger drag to show or hide the Unity bar. Major problems:

  • The touchpad dies every so often and you’re forced to use a mouse. It’ll still do multitouch gestures, but it fails to do single-finger gestures. Reboot to fix it: lame.
  • You’ll often hit the touchpad and move the mouse when typing. This is entirely a software bug: disable the touchpad for a certain amount of time when keys are hit. You can just disable the touchpad altogether and use a mouse, but that’s a really lame workaround.
Suspend/Hibernate 5/5 Works great.
Camera/Microphone 4.5/5 Both basically work great. I have noticed, however, that when using Cheese effects, the camera color gets way out of wack. Think entire video in bright pink.

In the end, it’s basically awesome running Ubuntu on a MacBook Pro. This thing is wicked fast and a pleasure to code on. I’ve been able to encode 1080p HD video at around 60 frames per second. I can run Windows in VirtualBox wicked fast. Hopefully, I’ll be able to find the time to follow up on this post with an installation guide.

32 thoughts on “Ubuntu 11.10 on a MacBook Pro 8,1/2/3

  1. Pingback: TK Kocheran

  2. Nice work, I’ve been feigning my Linux competency while I attempt the same thing on a Macbook Pro 5,5 (Mid 2009), but without any _immediate_ success. Do you know if it’s 100% necessary to have a working Mac OS on the machine to get everything running correctly?

    Thus far, I’ve installed rEFIt from CD,

    I’ve been able to boot from the Linux Mint LMDE DVD and the Mint GUI starts, but when I go ahead and try the install… however once I open gParted to partition the drives everything seems to go to hell and it freezes up.

    Any thoughts?

    • Hmm, I’m not entirely sure. Try stock Ubuntu, as I had problems with Mint. Also, what I had to do initially to get things working was to burn the OS to a CD and to a USB drive and run both at the same time.

      Since you’re running a different MacBook with different hardware, I really don’t know enough to help. You might also want to try using an alternative installer. The alternative installers aren’t GUI based, but they should at the very least tell you what goes wrong if and when it does.

      • Thanks for the tips; I’m pulling down the Ubuntu ISO as I type this, I’ve also been digging into the [pretty comprehensive] Mactel Support page which is definitely a resource worth checking out as well.

        https://help.ubuntu.com/community/MactelSupportTeam/AppleIntelInstallation

        I think I’m going to try booting a gParted Live-CD/USB *first* and see what happens with another ‘go’ at an ext4 partition because there’s a few minutes left before the download finishes.

        Random question; do you know if I’d be better off booting into ‘Recovery Mode’ on the Mac and using the OS X Disk Utility to change the drive from HFS+ to something a else? Perhaps there’s an issue overwriting HFS+ to ext4, or am I being ridiculous?

    • The gParted live CD was essential for me, but only because I had to move an HFS+ partition. Ubuntu wasn’t able to do it for me, but gParted was.

      You really shouldn’t have to wipe your HFS+ partition, but do be careful in resizing things. I’d recommend keeping OSX around if possible. I’m only really ever booting into Ubuntu, but it’s always good to have OSX around in case you want to try something out with hardware.

  3. Thanks for the detailed guide to installing Ubuntu on a MBP. I would keep the OSX partition just because it gives me the ability install essential firmware updates on my machine.

  4. I’ve found that if I boot to Ubuntu on my MBP 8,3 by holding down the ALT key during boot and selecting the drive/partition that Ubuntu is installed on (completely bypassing rEFIt), then the backlight keys work. If, however, I let rEFIt start and boot through there, my experience is the same as yours: no backlight adjustment. Also, I’m glad to hear that I’m not the only one who struggled for days trying to get bluetooth to work after building my own wifi driver.

    • You are AWESOME. Now, my MBP is complete! I’m currently working on a way to apply this fix permanently by instilling GRUB2 EFI support. I’ll probably throw up a post about it once I’ve got it stable and working.

      Thanks so much, this seriously made my day.

      I wonder if there’s a way to tell rEFIt to boot Linux in EFI? It seems that it might just be booting it in a BIOS emulator or something, as historically BIOS has been better supported by Linux. Interesting.

  5. Does the Thunderbolt display work?

    I have MBP 8,3 myself, and want to install Linux. However, when I installed ubuntu 11.10, my new display (Apple Thunderbolt display) didn’t light up at all..

    As much as I like to install linux, I can’t just make my new display useless.

    Have you found the way or does it work on your new installation?

    • I haven’t tested with an actual Thunderbolt display, as I don’t have $1000 lying around to buy a single display :) (I got two Viewsonic 27″ monitors at 1080p for around $800. Talk about a price difference!)

      I have, however, been able to get external displays working just fine with a Thunderbolt to HDMI adapter. I’m assuming that it simply converts HDMI to DisplayPort, instead of using the Thunderbolt protocol. You’ll have to look around to see if support is ready yet. I have heard that Thunderbolt support is implemented on Linux, I just haven’t tried it out myself to see.

      • Thanks for the response..

        I actually researched for a while, but sadly, there is no native support for the thunderbolt in Linux yet.

        In any rate, i don’t mind losing other connectors off of Monitor if I can have the display working.. What adaptor is this that you are referring to?

  6. How does it work?

    The thunderbolt display is already mini display port type..

    How does mini port off of display gets converted to HDMI then back to MBP?

    • I was talking about my ViewSonic HDMI monitors. I convert Mini DisplayPort to HDMI for my monitors. Like I said, I don’t have a $1000 Thunderbolt display to test it on, but if you’d like to send me one, I could test it ;)

  7. Pingback: Luca Postregna

  8. Well, my question was about the compatibility between ubuntu/linux and thunderbolt display (apple).

    i am guessing from your response that this is still not supported…

    Oh well, will have to hold off on the linux migration till then…

    cheers

    • Nick, awesome! Thanks for the helpful comment. I’ll have to look into this.

      What’s really weird is that if I boot from Apple’s boot manager (ie: hold down Alt while booting, then select “Windows” in the menu, which is really Linux), I can change screen brightness just fine. It’s only when I boot through rEFIt that I can’t change screen brightness. I always assumed that it was because rEFIt was forcing Linux to boot in BIOS emulation mode rather than in native EFI. Maybe I was wrong.

  9. I did this with 12.04 on a 13″ 8,1 MBP. I really like Ubuntu; how integrated it is with mail and other e-communications, and how open to customization Linux is. It feels very powerful and open. I love it. There are so many little issues with drivers, however, that keep me going back to OS X for any real productivity. That being said, there are really only two major ones that might keep me an Ubuntu man:
    Any idea how to increase the battery life? It is abysmal compared to what I get with OS X. We’re talkin’ 3 vs. 5+ hours.
    Also, if I rest my thumb on the bottom of the trackpad in OS X, ready to click, that input is ignored and I can mouse around uninhibited. If I do the same in Ubuntu, I can’t mouse around at all. I feel very limited with the trackpad in Ubuntu vs. OS X. Are there any reasonable Mactel trackpad drivers for Ubuntu out there?

    Thanks

    • Nice, glad to hear that you had a nice time with 12.04, haven’t taken the upgrade plunge yet, as I’m waiting for LM13.

      Battery Life

      For battery life, it seems to really boil down to the video card; the main reason I’m constantly hearing my fans whizzing is because we’re constantly on discrete ATI graphics, rather than OSX’s intelligent switching between integrated low-power GPU and the discrete high-power ATI GPU.

      The only solutions at the present time are the following:

      1. Run only the integrated graphics, meaning lower performance but much lower power usage and possibly better compatibility.
      2. Run vgaswitcheroo with the open-source radeon driver and the integrated graphics.

      Both of these options require direct EFI booting, which is a bit hard to set up, but is well-documented here. Though the tutorial is for Debian, the same concepts apply for Ubuntu, of course.

      The benefits of choice 1 are that you’ll have potentially a lot more battery life than even OSX as it is configured by default. The downside, of course, is that your performance will suffer on 3D stuff (like all of the old Jedi Knight games I play on mine ;)).

      The benefits of choice 2 are that you’ll have a better balance between performance and battery life. The downsides are that vgaswitcheroo could be pretty hard to configure properly, it might also be really ugly when it switches, and you’re not going to be getting real, hardcore, unbridled proprietary power. You’ll be much closer, of course, than just using the integrated GPU, but yeah. Open source graphics drivers for non-Intel GPUs have a tendency to suck.

      Touchpad Input

      Luckily for you, all of your problems with the touchpad are configurable via X. I can’t exactly remember how at the moment, but there’s a way to change minimum thumb-width and other nifty stuff like that. Use xinput list-props bcm5974 to see all supported parameters. The kernel module for touchpad support is called bcm5974.

      Good luck, and happy not-OSXing Linuxing!

      • Thanks for the detailed reply!

        Your suggestion about the graphics is reasonable, except that I have only integrated graphics on my 13 incher.
        I guess I’ll check out drivers for the intel HD 3000 unless you have other suggestions.

        I’ll definitely give that thumb-width business a shot when I get a chance.

        Thanks again!

  10. anyway you could publish your entire xorg.conf? it seems I need to write this by hand for current releases

  11. Hi, I just install mint 13, today.
    things not work is keyboard backlight & wireless.
    Step of install is not too hard. just use relfit .
    Thank for mastered information!

    • Hey Zoftdev,

      Could you tell me your model? I have a macbook pro, but when I try to install Mint 13 Cinnamon ( USB, with refit ), my display driver just seems to crash completely. Text output is completely scrambled.

      Could you tell me if you have had the same issue?
      Going to try with Ubuntu 12.04 now

    • Also, my problems arise when IU attempt to load the kernel, I get the “Hold on to your seat belts” message, and then it hangs indefinitely.

    • I’ve had problems in the past with USB boots. I defaulted to inserting both a USB stick in addition to a CD (both with the same OS installed) to get things booting. I don’t know why, but this worked for me.

      Also, I recently upgraded to rEFInd, which is a fork of rEFIt. It’s much more recently updated and, in my opinion, quite a bit nicer and easier to work with. So far, it’s been working great and I even came up with a Faenza theme for it.

      The best, most reliable way I’ve found to boot USB is to install UNetBootin (sudo apt-get install unetbootin) and to burn the ISO to the USB drive that way. Good luck!

      • I will certainly try! It’s quite pathetic the route apple has taken with their hardware. Can’t even boot linux without a million downloads… Regardless, thank you for the help, i’ll get back to you with my results

      • Yeah, if i boot directly to the ubuntu iso, i get a message telling me there’s no install media or something along those lines. If i boot to the boot loader (bootx64.efi) it hangs at the kernel. Short of writing our own code to make this possible (easy seems too much to ask) i guess this is a lost cause, no? I really hoped i could do this without running off a CD, which kind of eliminates the need for a USB drive at all. I’ll try the CD method as well, and see what there is to do as far as extracting the efi profiles. Thanks for the quick reply, and the helpful info!

  12. I’ve done something very similar on my MBP 8,2. I also attempted Mint 13, but I had an overheated issue I couldn’t fix. I changed to Ubuntu 12.04, the only issue is the touchpad. I CANNOT seem to change the sensitivity, which is really annoying. Regardless, its still very smooth. Different from you, though, is that 12.04 doesn’t run hot on my MBP. Sure the fan doesn’t turn on, but it doesn’t even get warm… ever actually, which is pretty sweet. Also, screen brightness works great too with 12.04

    • Immediately stop what you’re doing and install macfanctld. Your laptop will not ever turn on CPU fans because Apple has their own way of doing things which is not recognized by Linux by default. You can destroy your laptop! Please install this package by downloading it here.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>