About Chromebooks

Chromebook, ChromeOS and Google Chrome browser news

Windows 10 on Chromebook

Apparently, you can run Windows 10 in a Linux VM on some Chromebooks now

Over the past few weeks, we’ve heard Google details plans and a partnership with Parallels to bring Windows 10 support to Chromebooks, at least in the enterprise space. So I was a little surprised to see this tweet from Mace Moneta over the weekend, showing that he’s running Windows 10 inside a VM within the Linux container of his Asus Chromebook Flip C436:

https://twitter.com/MaceMoneta/status/1289370308084813826?s=20

Well that’s… interesting.

I knew that the Chromium team was working on nested KVM support for untrusted virtual machines but I didn’t know how far along it was.

Of course, I tried to get this working on my older Acer Chromebook Spin 13, mainly because with 16 GB of memory, it’s the perfect candidate for testing Windows 10 in this scenario. I first switched to the Chrome OS 85 Beta Channel because that’s where I’ve seen the most recent supporting code changes for this support.

I mostly came up empty although installing virt-manager and dependencies worked out just fine. And I was able to get the Virtual Machine Manager running within Linux on my Chromebook.

The first step in creating a new VM is where I hit my first snag though. KVM wasn’t enabled on my Chromebook, as indicated in step 1 of the process.

I decided to continue anyway, thinking even a slower experience of Windows 10 in a VM is better than none at all. Unfortunately, I couldn’t get my Windows 10 .iso file to ever be read, after various configuration changes and the additional of necessary virtual hardware.

I suspect the key issue on my Chromebook is that KVM is disabled by default, as it has been on every Chromebook, per this Chromium site. Running the kvm-ok command in Linux on my Spin 13 returns this message:

INFO: Your CPU does not support KVM extensions

KVM acceleration can NOT be used

This has to do with the configuration of kernel use and although there are steps on the above site indicating how to re-enable KVM support, it’s not something that most Chromebook owners will be able to do. And it requires a CPU that supports Intel’s VMX extensions.

Having said that, it appears in code commits that nested KVM and untrusted — read: Non-Google built — VMs will be supported in the future. Which Chromebooks will get the feature is the next question. And it based on the limited information I’ve seen, it may only be newer devices based on chipset and kernel version requirements.

Regardless, I’ll keep tinkering with this on my Chromebook Spin 13 and some newer Chromebooks that may have a more recent Linux kernel. If I find out more, I’ll be sure to share. And if you’ve been able to get Windows 10 inside a Linux VM on your Chromebook, let us all know what you’re using and how it’s going!

author avatar
Kevin C. Tofel

