1 pontos por GN⁺ 2024-01-01 | 1 comentários | Compartilhar no WhatsApp
  • Bazzite é uma imagem personalizada baseada no Fedora Atomic, com o objetivo de oferecer um ambiente de jogos em Linux para dispositivos portáteis como o Steam Deck, além de desktops e HTPCs
  • O projeto começou para resolver os pacotes desatualizados e a ausência de um gerenciador de pacotes funcional no SteamOS; embora seja baseado em imagem, permite instalar pacotes Fedora, que são preservados após atualizações
  • Oferece várias variantes, como bazzite, bazzite-deck, variantes GNOME e imagens com driver proprietário da NVIDIA, incluindo suporte a Game mode, HDR, Mesa, portes de pacotes do SteamOS, rollback e Secure Boot
  • A configuração padrão inclui Distrobox, Waydroid, vkBasalt, MangoHud, OBS VkCapture, xone, DisplayLink, ROCM OpenCL/HIP e suporte a diversos drivers de entrada, RGB e tablets
  • Fornece ISO de instalação e comandos de rebase; as imagens têm suporte a verificação de assinatura com cosign, e usuários podem criar suas próprias variantes do Bazzite usando GitHub Actions e chaves Cosign

Objetivo e base do Bazzite

  • Bazzite é uma imagem personalizada baseada no Fedora Atomic, construída com a abordagem cloud native do Universal Blue
  • O objetivo é expandir o ambiente de jogos em Linux para desktops, HTPCs de sala de estar e dispositivos portáteis como o Steam Deck
  • O Bazzite é construído a partir de ublue-os/main e usa tecnologias do Fedora para oferecer suporte ampliado a hardware e drivers integrados
  • Foi iniciado para resolver os pacotes desatualizados e a falta de um gerenciador de pacotes funcional que eram problemas no SteamOS
  • Embora seja baseado em imagem, permite instalar pacotes Fedora pela linha de comando, e os pacotes instalados são preservados após atualizações
  • É atualizado várias vezes por semana com pacotes upstream do Fedora e oferece suporte ao kernel Linux mais recente, SELinux ativado por padrão, Secure Boot e criptografia de disco

Recursos comuns de jogos e hardware

  • O Bazzite usa o bazzite kernel para oferecer HDR, suporte ampliado a hardware e várias correções
  • HDR pode ser usado no Game mode
  • Builds que não são NVIDIA podem usar NVK
  • Oferece suporte a codecs com aceleração por hardware para decodificação H264
  • Suporta o runtime ROCM OpenCL/HIP da AMD
  • Suporta o driver xone para controles Xbox e DisplayLink
  • Inclui o tema KDE do SteamOS da Valve
  • vkBasalt, MangoHud e OBS VkCapture vêm instalados por padrão
  • Suporta Winesync/Fastsync/NTsync
  • Distrobox vem pré-instalado
  • Simplifica a instalação do Davinci Resolve baseado no davincibox por meio de ujust install-resolve
  • Oferece um serviço automático duperemove para reduzir o espaço em disco usado pelo conteúdo de wine prefixes
  • Suporta HDMI CEC por meio da libCEC
  • Usa Google BBR como controle de congestionamento TCP padrão
  • Input Remapper vem pré-instalado e ativado; nas variantes Deck, fica disponível, mas desativado por padrão
  • Bazzite Portal instala aplicativos e ajustes, além de fornecer botões para atualizar, fazer rebase e reinicializar a imagem do sistema
  • Waydroid vem pré-instalado para permitir a execução de apps Android
  • Para gerenciar Flatpak e AppImage, usa Flatseal, Warehouse e Gear Lever
  • Inclui os drivers i2c-piix4 e i2c-nct6775 do OpenRGB para controlar RGB em algumas placas-mãe
  • O driver OpenRazer é integrado e pode ser usado pelo Bazzite Portal ou com ujust install-openrazer
  • As regras udev do OpenTabletDriver são integradas, e o conjunto completo de software pode ser instalado pelo Bazzite Portal ou com ujust install-opentabletdriver
  • Oferece suporte nativo a teclados Wooting
  • Suporta GPUs AMD Southern Islands HD 7000 e Sea Islands HD 8000 com o driver amdgpu
  • Com o Webapp Manager, é possível transformar sites de vários navegadores, incluindo Firefox, em aplicativos

