Following along with the development of Google’s Fuchsia OS, it has become clear that it will be capable of running both Linux and Android apps. Chrome OS can also do both of these things, and that’s no coincidence, as the Fuchsia team has opted to use some of Chrome OS’s developments for their own benefit.
Fuchsia and Crostini
The first thing Google wants everyone to know about their in-development operating system is that “Fuchsia is not Linux.” That being the case, it’s a bit of a surprise that Fuchsia is planned to be able to run apps for Linux and for Android, which is based on Linux.
There’s a few different ways to make this happen. We’ve seen that the Fuchsia team has been working to bring the Android Runtime to Fuchsia, possibly by making it work directly with the Zircon kernel instead of the Linux kernel. Fuchsia’s Machina project goes in a different direction to support Linux, by running a full Linux OS in a virtual machine.
Since we last covered Fuchsia’s ability to run Linux, the design has gone through some iteration, to more closely mirror how Chrome OS handles its Linux apps support via Crostini. As explained in Chrome OS documentation, Crostini boots up a lightweight Linux virtual machine called “Termina,” which is used to manage, start, and stop containers that actually run your apps.
Termina is a VM image with a stripped-down Chrome OS linux kernel and userland tools. Its only goal is to boot up as quickly as possible and start running containers. Many of the programs/tools are custom here. In hindsight, we might not have named it one letter off from “Terminal”, but so it goes.
Fuchsia’s “Guest” app (responsible for managing virtual machines) has a new system available, called “Biscotti” or “linux_runner.” The documentation makes it very clear that Biscotti borrows Termina from Chrome OS, and then Biscotti can be used to run a full Linux distribution like Debian, almost exactly like Chrome OS’s Crostini.
Fuchsia and ARCVM
So how does any of this apply on the Android side of things?
We’ve recently been told, by a source familiar with both Fuchsia and Chrome OS, that Fuchsia’s support for Android apps is currently based on Chrome OS’s Android apps support. At first blush, this doesn’t seem to make sense, as Chrome OS currently runs Android apps on its own Linux kernel, under the hood.
However, as we learned last week, Google has been hard at work on a new way to run Android apps on Chrome OS. This new method, called “ARCVM,” runs Android apps through a virtual machine, just like how Linux apps are handled in Chrome OS.
This same ARCVM is likely what’s being used in Fuchsia for “android_runner,” (spotted by btlms on the Fuchsia subreddit). Unfortunately, android_runner hasn’t been made open source yet, so we can’t say much for sure.
By using ARCVM, and therefore running the Android Runtime on Linux like normal, Google would no longer need to try to port the full Android Runtime over to Fuchsia/Zircon. Building on the Chrome team’s efforts also means Fuchsia’s Android support will be thoroughly tested ahead of time by Chrome OS.
The only question that remains is performance. Thus far, we’ve all been thinking about Fuchsia as an operating system that can be used on traditional computers, smartphones, tablets, and IoT devices, though Google’s Hiroshi Lockheimer suggested Fuchsia may not necessarily be for phones.
That being said, running a Linux or Android virtual machine on a smartphone seems like overkill even with some of today’s hardware. To have a better idea of how well Fuchsia may be able to perform with Android and Linux apps, we’ll need to keep an eye on Chrome OS’s Crostini and ARCVM as they continue to develop.
Another relevant project to watch is Samsung’s Linux on DeX, which is able to run a full Ubuntu Linux distribution from devices like the Samsung Galaxy S10. While not directly related to Fuchsia, it shows that smartphones can be more than capable of running “desktop” applications.