1 puntos por GN⁺ 2024-01-01 | 1 comentarios | Compartir por WhatsApp
  • Bazzite es una imagen personalizada basada en Fedora Atomic cuyo objetivo es ofrecer un entorno de gaming en Linux, desde dispositivos portátiles como Steam Deck hasta desktops y HTPC
  • Nació para resolver los paquetes desactualizados y la falta de un gestor de paquetes funcional en SteamOS; aunque está basada en imágenes, permite instalar paquetes de Fedora y estos se conservan después de las actualizaciones
  • Ofrece varias variantes como bazzite, bazzite-deck, variantes con GNOME e imágenes con controladores dedicados para NVIDIA, e incluye Game mode, HDR, Mesa, ports de paquetes de SteamOS, rollback y compatibilidad con Secure Boot
  • La configuración base incluye Distrobox, Waydroid, vkBasalt, MangoHud, OBS VkCapture, xone, DisplayLink, ROCM OpenCL/HIP y compatibilidad con varios controladores de entrada, RGB y tabletas
  • Proporciona una ISO de instalación y comandos de rebase, y las imágenes admiten verificación de firma con cosign; además, los usuarios pueden crear sus propias variantes de Bazzite usando GitHub Actions y claves de Cosign

Propósito y base de Bazzite

  • Bazzite es una imagen personalizada basada en Fedora Atomic y construida con el enfoque cloud-native de Universal Blue
  • Su objetivo es extender el entorno de gaming en Linux a desktops, HTPC para sala y dispositivos portátiles como Steam Deck
  • Bazzite se construye desde ublue-os/main y usa tecnología de Fedora para ofrecer compatibilidad de hardware ampliada y controladores integrados
  • Se inició para resolver los paquetes desactualizados y la ausencia de un gestor de paquetes funcional en SteamOS
  • Aunque está basado en imágenes, se pueden instalar paquetes de Fedora desde la línea de comandos y esos paquetes se conservan incluso después de actualizar
  • Se actualiza varias veces por semana con paquetes upstream de Fedora y ofrece soporte para el kernel de Linux más reciente, SELinux habilitado por defecto, Secure Boot y cifrado de disco

Funciones comunes de gaming y hardware

  • Bazzite usa el kernel de bazzite para ofrecer HDR y compatibilidad de hardware ampliada, además de incluir varios parches
  • Se puede usar HDR en Game mode
  • En las compilaciones que no son para NVIDIA se puede usar NVK
  • Ofrece compatibilidad con códecs acelerados por hardware para decodificación H264
  • Soporta el runtime ROCM OpenCL/HIP de AMD
  • Incluye compatibilidad con el controlador xone para controles Xbox y con DisplayLink
  • Incluye el tema KDE de SteamOS de Valve
  • vkBasalt, MangoHud y OBS VkCapture vienen instalados por defecto
  • Soporta Winesync/Fastsync/NTsync
  • Distrobox viene preinstalado
  • Simplifica la instalación de Davinci Resolve basada en davincibox mediante ujust install-resolve
  • Ofrece un servicio automático de duperemove para reducir el espacio usado por el contenido de los prefijos de wine
  • Soporta HDMI CEC mediante libCEC
  • Usa Google BBR como control de congestión TCP predeterminado
  • Input Remapper viene preinstalado y activado; en la variante Deck está disponible, pero desactivado por defecto
  • Bazzite Portal permite instalar aplicaciones y ajustes, además de ofrecer botones para actualizar, hacer rebase y reinicializar la imagen del sistema
  • Waydroid viene preinstalado para ejecutar apps de Android
  • Para administrar Flatpak y AppImage usa Flatseal, Warehouse y Gear Lever
  • Incluye los controladores i2c-piix4 e i2c-nct6775 de OpenRGB para controlar RGB en algunas motherboards
  • Los controladores de OpenRazer están integrados y se pueden usar desde Bazzite Portal o con ujust install-openrazer
  • Incluye reglas udev de OpenTabletDriver y el paquete completo de software puede instalarse desde Bazzite Portal o con ujust install-opentabletdriver
  • Soporta teclados Wooting de forma predeterminada
  • Soporta GPU AMD Southern Islands HD 7000 y Sea Islands HD 8000 con el controlador amdgpu
  • Mediante Webapp Manager, permite convertir sitios web de Firefox y otros navegadores en aplicaciones

