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:
- 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.
- 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.
- 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.
For the record, I got a MacBook Pro with the following specs:
|CPU Type||Intel(R) Core(TM) i7-2760QM|
|Core Count||4 physical, 4 virtual = 8 total|
|Max Turbo Clock||3.5GHz|
|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:
|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.
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:
- It stays connected to the access point, but loses internet capabilities intermittently. This really stinks for long downloads and Skype calls.
- 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:
- The trackpad dies every so often. You can still do multi-finger gestures, but moving the cursor fails.
- You can only change screen brightness in OSX.
- You can’t change trackpad sensitivity.
- In order for things like animations to look smooth, you need to do this.
- 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.
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.
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.
|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:
|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.