Variantes para desktop, Steam Deck e HTPC

  • A variante comum para desktop é bazzite, adequada para computadores desktop
  • As atualizações automáticas do OS, Flatpak e outros itens são gerenciadas por uupd e topgrade
  • A ISO pode ser obtida no site de download, e há um guia de instalação
  • É possível fazer rebase a partir de um Fedora Atomic existente para uma imagem com drivers de GPU open source
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:stable
  • Dispositivos que precisam do driver proprietário da NVIDIA fazem rebase para a imagem bazzite-nvidia
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable
  • Usuários com Secure Boot ativado devem seguir a documentação de Secure Boot antes do rebase
  • O NVK, opção open source do Mesa para NVIDIA, tende a apresentar erros no momento da redação; problemas relacionados ao NVK devem ser relatados ao Mesa, não ao Ublue/Bazzite
  • bazzite-deck para Steam Deck e HTPC

    • bazzite-deck foi projetado como alternativa ao SteamOS no Steam Deck e para uma experiência estilo console em HTPCs
    • Assim como o SteamOS, inicializa diretamente no Game mode
    • O duperemove automático reduz bastante o tamanho de compatdata
    • O Mesa mais recente cria um shader cache menor e não exige shader cache para evitar stutter
    • Consegue inicializar mesmo quando a unidade está cheia
    • Suporta todos os idiomas compatíveis com o Fedora upstream
    • Usa Wayland no desktop e oferece suporte ao Steam input
    • Inclui versões portadas da maioria dos pacotes do SteamOS, como drivers, atualizador de firmware e controlador de ventoinha do repositório evlaV
    • Usa uma versão corrigida do Mesa para controle correto de framerate no Gamescope
    • Inclui patches do SteamOS BTRFS, oferecendo suporte padrão a BTRFS em cartões SD
    • Fornece um porte do SDGyroDSU ativado por padrão
    • Na instalação, permite instalar opcionalmente Decky Loader, EmuDeck, RetroDECK, ProtonUp-Qt e outros
    • Oferece um sistema de atualização personalizado para atualizar o OS, Flatpak e outros itens pela UI do Game mode
    • Mantém a instalação do GRUB do Fedora para oferecer suporte a dual boot com Windows
    • Com o recurso de rollback do rpm-ostree, é possível voltar para uma versão anterior do Bazzite e selecionar uma imagem anterior na inicialização
    • Steam e Lutris vêm pré-instalados na imagem como layered packages
    • Usa, por padrão, 4 GB de ZRAM com o algoritmo de compressão LZ4
    • Inclui os escalonadores de CPU LAVD e BORE para jogabilidade suave e responsiva
    • Usa o escalonador de I/O Kyber para evitar I/O starvation durante a instalação de jogos ou duperemove em segundo plano
    • Aplica os parâmetros de kernel do SteamOS
    • Inclui perfis de exibição com calibração de cores para telas foscas e brilhantes do Steam Deck
    • Recursos para power users, como undervolting de baixo risco no Steam Deck, overclock de tela e aplicação de até o dobro de VRAM em mods de 32 GB de RAM, são fornecidos desativados por padrão
    • Os serviços de atualização de BIOS e firmware específicos do hardware do Steam Deck podem ser desativados pelo terminal com ujust disable-bios-updates e ujust disable-firmware-updates
    • Esses serviços são desativados automaticamente em hardware que não seja Deck e em Decks com tela DeckHD ou mod de 32 GB de RAM
    • A configuração do Steam Gaming Mode em dispositivos portáteis alternativos deve consultar a Handheld Wiki

Variantes GNOME e recursos upstream

  • Builds com o ambiente de desktop GNOME são oferecidas tanto para desktop quanto para variantes Deck
  • As builds GNOME ativam taxa de atualização variável e fractional scaling no Wayland
  • Um menu personalizado na barra superior oferece retorno ao Game mode, inicialização do Steam e execução de vários utilitários
  • GSConnect vem pré-instalado e pronto para uso
  • Inclui a extensão Hanabi, oferecendo funcionalidade semelhante ao Wallpaper Engine do KDE
  • Várias extensões GNOME opcionais vêm pré-instaladas, e também há modificações na experiência do usuário
  • Os temas GNOME para Firefox e Thunderbird são atualizados automaticamente quando instalados
  • O comando de rebase para a variante GNOME desktop é o seguinte
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable
  • A imagem GNOME com driver proprietário da NVIDIA faz rebase com o seguinte comando
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvidia:stable
  • A versão GNOME para Steam Deck/HTPC usa o seguinte comando
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable
  • Recursos trazidos do Universal Blue e do Fedora

    • Recursos baseados no Universal Blue
    • Imagens NVIDIA vêm com o driver proprietário da NVIDIA pré-instalado
    • Flathub vem ativado por padrão
    • Oferece o comando de conveniência ujust
    • Inclui codecs multimídia por padrão
    • É possível fazer rollback do Bazzite para qualquer build dos últimos 90 dias
    • Recursos baseados no Fedora Linux Kinoite e Silverblue
    • Oferece uma base estável
    • Os pacotes do sistema permanecem relativamente atualizados
    • Pacotes Fedora podem ser adicionados à imagem como layers e são preservados após atualizações
    • SELinux vem pré-instalado e configurado
    • É possível fazer rebase para outra imagem Fedora Atomic sem perder dados de usuário
    • CUPS vem pré-instalado para suporte a impressão