Variantes para desktop y Steam Deck/HTPC

  • La variante común para desktop es bazzite, adecuada para computadoras de escritorio
  • Las actualizaciones automáticas del sistema operativo, Flatpak y otros componentes están a cargo de uupd y topgrade
  • La ISO se puede descargar desde el sitio de descargas y hay una guía de instalación
  • Se puede hacer rebase desde Fedora Atomic existente a la imagen con controladores GPU de código abierto
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:stable
  • Los dispositivos que requieran controladores dedicados de NVIDIA deben hacer rebase a la imagen bazzite-nvidia
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable
  • Los usuarios con Secure Boot activado deben seguir la documentación de Secure Boot antes de hacer rebase
  • NVK, la opción de código abierto de Mesa para NVIDIA, al momento de redactarse puede fallar con facilidad, y los problemas relacionados con NVK deben reportarse a Mesa, no a Ublue/Bazzite
  • bazzite-deck para Steam Deck y HTPC

    • bazzite-deck está diseñado como alternativa a SteamOS para Steam Deck y para ofrecer una experiencia tipo consola en HTPC
    • Arranca directamente en Game mode, igual que SteamOS
    • duperemove automático reduce mucho el tamaño de compatdata
    • Las versiones recientes de Mesa generan una shader cache más pequeña y no la requieren para evitar stutter
    • Puede arrancar aunque la unidad esté llena
    • Soporta todos los idiomas que soporta Fedora upstream
    • Usa Wayland en el escritorio y soporta Steam input
    • Incluye versiones porteadas de la mayoría de los paquetes de SteamOS del repositorio evlaV, como controladores, actualizadores de firmware y controlador de ventilador
    • Usa una versión parcheada de Mesa para un control correcto del framerate en Gamescope
    • Incluye el parche de SteamOS BTRFS y ofrece compatibilidad con BTRFS en tarjetas SD por defecto
    • Incluye un port de SDGyroDSU activado por defecto
    • Durante la instalación se puede elegir instalar Decky Loader, EmuDeck, RetroDECK, ProtonUp-Qt y otros
    • Ofrece un sistema de actualización personalizado desde la interfaz de Game mode para actualizar el sistema operativo, Flatpak y más
    • Mantiene la instalación de GRUB de Fedora para soportar dual boot con Windows
    • Permite volver a una versión anterior de Bazzite con rollback de rpm-ostree, y elegir la imagen anterior al arrancar
    • Steam y Lutris vienen preinstalados en la imagen como layered packages
    • Usa 4 GB de ZRAM con algoritmo de compresión LZ4 por defecto
    • Incluye los planificadores de CPU LAVD y BORE para una experiencia de juego fluida y responsiva
    • Usa el planificador de I/O Kyber para evitar I/O starvation durante instalaciones de juegos o duperemove en segundo plano
    • Aplica parámetros del kernel de SteamOS
    • Incluye perfiles de color corregidos para pantallas mate y brillantes de Steam Deck
    • Las funciones avanzadas para usuarios expertos de Steam Deck, como undervolt de bajo riesgo, overclock de pantalla o duplicar el VRAM máximo en mods de 32 GB de RAM, vienen desactivadas por defecto
    • Los servicios de actualización de BIOS y firmware específicos del hardware de Steam Deck pueden desactivarse en la terminal con ujust disable-bios-updates y ujust disable-firmware-updates
    • Estos servicios se desactivan automáticamente en hardware que no sea Deck y en Deck con pantalla DeckHD o mod de 32 GB de RAM
    • Para configurar Steam Gaming Mode en dispositivos portátiles alternativos se debe consultar la Handheld Wiki

Variantes GNOME y funciones upstream

  • Hay compilaciones con entorno de escritorio GNOME tanto para la variante desktop como para la variante Deck
  • Las compilaciones GNOME habilitan frecuencia de actualización variable y fractional scaling en Wayland
  • Un menú personalizado en la barra superior permite volver a Game mode, ejecutar Steam y abrir varias utilidades
  • GSConnect viene preinstalado y listo para usar
  • Incluye la extensión Hanabi, que ofrece una función similar a Wallpaper Engine de KDE
  • Varias extensiones opcionales de GNOME vienen preinstaladas, junto con ajustes a la experiencia de usuario
  • Firefox GNOME theme y Thunderbird GNOME theme se actualizan automáticamente si están instalados
  • El comando de rebase para la variante GNOME de desktop es el siguiente
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable
  • La imagen GNOME con controladores dedicados para NVIDIA se usa con el siguiente comando
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvidia:stable
  • La versión GNOME para Steam Deck/HTPC usa el siguiente comando
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable
  • Funciones tomadas de Universal Blue y Fedora

    • Funciones basadas en Universal Blue
    • Las imágenes para NVIDIA traen preinstalados los controladores dedicados de NVIDIA
    • Flathub viene habilitado por defecto
    • Ofrece el comando de conveniencia ujust
    • Incluye códecs multimedia por defecto
    • Permite hacer rollback de Bazzite a cualquier compilación de los últimos 90 días
    • Funciones heredadas de Fedora Linux Kinoite y Silverblue
    • Proporciona una base estable
    • Los paquetes del sistema se mantienen relativamente actualizados
    • Se pueden añadir paquetes de Fedora como capas a la imagen y se conservan después de las actualizaciones
    • SELinux viene preinstalado y configurado
    • Permite hacer rebase a otras imágenes Fedora Atomic sin perder los datos del usuario
    • CUPS viene preinstalado para dar soporte de impresión

