DEV Community

Cover image for Running Chrome OS Flex on VM
Abdullah Musa
Abdullah Musa

Posted on • Originally published at musabase.com

Running Chrome OS Flex on VM

Chrome OS Flex is an incredibly lightweight operating system, especially designed to breathe new life into older hardware. Plus, its CloudReady feature is nothing short of impressive.

Now, I don’t have any aging hardware lying around, but I still wanted to give Chrome OS Flex a spin. The catch? Installing it would mean wiping an entire drive, something I wasn’t ready to do. So I thought, why not run it in a virtual machine?

There’s a twist, though: Google doesn’t officially support Chrome OS Flex in virtual environments. Unlike most operating systems that ship as a neat .iso file, Chrome OS Flex is distributed in a .bzip2 format. And even if you manage to extract it, you can’t just fire it up in a typical VM with a few clicks.

But I’ve been using QEMU/KVM for a while, and I know how powerful it can be. So I decided to put it to the test and see if I could get Chrome OS Flex running inside a VM with QEMU.

Fast Fetch inside Chrome OS Flex on a VM

First Challenge: The Unusual Installation Image

After extracting Chrome OS Flex from its .bzip2 archive, I ended up with a raw .bin file, not the familiar .iso that most virtual machines expect.

I tried pointing my usual VM software to this .bin file, but it just wouldn’t boot. Most hypervisors are designed to boot from either a CD/DVD drive (ISO) or a USB device. A raw disk image like this doesn’t fit either category, at least not without some creative configuration.

So here I was: I had the right file, but no straightforward way to make the VM treat it as a bootable medium.

That’s where QEMU’s low‑level control became a game‑changer. QEMU doesn’t care whether your boot image is an ISO, a USB stick, or a raw disk dump. You can attach any file as a drive and tell QEMU to boot from it.

With the right command, I could make the VM treat chromeosflex.bin as if it were a physical USB drive, exactly what the installer expects. This was the key to loading Chrome OS Flex’s installation environment without any hacky workarounds.

In the next section, I’ll walk you through the exact QEMU command that made this possible.

Second Challenge: Crafting the Perfect QEMU Command

Once I understood that QEMU could treat the raw .bin file as a bootable drive, I needed to piece together the right command. After a lot of trial and error, this is what finally worked:

qemu-system-x86_64 -enable-kvm -smp 2 -m 8G -cpu host \
    -drive file="/mnt/sdc1/OSImages/ChromeOS/ChromeOSFlex Image/chromeos_16002.51.0_reven_recovery_stable-channel_mp-v6.bin",format=raw \
    -drive file=chromeos.qcow2,format=qcow2 \
    -display "gtk,gl=on,show-cursor=on" \
    -device virtio-vga-gl \
    -device usb-tablet -usb
Enter fullscreen mode Exit fullscreen mode

Chrome OS Flex Launch command for VM

Breaking this down:

-enable-kvm: This enables hardware acceleration using the Linux Kernel Virtual Machine. Without it, the VM would be painfully slow. KVM gives near‑native performance, which is essential for a responsive Chrome OS Flex experience.

-smp 2 -m 8G -cpu host: I allocated 2 CPU cores, 8 GB of RAM, and passed through the host CPU type. Chrome OS Flex expects decent resources, and this configuration avoids any artificial bottlenecks.

The two -drive options

The first attaches the extracted .bin file as a raw drive – this is the installer medium.

The second attaches the QCOW2 virtual disk where Chrome OS Flex will actually be installed.

-display "gtk,gl=on,show-cursor=on": This enables OpenGL acceleration for the display and shows the mouse cursor properly. It makes the VM window feel native.

-device virtio-vga-gl: This is the secret sauce. It provides a virtual GPU that supports OpenGL, effectively passing through graphics acceleration to the guest. Chrome OS Flex, like many modern OSes, relies on GPU capabilities. Without this, the installer might fail or the OS would be sluggish.

-device usb-tablet -usb: Enables USB support and adds a tablet device, which gives you smooth mouse movement without needing to grab/release the cursor.

Why These Flags Matter for Chrome OS Flex

Chrome OS Flex is picky about hardware. It expects a real machine with proper GPU support and acceleration. By combining KVM, the VirtIO GPU with OpenGL (virtio-vga-gl), and the GTK display with GL enabled, we’re effectively tricking the OS into thinking it’s running on bare metal. The installer proceeds without complaint, and the final system boots with full graphics acceleration.

In short, these flags aren’t just optional tweaks, they’re the core reason this setup works at all.

Chrome OS Flex running on a VM

And I was In!

Once I ran that command, the Chrome OS Flex installer booted after a minute or two. I clicked Install Chrome OS Flex, let it wipe the virtual disk, and after a brief installation, the VM shut down. Removing the installer drive from the command and booting again from the QCOW2 image gave me a fully functional Chrome OS Flex environment.

If you’ve been struggling to virtualise Chrome OS Flex with other tools, give QEMU with these flags a try. The combination of KVM, GPU acceleration, and raw disk attachment makes all the difference.

Final Thoughts

Getting Chrome OS Flex to run in a virtual machine wasn’t straightforward – Google never intended it to be. But with QEMU/KVM and the right configuration, it’s absolutely possible. The combination of KVM acceleration, a properly configured VirtIO GPU, and treating the raw .bin as a bootable drive made all the difference.

If you’re curious about Chrome OS Flex but don’t want to commit hardware, I highly recommend giving this setup a try. For a complete, step‑by‑step walkthrough, including where to download the recovery image, detailed QEMU flags, and troubleshooting common pitfalls, check out my full guide here:
👉 Chrome OS Flex on QEMU
It covers everything you need to get up and running. Happy virtualizing!

Top comments (0)