Reprinted from https://linux.linuxconnector.com, another one of my sites.
One of the computers I have on my desk is an older MacBook Pro. To be specific, it’s a 2011 MacBook Pro with a an Intel i7 processor running at 2 gigahertz (8 cores, 2 threads, 4 processors? I forgot that last thing). This machine has a respectable 16 gigabytes of RAM and last year I bought a new 512 gigabyte SSD and a brand new battery for this laptop with the thoughts that maybe I could sell it.
I wanted to get rid of this thing because Apple had EOL’d (end of lifed) support for this hardware and as far as software updates, mostly only third party software was supported. High Sierra was the last official version of OSX this machine would support and to be frank, that’s ancient. The default Safari browser unfortunately I would not run because it was no longer updated, and for web browsers that’s important to me, and should be to you too. This wasn’t a huge deal because I installed Google Chrome and that would take care of the browser part and maybe give the machine a little more life. So it’s been pretty much a paperweight sitting on my desk closed and used mostly as a coaster for my coffee and other drinks.
Until today that is.
I’ve installed Ubuntu Linux 20.04 Desktop about 20 minutes ago, in fact from the time I started writing this article and EVERYTHING just worked. Prior to the upgrade I did go to YouTube to quickly watch a video specific to this upgrade and fortunately there were no snafu’s and from what I gathered from the video I didn’t have to do anything special to move on to making this an Ubuntu Linux ONLY machine. Additionally I did some Googling, read a few more articles, and I’m feeling confident.
I downloaded a copy of the Ubuntu 20.04 ISO onto this MacBook with the thoughts of running the install off CDROM, however when the burning process finished and I attempt to get that CD/DVD to boot (the ISO is 2.9 gigabytes) and it won’t. It just won’t. It worked and booted on all my Windows machines so I figured it was one of those irritatingly quirky Apple things. I wasn’t distressed by this because I also have thumb drives sitting around and that was going to be my next try, before I gave up. So I installed the 30 gigabyte thumb drive (overkill I know, but hey, I can erase it now), changed to the directory where the ISO was, and ran the following command, after switching to a root user:
- dd if=/path/to/ubuntu.iso of=/dev/disk3 bs =1m (make sure the USB drive is UNMOUNTED)
DO NOT just blindly run that dd command. When I installed my thumb drive/USB key I needed to run this command from the command line to identify the USB stick/thumb drive I did this in OSX’s final moments so it’s a an OSX command:
- diskutil list
so that I could identify just which disk was actually the thumb drive. Unfortunately the output may be different for you depending so I can’t put an exact command you can use, but if you understand the diskutil command and it’s output, you should be able to easily identify which drive is the USB. CAUTION: If you make a mistake at this point, you will KILL your MacBook so be careful, alert, and attentive. The diskutil command won’t kill your MacBook but that dd command might as it’s a low level, the lowest form of copying and is actually working at the hardware level. I realize I probably should have reversed the order of the above however I ALWAYS COMPLETELY read install documents prior to doing that actual install. This is good practice and has saved my ass on more occasions than I care to mention. Please consider doing the same.
— Couple Hours Go By —
Yeah, this Ubuntu 20.04 setup on my Mid 2011 MacBook Pro is perfect. It seems to be working 100% for my needs now, however I have read a few articles and there are a couple things that are iffy, however they will not affect anything I do. You can take a look at the following page:
Please note that that page is old and is talking about Ubuntu version 12.04, however it will give you an excellent little chart showing you what works, and what may not. For me EVERYTHING worked. There’s a few items, notably Firewire, Apple Remote Control, and CardReader which are pegged to be problematic, however not only will I not ever use those particular items, but I will reiterate that that page is from an older 120.04 Ubuntu version and in fact all of those items may work now. Sound, network, WIFI, the screen, all the little Apple lights, and very importantly, the two level function keys that are on MacBook’s all work!
During the install I chose all the defaults, and when it came to configure the disk, I simply chose ERASE EVERYTHING and gave the whole 512 gigabyte SSD to the Ubuntu installer and once the install completed, everything just worked! I’ve been installing all the software I need, mostly network engineering software, programming /build software, plus all the little command line utilities I like to use.
I work with Linux on a daily basis. I have multiple websites (7+) that are either my own or belong to clients for who I do most of the heavy lifting for and all of them have their own associated Linux server. Having this Ubuntu based laptop will be a real boon to me because now I can work on things in their native environment, it’s going to help me become better at some of the Linux utilities I am weak on or need to learn, and most importantly I will be able to properly mirror some of web setups and use this MacBook as a proper development machine. Plus with all the server functionality I have a feeling this computer is going to be my troubleshooting tool extraordinaire. Especially since tcpdump (a low level utility to monitor network packets) is native under Linux and I will be able to use the graphical utility Wireshark which makes working with those networks packet not just a breeze, but dare I say kind of fun.
If the tone you get from reading this article makes you believe I am excited, I am! As mentioned above this is now like a new little toy for me and I am immensely happy I now have a relatively powerful machine for troubleshooting, system administration, network engineering, programming and everything else I plan on doing with this. I’m a command line warrior and this little laptop is now like the Cadillac of sysadmin tools.
Okay that’s everything I wanted to convey. I apologize that it’s not more tutorial in nature, however if you have one of these mid or early 2011 MacBook Pro’s, all you need to do is download the Ubuntu ISO, do some googling on how to create a bootable thumb drive out of it, and then install Ubuntu like you’d install any operating system. You’ll be glad you did.
Had to PULL this post originally because if you do follow these instructions, your AMD video card will quickly heat up to 7000 degrees, Celsius. Was a good thing it was a little dusty cause that’s the first thing I smelled burning. Got a can of air and blew it through the fans and ducts.
I guess maybe I should have waited a day or two. My Bad.
Now, I did tons of research prior to performing this upgrade, and no where did it say my AMD Radeon dGPU will soon near the temperature of a small star. Seems buried someplace in some of the fine print somewhere that was really really difficult to find were vague references to AMD video chips on MacBook 2011’s and how they fail. It didn’t say upgrading to Ubuntu 20.04 would do this but it’s kinda funny this is the identical fix for a 2011 MacBook that has a failed AMD dGPU.
GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.modeset=0 i915.lvds_channel_mode=2 i915.modeset=1" GRUB_CMDLINE_LINUX=""
Modify that one line /etc/default/grub, GRUB_CMDLINE_LINUX_DEFAULT, to look like above.
Now here’s the tricky part:
if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \ ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then echo " gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/" fi echo " outb 0x728 1" | sed "s/^/$submenu_indentation/" echo " outb 0x710 2" | sed "s/^/$submenu_indentation/" echo " outb 0x740 2" | sed "s/^/$submenu_indentation/" echo " outb 0x750 0" | sed "s/^/$submenu_indentation/" echo " insmod gzio" | sed "s/^/$submenu_indentation/"
That second part goes right after that if statement in /etc/grub.d/S10_linux. There’s a bunch of if clauses that look like that, but only ONE that looks exactly like that. DONT MESS UP.
Run that as root at the Linux command line to write changes. Done
We need to completely disable access to that AMD card. Don’t worry. The iGPU will be accelerated but don’t think you’re going to be a champion Fortnite player on this. This is going to be just fine for me as I don’t ever plan on gaming on this. Additionally with the accelerated iGPU and the virtual and kernel video resources under Linux, I don’t imagine it causing an issue. Additionally I lose the ability to plug in an external monitor. This is also not an issue as I don’t ever plan on plugging in an external monitor as it’s function is going to be my on the go and/or troubleshooting rig. A big thanks to variadic.xyz; that was the location that I snagged those changes for /etc/default/grub and /etc/grub.d/S10_linux from. One of the things I noticed immediately is that on a full charge the battery read 3 hours pre change and now on full charge the computer consistently shows just over 5 hours. And I’ve yet to optimize the power features! Keeping my fingers crossed.
This time I heavily used the MacBook before posting and I’ve had no problems since. Heavily used meaning I ran BOINC projects across all the cores and CPU’s for 24 hours with no issues. Psensor (Power sensor) was also installed as it provides quick access to fan speed with complete breakdown of temperatures for cores and system components. Now I’m confident 😉 There are other fixes and workarounds available for the AMD dGPU issue, however for my purposes I don’t think it will be important. Sure, I’d like it to work, but I can live with it as is and it’s really just a minor issue as the iGPU as far as I can tell is flawless and runs Trackmania beautifully ;). I’ll continue to watch threads on this subject as there may be improvements in the future, but I’m completely satisfied with this.