In my path to Chrome OS enlightenment, I’ve explored many method with which users can run non-native applications and even alternative operating systems. My most recent endeavor involved installing a full-blown version of Windows 10 inside the Linux container on Chrome OS. While I have absolutely no use for such a monstrosity, the path that brought me there was fun and I believe a lot of users were excited about the premise of running Windows alongside Chrome OS. All of this was made possible thanks to an update to the Linux kernel that is available to some users inside the Chrome OS Linux container. My first theory was that this was being tested exclusively on ‘Hatch’ devices that are equipped with the Comet Lake family of processors. After some input from some colleagues, it appears that the ability to run qemu/kvm in a nested environment is more widely available than I presumed. I have seen reports that users have successfully installed Windows on devices ranging from a Core i5 Pixel Slate to the aging Dell Chromebook 13 that has a Broadwell CPU. Perhaps it is the Core i CPU that is the key. Who knows?
Anyway, after deleting my copy of Windows 10, I set out to see what other operating systems I might be able to run on my Chromebook. I started with macOS because, well, I thought it would be interesting. Unfortunately, I quickly ran into a brick wall. In order to install macOS with a disk image, I needed to run VirualBox instead of the Virtual Machine Manager I used for Windows. No dice. I have tried many times to use VirtualBox and I still run into the same Linux header issues that I always have. If you know how to fix this, please let me know. I’d love to make this work. So, I turned my attention to Linux distros outside of the native Debian framework that runs on Crostini. I was able to get a full installation of Linux Mint as well a straight Ubuntu up and running via the Virtual Machine Manager but I wanted to try something with a different flavor.
Elementary OS is an Ubuntu-based OS but make no mistake, it stands out as its own operating system. Many have called the the macOS of Linux but as you can read in a blog post from the Elementary CEO, the OS design and function are very intentional and quite unique in its own right. All of that is neither here nor there. Elementary OS caught my eye as a distinct and very different distro that I had never used and I wanted to give it a try and see how it ran on Chrome OS. My Windows experiment was a success, for the most part, but Windows is chunky and often times I found the OS struggling to work well inside the VM. Elementary OS is a “pay what’s fair” platform which means exactly what you’d think. While you can technically download the .iso image for free, a donation of your choosing is recommended and I’m sure, well appreciated as it is open-source software.
The image file for Elementary is a mere 1.4GB and using Virtual Machine Manager, you don’t even have to install it to try it out. You can simply run the OS as a “live image” from the .iso file and see what you think. For the sake of thoroughness, I went ahead and installed it and let me tell you, it’s absolutely dreamy. For starters, the Pantheon desktop environment is gorgeous. Yes, it looks a lot like macOS and there are definitely some design cues there but I never said I didn’t like Apple’s desktop layout. At the bottom of the desktop, you’ll find a dock with a few preinstalled applications. You can add and remove from the dock at your leisure. The desktop can be customized to take advantage of hot corners that can be changed in the settings menu and when Virtual Machine Manager is ran in full-screen mode, they work just as you’d expect.
I’ll save the rest of the Elementary OS experience for another time but I want to point out that the Linux operating system runs like a champ inside the virtual machine. The built-in app store allows you to install packages and I even used the Synaptics Package Manager and it worked as it should unlike my experiences inside the default Debian container. Even Snap packages worked and that’s because this is a full, real-deal installation of Elementary OS that’s installed locally and ran through the VM. Since it is technically virtualized, I did run into some isolated instances where Elementary felt a tad glitchy but overall, it is a completely usable and enjoyable experience. So, let’s get down to how I installed this clean, modern Linux distro on my Chromebook.
As with the Windows installation, you will obviously need a Chromebook that supports Linux apps via Crostini. To get set up, check out the Command Line article on getting started with Linux on your Chromebook. As I said, I haven’t nailed down which devices can leverage this nesting ability but it looks like one common denominator is having the 4.19 Linux kernel or greater inside your Linux container. To see what kernel your container has, open up the Linux terminal and type
uname -a and hit enter. The output of this command will tell you the kernel version in your container and will look similar to this:
If your kernel is 4.19 or higher, you may be in business but as I mentioned in the last article, do this at your own risk. If something breaks, it’s on you. Might be a good time to back up all your stuff anyway. First, you will need to grab a copy of the Elementary OS .iso file. You can do that here and feel free to make a little donation while you’re there. Once you have that, move the .iso to your Linux folder for the sake of continuity. Next, we’re going to install all the necessary tools to run the Virtual Machine Manager. You can do this all at once using the following command in the Linux terminal.
sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y
Once that’s finished, you should see the Virtual Machine Manager in your Chrome OS app list. Launch it and let’s get Elementary OS started. Launch the Virtual Machine Manger and click the icon right below the File menu to create a new virtual machine. Select “Local install media” and the click browse. From there, select “browse local” and you should see the folder with your Elementary OS .iso file. Select the .iso an hit open. At the bottom, you will see a checkbox to automatically detect the OS you’re trying to install. Uncheck the box and start typing “generic” until you see the generic default and select that. Click forward and then select the amount of RAM and how many CPU cores you want to use for Elementary. Since hyperthreading doesn’t work in the container, I gave mine all four cores of my Core i5 and 6GB of the 8GB of RAM.
Click forward and adjust the amount of disk space you want to use. Elementary is relatively lightweight but I wanted to leave room for adding packages so I selected 40GB. The amount available will depend on how much storage you allotted to the Linux container. You can adjust the available amount in the Chrome OS settings if you need to. Click forward, then finish and your Elementary OS .iso will fire up. You will be prompted to install or run from the live image. The choice is yours. If plan on keeping it around, I’d go ahead and install it. Even if you don’t want to keep it, you can delete the VM later and free that space up for other stuff. You’ll now go through the process of setting up a username and all the finer details of the OS. After just a few minutes, you’ll have a full beautiful Linux OS running right there on your Chromebook. To run Elementary OS fullscreen, just click the fullscreen icon at the top right of the Virtual Machine Manager.
I installed Chromium from the preinstalled app store and once I synced my account, all of my web apps showed up and I was chatting in WhatsApp and checking email like a pro. So, there you go. While I have no intention of living in Linux, I’m looking forward to learning more about Elementary OS and what is has to offer. Let me know if there is another OS you’d like to see. I’d be happy to give it a shot. Right now, I’m working on running PalmOS/WebOS in a VM. Wish me luck.