Un repaso a las partes fundamentales de SteamOS 3, el sistema operativo de Steam Deck
Steam Deck es el dispositivo que ha consolidado a Linux como un sistema operativo para videojuegos, no solo por el hecho de ser un producto bien conjuntado, sino sobre todo por el relativo éxito que ha logrado cosechar. Desde hace tiempo se conocen todos los detalles tecnológicos en torno a la consola, pero estos han sido refrescados recientemente por Alberto García, un empleado de Igalia, en el Open Source Summit Europe que se ha celebrado en Bilbao. La conferencia también ha servido para mencionar las partes a las que Valve, Igalia y otros están contribuyendo para mejorar el escritorio Linux.
Aunque posiblemente esto sorprenda a algunos, la Steam Deck no es nada especial a nivel tecnológico. Por un lado es un mini-PC x86 con una disposición de consola híbrida que implementa una APU de AMD y que es capaz de ejecutar Windows. Por otro, el sistema operativo es un GNU/Linux estándar que usa componentes comunes como el kernel Linux, systemd, Xorg (para el escritorio), Wayland (para la sesión de juegos), KDE Plasma, Mesa, Flatpak y Btrfs, todo aderezado con una inmutabilidad que empieza a ser mainstream dentro del mundillo.
Lo primero que nos recuerda Alberto García es que SteamOS 3, sistema operativo que viene preinstalado en la Steam Deck, se basa en Arch Linux, aunque desde Valve no parecen seguir el elevado ritmo de actualizaciones de la distribución madre. Su anuncio hace dos años causó cierta sorpresa, ya que las versiones anteriores de SteamOS se basaron en Debian.
El primer componente mencionado por Alberto fue Proton, que no es más que una reimplementación de Wine para facilitar la ejecución de videojuegos de Windows en Linux. Esta tiene incorporados dos renderizadores que traducen instrucciones Direct3D a Vulkan: DXVK y VKD3D-Proton. El primero se encarga de las versiones 9, 10 y 11 de la API de Microsoft, mientras que la última hace lo propio con la versión 12, que al igual que Vulkan desciende del fallido Mantle.
García menciona que CodeWeavers y Valve trabajan juntas en el desarrollo de Wine, cosa normal viendo los intereses de ambas empresas. La primera emplea al que prácticamente es el núcleo duro de desarrolladores de Wine, con su líder a la cabeza, mientras que la segunda busca ofrecer la mejor compatibilidad para la ejecución sobre Linux de los videojuegos compilados para Windows.
Un detalle importante sobre Wine es que realmente no es un emulador, sino una reimplementación de las API de Windows que se encarga de traducir las llamadas del sistema de Windows a otras que sean entendidas por Linux. En consecuencia, las aplicaciones no se ejecutan de forma emulada, sino nativa.
La otra gran pata de SteamOS 3 es la pila gráfica. El sistema utiliza en este frente la estándar para Linux, o sea, el driver del kernel para poner funcionamiento la GPU y controlar la potencia y las temperaturas y Mesa para el soporte de OpenGL y Vulkan. Procedente del kernel tenemos AMDGPU, que es oficial y de código abierto, pero depende de un firmware privativo para liberar todo su poder, mientras que para OpenGL está RadeonSI, que es oficial, y Vulkan está soportado por RADV, de origen comunitario y desarrollado principalmente por Valve.
Sobre el soporte de HDR, no hay nada que sorprenda al ser el plan soportarlo a través de gamescope, el compositor usado para la sesión de juegos de SteamOS 3 y que se apoya en Wayland. Otro detalle interesante es la carencia de una API estándar que permite reportar un problema con la GPU al espacio del usuario cuando dicho componente es reiniciado.
Con el fin de mejorar la situación en torno a los reinicios de la GPU, se pretende estandarizar los siguientes frentes: cómo el gestor de renderización directa (DRM) reporta los cuelgues de la GPU al espacio del usuario, cómo los drivers del espacio de usuario (Mesa) lidian con un cuelgue y qué deben hacer los compositores después de un reinicio. Un mejor manejo de los reinicios de la GPU puede minimizar las probabilidades de tener que reiniciar el sistema operativo completo en caso de haber un fallo en ese frente.
SteamOS 3 es un sistema operativo inmutable, así que su sistema de ficheros, en formato Btrfs, es de solo lectura en un alto porcentaje. Para las actualizaciones emplea un mecanismo A/B al menos similar al de VanillaOS y para la instalación de aplicaciones hay dos vías principales: el cliente de Steam, mediante el cual se obtienen los juegos y otras cosas que hayan sido obtenidas desde ahí, y Flatpak para las aplicaciones de escritorio y otros clientes de videojuegos.
Flatpak no es ningún desconocido a estas alturas y es la principal vía para instalar aplicaciones gráficas en sistemas operativos inmutables como Silverblue, Kinoite y openSUSE MicroOS/Aeon/Kalpa, pero sorprende que Alberto García recogiera un mensaje publicado por Cassidy James en Mastodon en el que se muestra a Flatpak servido mediante un caballo de Troya llamado Steam Deck. Si bien el mensaje fue puesto más a modo de broma que otra cosa, no es menos cierto que tiene algo de verdad.
Cassidy ha mencionado no solo Flatpak, sino también los estándares de freedesktop. Siguiendo la misma línea llegamos a XDG Desktop Portal, el marco que permite acceder de manera segura a recursos del sistema que se encuentran fuera del aislamiento (sandbox) de una aplicación. XDG Desktop Portal, que podríamos decir que proporciona los portales de XDG, está estrechamente relacionado con Flatpak, aunque no de manera exclusiva. También está relacionado con Wayland y PipeWire y es uno de los componentes que permiten la captura del escritorio desde una sesión de Wayland con OBS Studio.
Los portales de XDG definen interfaces de D-Bus para acceder a los ficheros, abrir URI, realizar pantallazos y acceder a configuraciones. Sin embargo, arrastra el inconveniente de que sus API están siendo implementadas a través de backends específicos para cada escritorio, lo que pone trabas a la hora soportar distintos entornos de escritorio.
Y estas son las partes más interesantes del repaso que Alberto García ha hecho de la Steam Deck. Como ya hemos dicho, tecnológicamente no es nada extraordinario, pero es el dispositivo que ha hecho despegar un sector que era muy marginal en términos de cuota de mercado y el usar Linux supone una novedad en un segmento que ha tenido a Windows prácticamente como único sistema operativo desde hace dos décadas.
La entrada Un repaso a las partes fundamentales de SteamOS 3, el sistema operativo de Steam Deck es original de MuyLinux