Verificación, Secure Boot y builds propias

  • Las imágenes de Bazzite están firmadas con cosign de sigstore
  • Se puede descargar la clave cosign.pub del repositorio y verificar la firma con el siguiente comando
cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
  • Secure Boot se soporta con una clave personalizada, y la clave pública está en secure_boot.der en la raíz del repositorio
  • Para registrar la clave de Secure Boot antes de instalar o hacer rebase, se usan los siguientes comandos
sudo mokutil --timeout -1
sudo mokutil --import secure_boot.der
  • Si ya se está usando una imagen de Universal Blue, se puede ejecutar ujust enroll-secure-boot-key en su lugar
  • Si pide contraseña, se debe usar universalblue
  • Steam Deck no se entrega con Secure Boot activado ni con claves registradas por defecto, así que no debería activarse a menos que se entienda bien lo que se está haciendo
  • Bazzite se construye por completo con GitHub Actions
  • Se puede crear una versión personalizada propia haciendo un fork del repositorio, añadiendo una clave de firma personal y activando GitHub Actions en el fork
  • Ejecutar el workflow Build Bazzite genera imágenes personalizadas para todas las variantes de Bazzite
  • Si solo se quieren compilar ciertas variantes, se deben comentar las no deseadas en la lista strategy.matrix del job push-ghcr en .github/workflows/build.yml
  • Para mantener el fork sincronizado con upstream se puede usar la configuración de la pull app
  • Procedimiento para firmar imágenes propias

    • Primero se debe revisar cómo GitHub maneja los secrets
    • Generar un nuevo par de claves con Cosign
    cosign generate-key-pair
    
    • Reemplazar cosign.pub del repositorio público con la clave pública generada
    • Añadir el texto de la clave privada dentro de cosign.key a los Repository Secrets del fork
    • El nombre del secret debe ser SIGNING_SECRET

Documentación y comunidad

