When on the road, some of us bring a handheld Linux computer such as the Steam Deck for entertainment. But after some time of hunting ghosts and shooting portals the desire to be productive returns. How about quitting the game and starting OpenShift on our handheld gaming companion?
In late 2023 I was on a train headed to Red Hat Summit Connect Germany to present operational aspects of OpenShift Virtualization. Sitting in the train at 278 km/h while driving trucks at 91 km/h in Euro Truck Simulator 2, I remembered that my presentation needed a special ingredient that was yet to be found. Something that sticks out, something folks will remember… this special ingredient was right in the palms of my hands. Can I run a VM in OpenShift Virtualization on my Steam Deck?
One of many OpenShift flavors
Nowadays there are several deployment flavors of OpenShift 4 to choose from:
- Classic OpenShift Cluster with 3 Control Nodes and at least 2 Compute Nodes,
- Compact OpenShift Cluster with 3 combined Control/Compute Nodes,
- Single Node OpenShift (SNO) with a single combined Control/Compute Node,
- MicroShift, a slimmed down version of OpenShift for constrained environments,
- OpenShift Local for local development, which launches SNO in a VM on Windows, Mac and Linux hosts.
OpenShift Local – unlike Single Node OpenShift – does not replace the operating system, but rather starts an OpenShift VM in the userspace. As I want to keep SteamOS and my game library installed on my Steam Deck, OpenShift Local is most suitable for this experiment. I already use OpenShift Local on my laptop for casual development with OpenShift whenever a cluster is not in reach.
How a Container Platform fits on a Steam Deck
The handheld gaming console Steam Deck is a Linux computer powered by a custom AMD APU with a 4 core, 8 threads Zen 2 CPU and 16 GB LPDDR5 RAM. It comes with SteamOS preinstalled, a derivative of Arch Linux that is optimized for gaming with Valve’s Steam platform.
The system’s Linux basis is not kept from the gamer: You can access a fully functional KDE Plasma desktop environment from the Deck’s power menu. While some use it productively for office tasks with a USB-C docking station, viewing web pages and using the terminal is inconvenient without an attached mouse/keyboard combination.
At the time of writing the minimum requirements for OpenShift Local are 4 physical cores and 16 GB RAM of which at least 9 GB are used by OpenShift Local. On paper, this is exactly the specification of the Steam Deck. Check! OpenShift Local requires at least 35 GB of disk storage for its CoreOS VM, the OpenShift container images and user data.
As we are deploying more workloads to OpenShift Local, such as the Virtualization addon, we will eventually exceed the minimum requirements and need to add more resources, most significantly more RAM.
Sailing away on the Deck
Kubernetes? Sailing? Got it…? 🙂
Sailing away with OpenShift Local on the Steam Deck is perfectly possible in 2024 – with a handful of hacks and tricks. If you want to experience the fun yourself, I’ll detail the exact steps in part 2 of this series.
That day in late 2023 I was in the high-speed train with a shaky mobile data connection. I connected both the Steam Deck and my laptop to my phone hotspot and ssh’ed into the Arch Linux to install OpenShift. It took a few attempts to put the virtualization components for running the CoreOS VM in place, but eventually I was greeted by the familiar OpenShift web console.
Enter Virtual Machines
The last stage of this sailing trip is OpenShift Virtualization, the OpenShift add-on for running virtual machines in OpenShift. Based on the community project KubeVirt, it unites container orchestration with Kubernetes and KVM virtualization to distribute virtual machines across OpenShift nodes.
The steps required to get this running are fairly simple: Install the OpenShift Virtualization Operator and its dependencies, wait for a few minutes and we are ready to go.
We are now able to create our first virtual machine.
A very lightweight operating system for the virtual machine might be the best choice to finish the experiment considering the limited resources of the Steam Deck: CirrOS is a lightweight operating system which is available as a ready-to-use image for OpenShift Virtualization and KubeVirt.
Without further ado we deploy the CirrOS template. Seeing the virtual machine’s blinking terminal cursor, we can call this experiment a success.
It is important to remember that now a virtual machine (CirrOS) is running within another virtual machine (CoreOS). This is called nested virtualization which is expected to introduce performance overhead. However, the CirrOS terminal responds pleasantly fast to input.
Virtualization on Steam Deck: Worth the Effort?
This very practical project is a great way of learning about OpenShift and virtualization with KubeVirt on a single host. All you need to bring is a Steam Deck, or another affordable x86 Linux computer. The Steam Deck is a good choice, because as a portable gaming console it has its right to exist in the backpack. And it’s fun.
What will be your next journey with OpenShift Virtualization?
Happy sailing!
References
(1) Cover image, Christian Stankowic and Moritz Meid, 2023
(2) Steam Deck, Valve Corporation, 2024 https://store.steampowered.com/steamdeck
(3) Installing CRC, crc.dev, 2023, https://crc.dev/crc/getting_started/getting_started/installing/