27 thoughts on “Apparently, you can run Windows 10 in a Linux VM on some Chromebooks now

  1. AFAIK nested KVM is supported from Linux Kernel 4.14 and your Acer Spin 13 has 4.4 one I think, so it’s the reason why it doesn’t work for you.

  2. It may only be the Project Athena Chromebooks that have nested KVM enabled. An easy way to check if nested KVM is enabled on your machine is to issue this command in Crostini terminal:

    cat /sys/module/kvm_intel/parameters/nested
    Y

    If you get the ‘Y’ response, you’re good to go. To install kvm:

    sudo apt install qemu-kvm
    sudo usermod -aG kvm $USER

    Shutdown the Linux VM (two-finger tap the Terminal icon), and after a few seconds, open Terminal again to start it up again.

    Since Chromebooks use BTRFS, disable COW (copy on write) for the Windows image file:
    chattr -C win10.img

    Then you can boot up Window with:

    kvm -m 4096 -smp cpus=4 -drive file=win10.img,media=disk,cache=unsafe -usb -device usb-tablet -vga virtio -net nic -net user

    It takes 38 seconds to boot to a usable desktop (all icons visible, network up) on my Chromebook.

    1. Thanks, Mace, this is super helpful info! Interestingly, I got the Y response on the nested parameter check using my Acer Chromebook Spin 13. And I did install qemu-kvm.

      But…. trying to boot up from a Windows image file returns a “failed to initialize KVM: No such file or directory.

      So it looks like the functionality is there, or at least partially there, but blocked on my older device.

      I may have to try with a Pixelbook Go which is the newest mid- to high-end Chromebook I have on hand. Cheers!

    2. Thank you for posting this! Not sure why the author couldn’t be bothered to post any instructions.

  3. I can’t really think of any Windows apps that I would want to run on my Chromebook.

    1. What not even Chrome on Windows just to be ironic. Like how I use Microsoft mouse on my Chromebook. No suppose you have better things to do, lol.

    2. The only reason I have a Windows VM, is because I occasionally need to configure a Foscam camera. They use a proprietary browser plugin that doesn’t work with Linux. I can configure the devices with commands sent via URLs, but haven’t gotten around to scripting it yet. Other than that, I haven’t needed Windows in 20 years.

  4. I have just tried installing kvm on a Asus C434, and it seams to work with Tails

    Used the following to install kvm and virt-manager (source: https://chromeunboxed.com/insalling-windows-on-chromebook-crostini-linux-kvm-qemu-virtual-machine/)
    sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager -y
    (Source: This page)
    sudo usermod -aG kvm $USER

    Had a problem that was solved using this (source: https://blog.wikichoon.com/2016/01/polkit-password-less-access-for-libvirt.html)
    sudo usermod –append –groups libvirt $(whoami)

  5. Its nice to know its there when u need it especially for games that are not on android eco, but its useful for many diff things and people

  6. Pixelbook Go here – I get the “Y” when I run this command “cat /sys/module/kvm_intel/parameters/nested

    I can install the Virtual Machine manager but all I get is an error saying “no active connection to install on” so not sure if I’ve done something wrong!!

    1. Actually managed to sort it – Windows 10 installing on the i7 Pixelbook Go – will need to test it properly tomorrow; I suspect that really this kind of thing is going to need a proper i5/i7 rather than one of the weedier U processors.

      1. Did you get this working in a way that was actually usable? Did you get it to boot into the Windows 10 desktop at all?

        Cheers

    2. @Chris, how did you fix the “No active connection to install on”? I am getting the same, installing on the Galaxy Chromebook. Going to start all over, but if you can give us what you did would help, thanks!

  7. Run this command:

    sudo usermod –append –groups libvirt `whoami`

    It gives you the needed permissions.

  8. @Chris Thanks! That worked. Will research on having a few more issues on the installation. At times it just gets stuck at installing Windows when it gets to “Getting files for installation” and sometimes when redoing the complete setup again, I get “No bootable deivce”.

  9. running a hp 360 with a N5000 pentium silver cpu, it’s on 4.14 and i get ‘cat /sys/module/kvm_intel/parameters/nested’ Y

    when running kvm i get:-

    Unable to connect to libvirt qemu:///system.

    authentication unavailable: no polkit agent available to authenticate action ‘org.libvirt.unix.manage’

    Libvirt URI is: qemu:///system

    Traceback (most recent call last):
    File “/usr/share/virt-manager/virtManager/connection.py”, line 1012, in _do_open
    self._backend.open(connectauth.creds_dialog, self)
    File “/usr/share/virt-manager/virtinst/connection.py”, line 138, in open
    open_flags)
    File “/usr/lib/python3/dist-packages/libvirt.py”, line 104, in openAuth
    if ret is None:raise libvirtError(‘virConnectOpenAuth() failed’)
    libvirt.libvirtError: authentication unavailable: no polkit agent available to authenticate action ‘org.libvirt.unix.manage’

    any thoughts would be much appreciated, (it’s all double dutch to me) !

    1. I solved it with
      sudo usermod –append –groups libvirt $(whoami)

      Se comment above for source

    2. Hey! Try to use Virtualbox. To install it use “sudo apt-get install virtualbox” in Terminal App.

  10. Really interesting..! Would someone like to do a video/review of the process and how it runs?

    Thanks in advance ?

  11. ok, thanks for that, with a bit of tinkering on that command i got it going, even as far as it loading win10, then it froze up and and told me ‘no bootable device’ !

    my HP 360 only has 4gb of ram and i doubt enough spare storage to run windows either, still, in principle a N5000 pentium silver will do, running 4.14, it’s a gemini lake chip, almost three years old

    gonna tinker some more though !

  12. actually got this thing as far as the license screen, then disconnects

    run’s like a dawg of course, probably because i can only allocate circa 2.75gb of ram to it, and on a N5000 pentium silver cpu, nevertheless, i’ve satisfied my need to tinker

Comments are closed.

Scroll to top