Polishing the Chrome: Installing Google’s OS on a Rusty, Technically Incompatible MacBook Pro

I’m not exactly a fan of Google having access to all our information ever, nor do I feel great about how, through its substantial dominance of the Internet, Google gets to quasi-unilaterally dictate all manner of policies regarding web standards, privacy, and security.

But even I have to give Alphabet, Inc. credit where credit is due: if you’re a user with pretty basic needs looking for a modern, easy-to-use, easy-to-maintain, and stable computing platform, there is nothing quite like Google’s ChromeOS.

When ChromeOS was first announced, the idea seemed pretty absurd. Could a platform originally designed to run just a single application—the Chrome web browser—actually be of any use? Well, over a decade later, with Chromebooks continuing to grace the shelves of big box retailers and increasingly being adopted by school systems and businesses looking for low-cost yet reliable machines, the answer is clear.

The Problem

ChromeOS has evolved over the years and can technically do more these days than just run Chrome. The latest Chromebooks support software built for Linux and Android, and enterprise users can even run Windows applications by way of virtualization. But ChromeOS’s bread and butter is the way it gives users access to all the powers and possibilities of modern web apps without all the complicated layers of configuration, software updates, and other UX distractions that might otherwise get in the way.

For all these reasons, when the computing needs of an older relative of ours recently outgrew an aging Android tablet, my fiancée and I felt pretty confident that a Chromebook would get the job done while minimizing our need to assist with long-term tech support.

There was just one catch: even though ChromeOS is fairly intuitive, it would be reasonable to assume that a brand new user might need at least a little hand holding at first. Unfortunately, while we both consider ourselves adept computer users, neither of us has had all that much experience working with Chromebooks.

The Objective

Providing support – especially over the phone – when you have no idea what the environment actually looks like is definitely no fun.

To make this work, it would be a lot easier to have a Chromebook of our own to experiment with and follow along on—if only that wouldn’t require buying a second new computer. Frankly, we already have too many computers lying around, so this whole situation would be much more palatable if we could just install ChromeOS on a machine we already own.

Because ChromeOS is actually based on an open source project called ChromiumOS, it has been theoretically possible to create a makeshift Chromebook for almost as long as real Chromebooks have been around.

Google, historically, has never made ready-to-go ChromiumOS images directly available to the public, but the source code has always been freely available. With enough skill and determination, you could compile that code yourself into working executables, add in any missing device drivers, and then figure out how to get it all onto a compatible device. This process is not exactly straightforward, but luckily, there have always been a handful of folks out there in cyberspace, including someone who goes by Arnold the Bat, willing to take on this challenge for us mere mortals.

I have successfully followed Arnold’s instructions before, so that was definitely a possible route to take here. One downside, however, is that this process has not always gone smoothly when I’ve tried it. More crucially, ChromiumOS is not an exact clone of ChromeOS; Google adds some of its own proprietary features on top of the open source core. While there are “ways” of adding back some of these missing features, my preference would be to avoid that can of worms and start with something much more closely resembling the real thing.

The Solution

Enter ChromeOS Flex. Announced in 2022, this product marked the first time that Google itself, rather than a third party, would provide a way to install not just ChromiumOS but the full-fledged (well, nearly full-fledged) ChromeOS on user’s own hardware. (Some features, such as Android app support, are still not included.)

I successfully installed Flex on an old custom-built desktop when it was first released, but this time around, for maximum “flex”-ibility, I wanted to use it on an old laptop I had dug out of my closet: a MacBook Pro “Mid-2010” model (i.e. a MacBookPro6,2 if you’re familiar with Apple’s internal nomenclature).

This is where things get tricky.

The Outcome

Google provides a pretty thorough installation guide, so I’m not going to get into all the particulars here. Suffice it to say, I followed their directions to create a bootable USB stick, plugged it into the computer, and used Apple’s OS picker (accessible by holding down the “Option” key while booting) to boot ChromeOS instead of macOS.

To my momentary delight, the ChromeOS logo appeared, and then…

Nothing. I could move a mouse cursor around the screen, but otherwise, all I could ever see was the logo.

Interestingly, at some point Google’s built-in accessibility tool kicked in and started reading the screen to me—except that the screen it was reading was definitely not there! The screen reader would even tell me about the invisible things I was evidently clicking on and the keypresses that it was evidently detecting.

Something was clearly amiss. Given that everything else seemed to be working, my hypothesis was that this was related to graphics drivers (as the weirdest computer issues so often are, in my experience).

I knew from the get-go that this computer was not on Google’s certified models list. Nevertheless, not one to be easily discouraged when someone tells me a computer can’t do something, I decided to keep digging, despite the post I found on Reddit confirming that support for NVIDIA chipsets like the graphics hardware in this computer was spotty at best.

You are much more likely to find success, the collective wisdom of the internet explained, running ChromeOS Flex on a computer with integrated graphics (i.e. when video hardware is built into a machine’s main processor rather than existing as part of a “discrete” card or chipset).

The thing is, despite that pesky NVIDIA processor my laptop was saddled with, the MacBookPro6,2 just so happens to also have Intel’s integrated graphics technology built in. It’s just that in this particular model, it plays second fiddle in order to enable, among other things, a power-saving mode. But maybe, I thought, I could find some way to force ChromeOS to use the Intel graphics and somehow ignore the NVIDIA chip.

The first thing I tried was to install a third-party boot manager called rEFInd, a powerful albeit esoteric open source project (with a website stuck in the 90s) familiar to people like myself who like to boot alternative operating systems on their Macs. I’ll spare you all the details of the Extensible Firmware Interface and boot procedures. What matters right now is that rEFInd has a feature that can trick a Mac into thinking that it’s running macOS even when it isn’t, thereby getting the firmware to enable certain components, such as the integrated graphics functionality, that it otherwise might not.

Unfortunately, this did not solve the graphics glitch.

It was therefore time for a more drastic measure. I knew from previous experience that there are sometimes ways to forcibly disable the discrete graphics chipset on Apple laptops like mine. This was known to be one of the methods, for instance, by which you could “repair” certain models when the dedicated graphics chipset began to fail.

After some more Googling, I tracked down a thread on Stack Exchange with the trick that I was pretty sure existed: namely, a near-incomprehensible terminal command (`sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00) that sets a variable in the system’s firmware that, in turn, tells the machine not to enable the dedicated graphics on bootup. My theory was that if I could get this to work, then maybe ChromeOS would see (and thus use) the integrated graphics instead.

So I booted the machine into recovery mode to ensure that none of Apple’s system protections could get in the way and ran the command. To my pleasant surprise, it actually worked! The next time I tried to boot off of the ChromeOS USB stick, the user interface finally displayed correctly, allowing me to finish setting things up and even try to get some work done. (I typed out my entire first draft of this blog post in Google Docs running on ChromeOS on my 14-year-old MacBook Pro.)

Wrapping Up

Truth be told, this is not a computer I have all that much interest in actually using. While I still really appreciate its form factor, with a 15” screen and spacious keyboard, the thing is heavy. I also really miss the “retina” display on Apple’s newer laptops. And most concerningly, I forgot just how hot this computer runs; it quite literally burns my legs if I try to use it on my lap for more than a few minutes.

That said, the point was for my partner and I to be able to familiarize ourselves with ChromeOS and have access to a model setup that we could use for helping our relative. And in that way, the project has been a resounding success. It took a little extra effort, but we now have exactly what we needed without having had to spend a penny more!