1 comentarios

 
GN⁺ 2024-01-01
Opiniones de Hacker News
  • Bien. Creo que el servidor multimedia en la sala será el caballo de Troya que reviva el self-hosting y, al final, vuelva a orientar Internet hacia P2P.
    Cuando la mayoría de la gente tenga conexiones simétricas y sistemas Linux potentes, lo único que quedará impidiendo que las personas usen Internet como se pensó originalmente —como consumidores y, al mismo tiempo, publicadores— será un problema de software.

    • Después de usar durante años un servidor multimedia en la sala, mi recomendación es no poner un servidor multimedia en la sala.
      En su lugar, conviene tener un cliente pequeño, silencioso y respetuoso de la privacidad, por ejemplo un Apple TV, y guardar los medios en un NAS ubicado en otro lugar. Según la UX de cliente que prefieras, quizá necesites una app separada para servir medios, como Plex, o quizá no, como con Infuse.
      Que el servidor esté en la sala, en la oficina o en un homelab no cambia mucho la popularización del self-hosting; de hecho, es probable que la gestión de bibliotecas multimedia locales se vuelva menos popular. La gente lleva décadas haciendo esto, así que si hubiera tenido un efecto de caballo de Troya, ya habría ocurrido.
    • Me gusta este punto de vista, y realmente detesto en lo que se convirtió la Internet centralizada. Hoy ni siquiera la búsqueda básica funciona bien en las plataformas principales.
    • Varias veces intenté armar mi propia configuración de PC/servidor de centro multimedia, pero siempre quedaba muy por debajo de lo que un Fire Stick hace por una décima parte del precio y con un esfuerzo casi nulo.
      Por eso, si aparece un producto plug-and-play en este ámbito, me resultaría muy atractivo.
    • Me encanta la idea de un Roku de Internet.
  • Me enteré de varias herramientas para distribuciones rpm-ostree.
    gnome-randr-rust: https://github.com/maxwellainatchi/gnome-randr-rust
    Hace el papel de xrandr para Gnome/Wayland en distribuciones que no soportan wlr-randr.
    Kernel-fsync: https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/
    gnome-vrr: https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/
    gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate']"
    obs-vkcapture: https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapt...
    system76-scheduler: https://copr.fedorainfracloud.org/coprs/kylegospo/system76-s...

  • Me alegra que esto por fin haya llegado aquí. Cuando lo publiqué hace unas semanas, me sorprendió no haberlo conocido antes y pensé que subiría directo a la portada, pero simplemente quedó enterrado (https://news.ycombinator.com/item?id=38642298).
    Bazzite me sorprendió bastante. Hasta ahora no he visto desventajas de usar Bazzite en lugar de SteamOS, y sí muchas ventajas. Desde hace mucho quería meter la Deck en mi tailnet, pero no era fácil, y quería instalar en el sistema operativo base varios paquetes que no funcionan bien con Flatpak; ahora eso es posible.
    Por ejemplo, uso Remote Play para correr juegos en una desktop potente y verlos en la TV; entro por SSH al host y en un panel de tmux ejecuto htop, y en otro nvtop para la tarjeta AMD. Ahora también funciona bien con AMD. Para mí se siente como la diferencia entre manejar viendo el velocímetro y el tacómetro, y manejar sin nada. En SteamOS algo tan simple es difícil, pero en Bazzite es fácil.

    • También tengo mi Steam Deck en mi tailnet con services.tailscale.enable = true en NixOS.
      Me dio curiosidad Bazzite, así que quizá tenga que comparar NixOS con Bazzite.
  • Se ve genial. No necesito portabilidad y odio el ruido de los ventiladores, pero quería la facilidad de uso de Steam, así que estaba buscando algo como “una PC con especificaciones parecidas a las de Steam Deck”.
    Ahora parece que hay una forma de correr juegos fácilmente en una PC dedicada, común y silenciosa. Eso sí, no creo que haya optimizaciones para combinaciones arbitrarias de GPU/CPU/RAM como las que Valve y AMD hacen para Steam Deck.
    Me resulta interesante que incluya el parche SteamOS BTRFS, así que las tarjetas SD también tienen soporte completo de BTRFS por defecto. Me preguntaba qué ventajas aporta BTRFS en el contexto de los juegos o de Steam Deck, y al ver https://gitlab.com/popsulfr/steamos-btrfs dice que ahorra espacio de almacenamiento mediante compresión transparente y deduplicación, que también puede mejorar los tiempos de carga al reducir los datos que hay que leer, y que facilita volver a un estado anterior con snapshots instantáneos. Parece útil para hacer rollback del sistema o volver a otra versión del mismo juego.

    • Un sistema de archivos copy-on-write es inherentemente mejor para medios flash porque no sobrescribe en el mismo lugar.
      Siempre asigna bloques nuevos y marca los bloques anteriores como libres cuando ya no están referenciados por el sistema de archivos activo o, si está soportado, por algún snapshot.
      A los medios flash les disgusta mucho la sobrescritura en el mismo lugar, porque primero hay que liberar el bloque y luego volver a escribirlo. El firmware moderno de flash de todos modos intenta asignar bloques nuevos, así que parte de eso se compensa, pero en general es una forma de escritura más adecuada para flash.
    • Uso Bazzite en un HTPC gamer que armé, con R5-5600, Radeon 6800XT, un dongle inalámbrico de Xbox y 4 controles de Xbone.
      Sorprendentemente, la mayor parte del trabajo pesado la hacen el kernel y el stack Mesa, y ahí es donde realmente ocurre el trabajo. Fedora trae actualizaciones de kernel y Mesa relativamente rápido, y el cliente de Steam se encarga de las actualizaciones de Proton.
      También hay buena sinergia entre distribuciones centradas en juegos como Bazzite, ChimeraOS y Nobara. Hay mucho intercambio de código y colaboración, y todo está abierto para que cualquiera pueda meter mano.
      Funciona como una Steam Deck grande: el overlay de rendimiento, los controles de Xbox, FSR, etc., funcionan bien desde el inicio. Hay que emparejar cada control, pero solo una vez. Personalmente terminé campañas AAA como God of War, Horizon Zero Dawn y Baldur’s Gate 3 en 4K, y cuando viajo el progreso sigue tal cual en la Deck. Es una experiencia multiequipo completa.
      Hay que ajustar las expectativas. VR y los juegos multijugador que no eligieron EAC o que usan anticheat a nivel de kernel, además de lo hecho por Epic, básicamente no funcionan. Para mí es parecido a una plataforma de consola: se pueden jugar muchos juegos, pero algunos no. En este momento la UX tanto en Windows como en Linux es un desastre, y los horribles launchers de terceros son el peor problema en ambos lados.
      Como aclaración, participo en universal blue, pero no contribuyo directamente a Bazzite.
    • Uso BTRFS con compresión activada porque es una tarjeta SD vieja y lenta. Descomprimir assets consume algo de tiempo de CPU, pero la E/S lenta mejora de forma notable.
      Si guardas los runtimes de Proton/Wine en el mismo disco, la deduplicación también puede ser útil. Cada juego puede requerir runtimes distintos, la versión más reciente no siempre es la mejor, y hasta un entorno Wine sin juegos puede ocupar cientos de MB solo con DLL y dependencias comunes. La deduplicación puede reducir el almacenamiento desperdiciado, aunque con los precios actuales del almacenamiento flash probablemente no sea algo por lo que preocuparse demasiado en la práctica.
      A algunas personas les gustan los checksums, pero sin memoria ECC no los veo demasiado útiles.
    • Fedora de hecho usa BTRFS por defecto, y SteamOS también usa BTRFS por defecto para el sistema; solo home y las tarjetas SD usan ext4.
      La principal ventaja es la compresión y, en especial, el aumento de velocidad de lectura en unidades comprimidas como MicroSD. La deduplicación de BTRFS también resuelve el problema de que los prefixes de Wine con dependencias similares ocupen más espacio del necesario.
    • Todas las optimizaciones de Valve y AMD incluidas en Steam Deck deberían estar incluidas, además de los ajustes y cambios propios que metieron en el upstream de Fedora.
  • Algo relacionado: hoy encontré una redistribución de SteamOS para máquinas comunes. Con la condición de no tener gráficos Nvidia: https://github.com/HoloISO/holoiso

    • Estoy usando https://chimeraos.org/, que actualiza el sistema mediante actualizaciones atómicas.
    • Al leer esa página entendí que los gráficos Nvidia básicamente no funcionan en esa distribución. Pero me pregunto por qué.
      No conozco los detalles de compatibilidad de GPU en Linux, pero ¿por qué no es simplemente cuestión de instalar el paquete de código cerrado de Nvidia?
  • Me pregunto cuál fue la motivación para crear este proyecto y quién lo respalda. Se siente menos como un proyecto de fin de semana y más como algún movimiento de open source estratégico.
    ¿Quizás podría estar relacionado con Nvidia?

    • Soy el creador original de este proyecto. La motivación fue completamente orgánica, no hay patrocinio, nunca recibí donaciones de ningún tipo y cubro todos los costos del proyecto de mi bolsillo.
      Al principio quería algo parecido a SteamOS, pero donde pudiera instalar paquetes y mantenerlo a través de actualizaciones; después de usar Silverblue durante más o menos un año, vi que Fedora podía ofrecer eso. A partir de ahí siguió evolucionando y creciendo.
      Acabo de incorporar HDR al canal de pruebas, y también estoy trabajando en la firma de un kernel personalizado para pasarlo al canal estable sin romper el soporte de arranque seguro.
      Si quieres apoyar ahora mismo, lo mejor es instalarlo y reportar los bugs que encuentres. Mientras más usuarios haya, mejor.
    • Es una variante de Universal Blue (https://universal-blue.org)
  • Me da curiosidad qué tan bien funciona en dispositivos puramente táctiles, por ejemplo, en una tablet.
    Tengo una ThinkPad X1 Tablet de 3.ª generación y todavía estoy buscando una distribución de Linux que sea cómoda de usar simplemente como tablet, sin teclado. Fedora básico tiene bugs bastante molestos con el teclado en pantalla y, si se instala la extensión Phosh, se resuelven en gran parte, pero aparecen otros inconvenientes que vuelven incómodo su uso.
    Además, con el cifrado de disco, como Grub no tiene teclado en pantalla, al arrancar todavía hay que conectar un teclado; me da curiosidad cómo resolvieron este problema aquí.

    • No sé si alguien haría tareas muy sensibles en una tablet, pero usar cifrado de la carpeta home en lugar de cifrado de disco completo podría resolver el problema de la entrada táctil.
  • Miren, Bazzite corriendo en una Mac Pro tipo bote de basura: https://youtu.be/te1AEj_RA64

  • Cuando armé una PC gamer hace unos meses, me pareció una opción interesante y la probé.
    Me encontré con varios problemas y, tras fallar unas 6 o 7 veces, me rendí; ahora me quedé con Debian (https://blog.c10l.cc/09122023-debian-gaming).
    Aun así, estaría dispuesto a volver a probar Bazzite para ver si ya corrigieron varios de los problemas que tuve entonces. Pero había una limitación crítica para mí: no admitía arranque dual/múltiple. ¿Alguien sabe si eso ya cambió?