Verificação, Secure Boot e builds próprias

  • As imagens do Bazzite são assinadas com cosign da sigstore
  • É possível baixar a chave cosign.pub do repositório e verificar a assinatura com o seguinte comando
cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
  • Secure Boot é suportado com uma chave personalizada, e a chave pública está em secure_boot.der na raiz do repositório
  • Para registrar a chave de Secure Boot antes da instalação ou do rebase, use os seguintes comandos
sudo mokutil --timeout -1
sudo mokutil --import secure_boot.der
  • Se já estiver usando uma imagem Universal Blue, é possível executar ujust enroll-secure-boot-key em vez disso
  • Se uma senha for solicitada, use universalblue
  • O Steam Deck não vem com Secure Boot ativado nem com chaves padrão registradas, portanto não o ative a menos que entenda claramente o que está fazendo
  • O Bazzite é construído inteiramente com GitHub Actions
  • Uma versão personalizada própria pode ser criada fazendo fork do repositório, adicionando uma chave de assinatura privada e ativando o GitHub Actions no fork
  • Executar o workflow Build Bazzite cria imagens personalizadas para todas as variantes do Bazzite
  • Para criar apenas as variantes necessárias, comente as variantes indesejadas na lista strategy.matrix do job push-ghcr em .github/workflows/build.yml
  • Para sincronizar o fork com o upstream, é possível usar a configuração do pull app
  • Procedimento para assinar sua própria imagem

    • Primeiro é preciso verificar como o GitHub gerencia secrets
    • Gere um novo par de chaves com Cosign
    cosign generate-key-pair
    
    • Substitua o cosign.pub do repositório público pela chave pública gerada
    • Adicione o texto da chave privada em cosign.key ao Repository Secret do repositório forkado
    • O nome do secret deve ser SIGNING_SECRET

Documentação e comunidade

