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:

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!

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

  • August 3, 2020 at 2:29 pm
    Permalink

    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.

    Reply
  • August 3, 2020 at 2:58 pm
    Permalink

    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.

    Reply
    • August 3, 2020 at 4:57 pm
      Permalink

      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!

      Reply
    • September 14, 2020 at 9:21 pm
      Permalink

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

      Reply
  • August 4, 2020 at 9:48 am
    Permalink

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

    Reply
    • August 4, 2020 at 10:07 am
      Permalink

      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.

      Reply
    • August 4, 2020 at 10:56 am
      Permalink

      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.

      Reply
  • August 4, 2020 at 11:46 am
    Permalink

    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)

    Reply
  • August 4, 2020 at 12:56 pm
    Permalink

    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

    Reply
  • August 4, 2020 at 7:50 pm
    Permalink

    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!!

    Reply
    • August 4, 2020 at 7:59 pm
      Permalink

      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.

      Reply
    • August 4, 2020 at 9:40 pm
      Permalink

      @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!

      Reply
  • August 5, 2020 at 5:10 am
    Permalink

    Run this command:

    sudo usermod –append –groups libvirt `whoami`

    It gives you the needed permissions.

    Reply
  • August 5, 2020 at 10:15 am
    Permalink

    @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”.

    Reply
  • August 10, 2020 at 6:51 am
    Permalink

    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) !

    Reply
    • August 11, 2020 at 3:20 am
      Permalink

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

      Se comment above for source

      Reply
    • August 22, 2020 at 2:39 pm
      Permalink

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

      Reply
  • August 11, 2020 at 1:42 am
    Permalink

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

    Thanks in advance 🙂

    Reply
  • August 11, 2020 at 1:56 pm
    Permalink

    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 !

    Reply
  • August 13, 2020 at 10:18 am
    Permalink

    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

    Reply
    • August 16, 2020 at 10:32 am
      Permalink

      The post has been deleted. Does anyone got the procedure saved elsewhere?

      Reply
  • August 27, 2020 at 6:33 pm
    Permalink

    Can you do a tutorial on how to install the virt machience for debian?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.