Creating a Proxmox or QEMU ChromeOS Flex VM
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 typehost
CPU typeOVMF (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.