I recently wanted to experiment with ChromeOS Flex but didn’t want to install it on a physical machine. I also was doing this without a USB key, which complicated things slightly.

After some trial and error, there are two non-obvious steps to get the installer running:

  • Properly mounting the .bin live USB image in a way that’s accessible to the VM
  • Setting graphics drivers to something ChromeOS Flex supports, which enables the VM to successfully boot the live USB image

Prepare

You’ll need the ChromeOS Flex USB image, which you can get from here if you don’t want to enter your contact info on the main page.

Download the ZIP and extract it to your host device somewhere.

While you wait…

To use the VirGL GPU driver, which we’ll need later:

apt-get install libgl1 libegl1

Create the VM

I used mostly default settings, with a few exceptions.

  • Linux OS, with the Do not use any media option initially selected
  • q35 machine type
  • host CPU type
  • OVMF (UEFI) BIOS type

If you’re using OVMF (UEFI) make sure you uncheck the Pre-Enroll keys option on the EFI disk, otherwise it won’t boot - I got an “Access Denied” error in the virtual BIOS.

After creation, go change the Graphic card setting under Display (inside Hardware) to VirGL GPU.

VirtIO-GPU may also work, but in my experience it was a bit laggier - more info on differences, or search yourself.

Don’t bother starting the VM yet.

Map in the live USB binary image as a disk

Set up a loop device with the extracted binary image from the earlier-downloaded from the ZIP file.

For example:

losetup --partscan /dev/loop1 chromeos_15393.58.0_reven_recovery_stable-channel_mp-v2.bin

Then, map it to your VM like you would any other block device (reference):

qm set <vm_id_here> -scsi2 /dev/loop<num>

Mine was /dev/loop1, yours may be different.

Start it up

Go back to the Proxmox VM settings (Options, not Hardware this time) and change the boot order, putting the scsi2 device first. It should be obvious which one it is, because it’s mapped to your loop device.

Finally, start the VM. If all goes well, you should be greeted with the ChromeOS Flex install screen via the console.