1 comentários

 
GN⁺ 2024-01-01
Opiniões do Hacker News
  • Bom. Acho que um servidor de mídia na sala de estar será o cavalo de Troia que vai reviver a auto-hospedagem e, no fim, tornar a internet novamente mais orientada a P2P.
    Quando a maioria das pessoas tiver conexões simétricas e sistemas Linux potentes, o que restará impedindo que usem a internet como originalmente concebida — como consumidores e, ao mesmo tempo, publicadores — será apenas um problema de software.

    • Usei servidores de mídia na sala por vários anos e, se fosse recomendar algo, seria não colocar um servidor de mídia na sala de estar.
      Em vez disso, é melhor ter um cliente pequeno, silencioso e que respeite a privacidade, como uma Apple TV, e deixar a mídia em um NAS em outro lugar. Dependendo da UX do cliente que você preferir, pode ser necessário um app separado para servir mídia, como o Plex, ou talvez não, como no Infuse.
      Para a popularização da auto-hospedagem, não faz muita diferença se o servidor fica na sala, no escritório ou em um homelab; na verdade, é mais provável que o gerenciamento de bibliotecas de mídia locais fique menos popular. As pessoas fazem isso há décadas, então, se houvesse um efeito de cavalo de Troia, ele já teria acontecido.
    • Gosto desse ponto de vista, e detesto muito o que virou a internet centralizada. Hoje em dia, nem a busca básica funciona direito nas grandes plataformas.
    • Tentei várias vezes montar minha própria configuração de PC/servidor de media center, mas ela sempre ficou muito aquém do que um Fire Stick faz por um décimo do preço e com esforço quase zero.
      Por isso, um produto plug-and-play nessa área seria muito atraente para mim.
    • Gosto muito da ideia de um Roku da internet.
  • Conheci várias ferramentas para distribuições rpm-ostree.
    gnome-randr-rust: https://github.com/maxwellainatchi/gnome-randr-rust
    Faz o papel do xrandr para Gnome/Wayland em distribuições que não têm suporte a 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...

  • Fico feliz que isso finalmente tenha aparecido aqui. Quando postei algumas semanas atrás, fiquei surpreso por não ter conhecido antes e achei que iria direto para o topo, mas acabou simplesmente enterrado (https://news.ycombinator.com/item?id=38642298).
    Fiquei bastante impressionado com o Bazzite. Até agora, ainda não vi desvantagens em usar Bazzite em vez do SteamOS, e vi muitas vantagens. Há muito tempo eu queria colocar o Deck na minha tailnet, mas não era fácil; também queria instalar no sistema operacional base vários pacotes que não funcionavam bem via Flatpak, e agora isso é possível.
    Por exemplo, uso o Remote Play para rodar jogos em um desktop potente e assistir na TV; entro no host por SSH e, em um painel do tmux, rodo htop, enquanto em outro rodo nvtop para a placa AMD. Agora funciona bem também com AMD. Para mim, parece a diferença entre dirigir olhando para o velocímetro e o tacômetro e dirigir sem nada disso. No SteamOS, algo tão simples é difícil, mas no Bazzite é fácil.

    • Também coloquei meu Steam Deck na tailnet com NixOS usando services.tailscale.enable = true.
      Fiquei curioso sobre o Bazzite, então talvez eu precise comparar NixOS e Bazzite.
  • Parece interessante. Eu não preciso de portabilidade e detesto barulho de ventoinha, mas queria a facilidade de uso do Steam, então estava procurando algo como “um PC com especificações parecidas com as do Steam Deck”
    Agora parece que existe um caminho para rodar jogos facilmente em um PC dedicado comum e silencioso. Dito isso, não deve haver otimizações para combinações arbitrárias de GPU/CPU/RAM como a Valve e a AMD fazem no Steam Deck
    É interessante que ele inclui o patch SteamOS BTRFS, então até cartões SD têm suporte completo a BTRFS por padrão. Eu me perguntava quais seriam as vantagens do BTRFS em jogos ou no contexto do Steam Deck; olhando https://gitlab.com/popsulfr/steamos-btrfs, ele diz que compressão transparente e deduplicação economizam espaço de armazenamento, que os tempos de carregamento também podem melhorar porque há menos dados para ler, e que snapshots instantâneos facilitam voltar a um estado anterior. Parece útil para rollback do sistema ou para voltar a outra versão do mesmo jogo

    • Um sistema de arquivos copy-on-write é inerentemente melhor para mídia flash porque não faz sobrescrita in-place
      Ele sempre aloca novos blocos e marca os blocos antigos como livres quando eles deixam de ser referenciados pelo sistema de arquivos ativo ou, se houver suporte, por snapshots
      Mídias flash detestam sobrescrita in-place, porque o bloco precisa ser apagado antes de ser escrito de novo. Firmwares flash modernos também tentam alocar novos blocos de qualquer forma, então parte disso é compensada, mas, no geral, é um método de escrita melhor para flash
    • Uso o Bazzite em um HTPC gamer que montei, com R5-5600, Radeon 6800XT, dongle sem fio do Xbox e 4 controles Xbone
      Surpreendentemente, a maior parte do trabalho pesado é feita pelo kernel e pela stack Mesa; é ali que o trabalho real acontece. O Fedora traz atualizações de kernel e Mesa relativamente rápido, e o cliente Steam cuida das atualizações do Proton
      Também há uma boa sinergia entre distribuições focadas em jogos, como Bazzite, ChimeraOS e Nobara. Há bastante compartilhamento de código e colaboração acontecendo, e tudo é aberto, então qualquer pessoa pode mexer
      Ele se comporta como um Steam Deck grande, então overlay de desempenho, controles Xbox, FSR etc. funcionam bem de cara. É preciso parear cada controle, mas só uma vez. Pessoalmente, completei campanhas AAA como God of War, Horizon Zero Dawn e Baldur’s Gate 3 em 4K e, quando viajo, meu progresso está exatamente lá no Deck. É uma experiência multidevice completa
      É preciso alinhar as expectativas. VR, jogos multiplayer que não optaram pelo EAC ou que usam anticheat em nível de kernel, e coisas feitas pela Epic basicamente não funcionam. Para mim é parecido com uma plataforma de console: dá para jogar muita coisa, mas algumas não. No estágio atual, tanto Windows quanto Linux têm uma UX péssima, e lançadores horríveis de terceiros são o pior problema nos dois lados
      Como observação, tenho envolvimento com o universal blue, mas não contribuo diretamente para o Bazzite
    • Uso BTRFS com compressão ativada porque é um cartão SD antigo e lento. Há um pequeno custo de CPU para descompactar assets, mas a E/S lenta fica visivelmente mais rápida
      Se você armazena runtimes do Proton/Wine no mesmo disco, a deduplicação também pode ser útil. Cada jogo pode precisar de runtimes diferentes, a versão mais recente nem sempre é a melhor, e até um ambiente Wine sem nenhum jogo pode ocupar centenas de MB só com DLLs e dependências comuns. A deduplicação pode reduzir espaço desperdiçado, mas, considerando o preço do armazenamento flash hoje em dia, provavelmente não é algo que faça tanta diferença na prática
      Há quem goste de checksums, mas, sem memória ECC, não acho que sejam muito úteis
    • O Fedora, na verdade, usa BTRFS por padrão, e o SteamOS também usa BTRFS por padrão para o sistema; só home e cartão SD ficam em ext4
      A principal vantagem é a compressão e, especialmente em unidades comprimidas como MicroSD, o aumento na velocidade de leitura. A deduplicação do BTRFS também resolve o problema de prefixes Wine com dependências semelhantes ocuparem mais espaço do que o necessário
    • Todas as otimizações da Valve e da AMD que entram no Steam Deck devem estar incluídas, junto com ajustes e mudanças próprias adicionados ao upstream do Fedora
  • Um pouco relacionado: hoje descobri uma redistribuição do SteamOS para máquinas comuns. Com a condição de não ter gráficos Nvidia: https://github.com/HoloISO/holoiso

    • Estou usando https://chimeraos.org/, que atualiza o sistema no estilo de atualizações atômicas
    • Lendo essa página, entendi que gráficos Nvidia basicamente não funcionam nessa distribuição. Mas fico curioso para saber por quê
      Não conheço os detalhes de compatibilidade de GPU no Linux, mas por que não é só uma questão de instalar o pacote proprietário da Nvidia?
  • Fico curioso para saber qual foi a motivação para criar este projeto e quem está por trás dele. Parece mais algum movimento de open source estratégico do que um projeto de hobby de fim de semana
    Será que pode ter algo a ver com a Nvidia?

    • Sou o criador original deste projeto. A motivação foi totalmente orgânica; não há patrocínio, nunca recebemos nenhum tipo de doação, e todos os custos do projeto saem do meu bolso
      No começo, eu queria algo parecido com o SteamOS, mas em que eu pudesse instalar pacotes e manter o sistema passando por atualizações; depois de usar o Silverblue por cerca de um ano, percebi que o Fedora poderia oferecer isso. A partir daí ele continuou evoluindo e crescendo
      Acabei de colocar HDR no canal de testes e também estou trabalhando em assinatura de kernel customizado para levá-lo ao canal estável sem quebrar o suporte a Secure Boot
      Se você quiser ajudar agora, o melhor é instalar e relatar os bugs que encontrar. Quanto mais usuários, melhor
    • É uma variação do Universal Blue (https://universal-blue.org)
  • Fico curioso para saber quão bem funciona em dispositivos puramente touch, como tablets
    Tenho um ThinkPad X1 Tablet de 3ª geração e ainda estou procurando uma distribuição Linux que seja boa de usar apenas como tablet, sem teclado. O Fedora padrão tem alguns bugs bem irritantes no teclado na tela; instalar a extensão Phosh resolve a maior parte, mas traz outros incômodos que tornam o uso trabalhoso
    Além disso, com criptografia de disco, ainda é preciso conectar um teclado na inicialização porque o Grub não tem teclado na tela, então fico curioso para saber como esse problema foi resolvido aqui

    • Talvez você não vá fazer trabalhos muito sensíveis em um tablet, mas usar criptografia da pasta home em vez de criptografia de disco completo pode resolver o problema de entrada por toque
  • Vejam, o Bazzite rodando em um Mac Pro “lixeira”: https://youtu.be/te1AEj_RA64

  • Alguns meses atrás, quando montei um PC gamer, parecia uma opção interessante, então experimentei
    Encontrei vários problemas e, depois de falhar umas 6 ou 7 vezes, desisti; agora me estabeleci no Debian (https://blog.c10l.cc/09122023-debian-gaming)
    Mesmo assim, tenho vontade de tentar o Bazzite de novo para ver se vários dos problemas que enfrentei na época foram corrigidos. Mas havia uma limitação fatal para mim: ele não oferecia suporte a dual/multi-boot. Alguém sabe se isso mudou?