Google’s Fuchsia OS on the Pixelbook: It works! It actually works!
Google currently has two OSes on the market: Android and Chrome OS. The company is never one to leave a successful product alone in the marketplace, though, so it's also developing a third operating system called "Fuchsia." When we last checked in on the experimental OS in May 2017, calling it an "OS" was a bit of a stretch. We only got the system UI up and running on top of Android, where it then functioned like an app. The UI offered a neat multi-window system, but mostly it was just a bunch of placeholder graphics. Nothing worked.
It has been hard to check in on Fuchsia since. The Fuchsia system UI, which was written with a cross-platform SDK called "Flutter," quickly shut down the Android (and iOS) compatible builds. Fuchsia has a Vulkan-based graphics stack, and no emulator supports the new-ish graphics API. The only way to get Fuchsia up and running again was with actual hardware, and the only supported devices were Intel NUC PCs from 2015 and the Acer Switch Alpha 12 laptop.
So after the recent news that the Fuchsia team picked the Chrome OS-powered Google Pixelbook as a supported device, we jumped at the chance to get it up and running. And after a little elbow grease, it actually booted. Now, we're not just running the system UI on top of Android like last time, we're running Fuchsia directly on a piece of hardware!
This means it's finally time for a deep dive on what Fuchsia looks like in early 2018. Our usual in-development OS testing caveats apply: Fuchsia only started development in 2016 and probably has several years of development time ahead of it. Everything can—and probably will—change between now and release (if a release ever even happens). Google won't even officially acknowledge the OS exists—Fuchsia is a bunch of code sitting on fuchsia.googlesource.com.
Installation: Streamed over a network!
Getting Fuchsia up and running on a piece of hardware is a strange and interesting project. You'd expect to download and compile the OS, put it on a USB stick, and either live-boot directly from the USB stick or run some kind of Fuchsia OS installer. Instead, you load a bootable USB stick up with "Zedboot"—a basic bootloader that will get you connected to a network. On the host machine, you compile Fuchsia and send the system files over the network to a machine currently running Zedboot. That's all done in a process the Fuchsia docs call "paving." Once the 1.1GB worth of files is downloaded, the system boots up, and eventually you'll be looking at a lock screen.
The Pixelbook doesn't feel like the best device for this, since it doesn't have the wired network port needed for Zedboot. You'll somehow need to go from USB-C to Ethernet, and the Pixelbook under Zedboot is picky about what Ethernet adapters it wants to support. The one I had lying around didn't work, but after picking up a native USB-C ethernet adapter, things started working. You'll also need your USB stick in the other port to boot Zedboot from, which means you've filled both USB-C ports. All of a sudden, there's no room for power. Luckily, the USB stick isn't needed once the OS starts up; a hub would work, too.
It's not just me; this process is a bit weird, right? The network-based installation does make it easy to stream a fresh version of Fuchsia to the device, but it seems like a lot of work for purely development purposes. Plus, if you want to repeatedly put software on a piece of hardware, the transmission medium of choice is usually USB. This is pure speculation, but does Fuchsia have a network-based install process because eventually the data won't come from a local source? Maybe someday, the goal will be to replace the "host" computer with Google's cloud. Maybe, if Fuchsia ever becomes a real product, a device could boot into Zedboot, connect to a network, and download the latest version of Fuchsia directly from Google.
Once all the downloading is done, Fuchsia will boot up, and you'll be presented with the lockscreen. Let's stop for a minute and just admire what a big deal this is. Remember, this is Fuchsia running on actual hardware without any Linux code under the hood. Right now, Google's built-from-scratch kernel and operating system will actually boot on the Pixelbook, and some things even work. The touchscreen, trackpad, and keyboard work and so do the USB ports. You can even plug in a mouse and get a second mouse cursor. The battery readout is accurate, and plugging in the Pixelbook produces the expected lightning bolt. So much works that it's kind of amazing—the only hardware feature that didn't work was Wi-Fi, but the USB Ethernet adapter worked just fine for Internet.
About halfway through writing this article I learned that, by default, Fuchsia compiles in debug mode. This puts the "slow mode" banner on the top-right corner of the UI, and, well, it makes everything really slow. Adding a "–release" to the end of the build command disables all the debug stuff, making the OS run much faster and disabling the banner. I still wouldn't say Fuchsia works particularly well right now on the Pixelbook, though. The Pixelbook is always hot when you're running Fuchsia. Even just sitting on the home screen, it's a fireball. Things crash a lot, a lot of things don't work. There is still lots of work to do.
Your first Fuchsia impressions will come via the lock screen. The time is front and center, but there are a few controls here, too. In the bottom right is a plus button that will bring up options for Wi-Fi, a login page, and the Guest login. The Wi-Fi window told me "No WLAN interface found" in debug mode and was totally blank in release mode, so it seems the Pixelbook's Wi-Fi just doesn't work currently. The "Login" button will actually bring up a Google login page and will take your email, password, and 2FA challenge before displaying a blank screen and freezing. The "Guest" button is a guest login and is an easy way to start up the OS without logging in.
There are a few features that seem specifically focused on development. The blue Fuchsia logo in the top-left corner will switch between what clearly seems to be "laptop" and "phone" modes. The most official description of Fuchsia we've ever gotten from Google is from the Fuchsia kernel documentation, which says it "targets modern phones and modern personal computers with fast processors." With that in mind, the phone and laptop modes make sense. Remember, this isn't an emulator, though, so the phone mode is a bit odd. The Pixelbook is pulling double-duty as both a native laptop device and a stand-in for a phone device.
The lock screen also has a few hardware button commands for development. Caps Lock (which is technically called the "launcher" button on the Pixelbook keyboard) will switch between the GUI and a command line interface. In the command line mode, volume down will switch between multiple command line instances, one of which is a debug readout. In the GUI, volume down will make the display render upside-down, which is nice for the Pixelbook's tent mode.
Listing image by Ron Amadeo