
Parallels will soon bring a full-fledged Windows desktop to Chrome OS for enterprise customers but it appears that won’t be only way to skin the proverbial cat. Nesting a virtual machine inside inside another VM on Chrome OS technically isn’t supposed to be possible in the current Stable build of Chrome OS. However, it looks like the Chromium developers have been tinkering under the hood. Our pal Kevin Tofel has reported that a Chromebook user on Twitter shared that he successfully installed Windows 10 in a VM inside the Linux container. As excited as I was to see this development, I wouldn’t be me if I didn’t give it a try myself before sharing the news.
I just made an interesting discovery on my ASUS C436 #chromebook. Nested (hardware accelerated) KVM is enabled!
— Mace Moneta (@MaceMoneta) August 1, 2020
First thing I tried, booting up a #Windows10 #VM inside the #Linux container… and It works! And it's fast enough to be productive.#ChromeOS #Android #Linux #Win10 pic.twitter.com/9YsTFzpgf6
I am happy to report that I was able to duplicate Mr. Moneta’s success and we’re going to run through the steps of how I arrived. Now, my Chromebook is in the Canary channel but I did confirm with Mace that his ASUS C436 was in the Stable channel and NOT in developer mode. From the best I can tell from my repository digging, this ability is currently limited to ‘Hatch’ devices which are powered by the Intel Comet Lake CPU family. I’ll be testing on some other devices to verify my suspicion but for now, Comet Lake Chromebooks are the only devices I’ve seen this work successfully. There is some leg work we have to do to get Windows running in a virtual machine but apart from the actually installation process, it really didn’t that long and was fairly straightforward.
Before we get into it, I feel obligated to issue the usual caveats. While this does not require developer mode or even switching channels, it does utilize the Linux container and somewhat experimental methods that are not officially supported by Chrome OS and its developers. The installation we’re doing is relatively safe and if the container breaks, you can always delete Linux and start over. That said, PROCEED AT YOUR OWN RISK! It is possible that this won’t work well or at all and I don’t recommend trying it unless you know your way around or simply don’t care about bricking your Chromebook. Okay, let’s move on. First, you will need to enable Linux on your Chromebook. To get set up, check out this Command Line article on getting started with Linux on Chrome OS. Make sure you alot at least 25GB to 30GB to Linux when you first set it up so that you have enough room for the Windows installation. As I mentioned above, I don’t think this will work unless you have a Comet Lake device but I will test on some other Chromebooks to verify.
Next, you’ll need a Windows image to install in the VM. You can get an official image directly from Microsoft here. I chose Windows 10 Home but I suppose you can try whichever version you’d like. Maybe some Windows 98 SE if you happen to have an old installation disk around the house. The file format is .iso and once you’ve downloaded it, you should move it to the Linux folder to prevent any file path conflicts. The Windows 10 Home download was just shy of 5GB so it took a bit to download and transfer. When you’re ready, we’ll move to the Linux terminal to get the VM software installed and ready. Tip: Go to your Linux settings and enable microphone access before moving to the next step. You’ll see why in a minute.
Open the Linux terminal. This is where we will install all the necessary packages to run Virtual Machine Manager. To install qemu/kvm, the VM manager and all required dependencies, paste the following commands into the terminal and hit enter. It will take a few minutes to install and when it’s done, we will move on to installing Windows.
sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y
If all went as planned, you should find the Virtual Machine Manager in your app list. Open the manager. This is where we will create the VM and direct it to install the Windows image. At the top left of the manager (under the File menu), you should see what looks like a display with a play button on it. Click that button and you will be prompted to create a new virtual machine. Since we’re using an image we downloaded, select the option that says “Local install media” and click forward.

Click “browse” and then select “browse local” to select the .iso image you moved to the Linux folder. Click forward. You will then be given the option to alot RAM and CPU cores. The default on my Core i5, 8GB Acer was 4GB of RAM and 2 CPU cores. I upped the RAM to 5GB and went ahead and selected all 4 cores because I wanted to see just how well Windows could run if given most of my system resources. Click forward and then you’ll be asked to set your allotted drive space. I had 40GB free in the Linux partition so that’s what I gave up. You would probably be fine with 20GB but remember, this is Windows. You need extra space. Click “finish” and wait for the magic to happen. You will be greeted with the usual Windows setup and it will walk you through every step of the installation. I won’t go into depth on setting up Windows. It’s fairly self explanatory and you can customize your experience however you please. Don’t worry about any wonky resolutions. Once installed, I was able to set Windows to match the native resolution of my external monitor and it worked perfectly.

Once the installation is complete and everything is set up, you can click the “full screen” icon in the VM manager and you will have a full-blown, Windows desktop where you can install whatever Windows-compatible programs you want. I will say that the experience was much better than I expected. Cortana even works if you enabled microphone access like I mentioned earlier. There are some issues with the mouse cursor rendering twice because both operating systems are competing to display the cursor and you can definitely tell that the virtualized OS struggles here and there when loading or installing applications. Still, this is a solution that’s good enough to allow users to access legacy Windows applications that aren’t too taxing. It’s most certainly not a great experience but it’s better than most other solutions I’ve tested. Long story short, the Linux container is growing more capable by the minute. If developers every decide to turn hyperthreading back on in the container, Windows and other operating systems could offer a near-native experience for users who absolutely need it. Now I’m off to try some other operating systems to see how they run. Stay tuned for more.
Source: Twitter via About Chromebooks