The time has come: Welcome to our exclusive guide to the exploitation of Volcano in Crostini! This unlocks the full gaming power of Chromebooks by making more modern games work. More importantly, Steam’s Proton Compatibility Layer can reach its full potential, which means most Windows games will now run on Chromebooks. How cool is that ?!
Let me start by saying that using Crouton would be a lot easier and would get better results when it comes to using Vulkan on your Chromebook. Especially in view of the performance hit that Vulkan is currently getting in Crostini. Crouton natively supports OpenGL, Vulkan, and even OpenCL as it eschews some of the levels and complexities of Crostini.
I need to get a few disclaimers out of the way before we get started. You will need advanced Linux knowledge, a modern AMD or Intel Chromebook (ideally one of the devices with Borealis support for the best results) and should have your Chrome OS device in the developer or hidden canary channel for the best experience. In this guide, I’m not going into every little detail and I’m assuming you’ve met the prerequisites. With all that has been said Let me break down the steps in order: activate Vulkan, install Arch Linux, install and test the latest development graphics drivers.
The first step is to start the Crostini virtual machine named “Termina” with Vulkan support enabled. To do NOT Open the Terminal application on Chrome OS. Make sure to shut it down if it is running. Instead, open the “Crush” shell by pressing the keyboard keys CTRL, OLD, and T. Then start it manually from the command line.
crosh> vmc start --enable-gpu --enable-vulkan termina
The second step is to install Arch Linux as a Crostini container. Check out the ArchWiki How to Set Up a Crostini Container or this amazing video from my buddy ChrisTitusTech where he goes through everything including installing the Arch Linux User (AUR) package manager called “yay”. The AUR is my favorite thing about Arch Linux. With this you can install almost any Linux program thanks to the community contributors. Many packages are also provided for the latest development versions of packages. We’ll go into that next. Make sure you are in the Arch Linux container before proceeding.
The third step is to install “mesa-git” and “lib32-mesa-git” as non-root users with “yay”. Mesa is the open source Linux graphics driver. I have been working with the respective AUR maintainers for the past few months to bring up any manual changes I have made to create the new VirtIO Venus driver. In short: Installation is now even easier.
$ yay -S mesa-git lib32-mesa-git
The fourth step is to instruct Vulkan to use our new VirtIO Venus driver. Make sure the new driver loads now and on future reboots:
$ export VK_ICD_FILENAMES=VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/virtio_icd.i686.json:/usr/share/vulkan/icd.d/virtio_icd.x86_64.json $ echo "export VK_ICD_FILENAMES=VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/virtio_icd.i686.json:/usr/share/vulkan/icd.d/virtio_icd.x86_64.json" | sudo tee -a /etc/environment
In conclusion, let’s confirm it works! You should see that “venus” is reported as the driver. If you see “llvmpipe” you are using the wrong driver and you probably did something wrong in the last step. This is the CPU-based graphics renderer for Vulkan that is only used for automated testing. It’s incredibly slow so you probably never want to use it.
$ vulkaninfo | grep driverName driverName = venus driverName = venus $ vkcube
You can then run the “vkcube” demo application, which displays a simple spinning 3D cube. If you see that, be happy! You managed!
At this point, I recommend installing Steam and enabling Proton (the Vulkan back end no longer needs to be disabled!) And finding out which of your favorite Windows games are working. With Valve’s commitment to Proton, gaming on Chrome OS and Linux only gets better. Good luck, have fun and share your experience with Vulkan in Crostini with us!